Criando Arquivos .gitignore
A configuração de um repositório de código para seu projeto para boa convivência com seu time, passa pela criação de um bom arquivo .gitignore
. Nesse arquivo configuramos uma lista de exclusões, arquivos que não serão incluidos nem rastreados pelo git dentro do repositório. Mas qual a finalidade, o repositório não é justamente o espaço onde temos uma cópia completa do código fonte para que o projeto possa ser acessado e recompilado em qualquer ambiente?
Tanto o sistema operacional quanto as ferramentas de desenvolvimento, compiladores, etc, produzem uma série de arquivos temporários ou de configurações que são específicas para nosso usuário ou ambiente. Alguns exemplos disso:
- .DS_Store: é uma pasta oculta que o macOS cria com metadados do Finder. É completamente descartável.
- ._: arquivos de thumbnails no macOS, também para uso específico no Finder e totalmente descartável.
- Desktop.ini: metadados do Windows Explorer, criado como arquivo oculto a medida que você vai ajustando os parâmetros de visualização de uma pasta.
- Thumbs.db: gerado como arquivo oculto pelo Windows para fazer cache das thumbnails de imagens que existam na pasta.
Além disso, algumas IDE’s como o Visual Studio e o Android Studio, geram os arquivos intermediários de compilação e os binários dos projetos em subpastas do próprio projeto. Esses arquivos são re-criados a todo momento no processo de desenvolvimento e, incluí-los no repositório, só aumentaria seu tamanho desnecessariamente e geraria mais conflitos ao fazer merges. Por esses motivos a configuração adequada de um .gitignore
se faz importante!
Mas como determinar quais as exclusões necessárias para meu projeto? Entra o gitignore.io
, um projeto open source extremamente simples que organiza as exclusões por tags de sistemas operacionais, IDE’s ou linguagens de programação, e o melhor, sem gerar duplicidades no resultado final.
O funcionamento é extremamente simples, basta digitar as tags dos sistemas operacionais, linguagens ou ambientes de desenvolvimento que você. Por exemplo, quando vou criar o repositório para um novo projeto do Xamarin uso as seguintes tags: Windows
, macOS
, Csharp
, VisualStudio
, XamarinStudio
, xcode
, Android
, AndroidStudio
. O racional é o seguinte: o repositório será usado por programadores nos 2 sistemas operacionais, então eu não quero que sejam incluídos arquivos específicos dessas plataformas. O projeto sera feito com C#, usando o Visual Studio para Windows ou macOS (antes Xamarin Studio). Também incluo o Xcode
, Android
e AndroidStudio
pois como o projeto terá Android e iOS isso exclui alguns arquivos específicos dessas plataformas.
O mais legal é que o gitignore.io
gera usa URL’s amigáveis, então você pode compartilhar facilmente com o time ou até mesmo passar batido pelo site chamando direto a url. Veja o endereço com as tags que defini anteriormente:
https://www.gitignore.io/api/xcode,macos,csharp,android,windows,visualstudio,androidstudio,xamarinstudio
Basta colocar as tags que você deseja após o api/
separadas por vírgula.
Bonus - dotnet-giio
O dotnet giio
é uma ferramenta global do .NET Core que facilita a criação de arquivos .gitignore
direto pelo terminal ou linha de comando. Ele tem comandos para consultar as tags e gerar o arquivo. Sua instalação é bastante simples:
dotnet tool install --global dotnet-giio
Serei repetitivo pois essas informações estão na documentação do utilitário, mas como é tão simples reproduzo aqui traduzidas! Para gerar um novo gitignore usando as tags para Windows e Visual Studio:
dotnet giio generate visualstudio windows
Para consultar as tags disponíveis no serviço, use o comando list:
dotnet giio list --query visualstudio
Passe as palavras chave para o parâmetro query para filtrar o resultado. Nesse caso ira retornar VisualStudio
e VisualStudioCode
. Sem o parâmetro query retorna todas as tags disponíveis.
Por fim, é possível dar preview no arquivo que seria gerado com um conjunto de tags:
donet giio preview visualstudio windows macos
Conclusão
Embora a criação de repositórios não seja uma tarefa tão frequente, é certamente recorrente e ajustar esses arquivos de configuração sempre foi uma dor de cabeça. Depois que eu comecei a usar esse serviço nunca mais tive problemas.