Otimize seu repositório GIT utilizando o arquivo .gitattributes

João Roberto da Paixão
Desenvolvendo com Paixão
3 min readJun 23, 2019
Octocat — Faça o seu Octocat em https://myoctocat.com

O .gitattributes é um arquivo de texto simples que fornece atributos específicos para arquivos e diretórios dentro do seu repositório GIT. Com ele você pode configurar várias coisas, como por exemplo: resolver problemas visuais do diff em sua solicitação de merge, selecionar uma ação automática quando houver conflitos, converter finais de linhas (LF ou CRLF) em arquivos baseados em texto e etc…

Neste artigo vou abordar um recurso em específico do .gitattributes que é o export-ignore.

Para mais detalhes sobre o arquivo .gitattributes recomendo a leitura da documentação oficial.

Export-ignore: uma breve explicação

Quando trabalhamos em um repositório GIT, quase sempre fazemos commit de alguns arquivos que estão relacionados ao projeto, mas que não possuem serventia nenhuma quando o seu projeto vai para produção.

Todos os arquivos e diretórios que forem declarados com export-ignore no arquivo .gitattributes serão omitidos quando o repositório for baixado. Dessa forma, você consegue otimizar o tamanho final do repositório e de quebra, disponibilizar somente os arquivos que realmente importam.

Por exemplo, em um repositório de um pacote PHP, além do código fonte, podemos ter arquivos de documentação, arquivos de mídia, prints de benchmark, testes automatizados, readme, changelog, licença de uso e etc…Esses arquivos não possuem serventia nenhuma quando esse pacote é requerido em um projeto, ou seja, o Composer irá baixar tudo que está no repositório! Mas, o que realmente será utilizado é o arquivo composer.json e o código fonte do projeto, o resto dos arquivos na maioria das vezes, só servem para ocupar espaço em disco.

Para exemplificar isso, veja logo abaixo o trecho de código retirado do arquivo .gitattributes do Laravel Framework versão 5.8:

/.github export-ignore
/bin export-ignore
/tests export-ignore
.editorconfig export-ignore
.gitattributes export-ignore
.gitignore export-ignore
.styleci.yml export-ignore
.travis.yml export-ignore
CHANGELOG-* export-ignore
CODE_OF_CONDUCT.md export-ignore
CONTRIBUTING.md export-ignore
phpunit.xml.dist export-ignore

Export-ignore: O que me motivou a falar sobre ele?

Hoje eu resolvi instalar o Dracula Theme no ConEmu do meu computador, para dar aquela aparência mais agradável no terminal.

Desde o inicio de 2019, quando fiz o upgrade do meu computador. Passei a utilizar o Windows 10 juntamente com o WSL para montar minha stack de desenvolvimento.

Após fazer o download do projeto (.zip do repositório) e descompactá-lo, notei a presença de um diretório .github:

Esse diretório é utilizado para armazenar alguns templates para abertura de ISSUEs e PRs no próprio Github do repositório, ou seja, esse diretório não tem nenhuma utilidade quando é feito o download do projeto. Esse seria um ótimo exemplo para utilização do arquivo .gitattributes com o export-ignore.

Como eu sou um cara que adora colaborar com projetos open-source, não fiquei parado, fiz o fork desse repositório e enviei um Pull Request adicionando o .gitattributes. veja no link abaixo:

A ideia agora é que ao realizar o download, esse diretório .github seja ignorado, ficando assim:

Notem que o arquivo .zip passou de 6.041 bytes para 5.817 bytes.

Espero que eu tenha conseguido te explicar o que é o export-ignore do arquivo .gitattributes e como você pode utiliza-lo para otimizar seus repositórios GIT.

E aí, o que você achou? Comente!

Obrigado por ler! Se você gostou do artigo, dê um clap 👏.

Ainda não me conhecia? Então chegou a hora: Olá, meu nome é João Roberto, muito prazer!

--

--

João Roberto da Paixão
Desenvolvendo com Paixão

Eterno aprendiz que compartilha aquilo que aprende. Apaixonado por tecnologia, desenvolvimento pessoal e investimentos. Pai de família, um cara tranquilo =) !