View on GitHub

manual-da-engenharia-para-codar

Este é o manual para compromissos de "código com" a engenharia.

Introdução ao Git LFS e VFS for Git

Git LFS e VFS for Git são soluções para usar o Git com arquivos binários (grandes) e árvores de código-fonte grandes.

Git LFS

O Git é muito bom em rastrear alterações em arquivos baseados em texto, como código, mas não é tão eficaz em rastrear arquivos binários. Por exemplo, se você armazenar um arquivo de imagem do Photoshop (PSD) em um repositório, a cada alteração, o arquivo completo é armazenado novamente no histórico. Isso pode tornar o histórico do repositório Git muito grande, o que torna o clone do repositório cada vez mais demorado.

Uma solução para trabalhar com arquivos binários é usar o Git LFS (ou Git Large File System). Esta é uma extensão para o Git e deve ser instalada separadamente, e só pode ser usada com uma plataforma de repositório que suporta LFS. GitHub.com e Azure DevOps, por exemplo, são plataformas que têm suporte para LFS.

A maneira como funciona, em resumo, é que um arquivo de espaço reservado é armazenado no repositório com informações para o sistema LFS. Parece algo assim:

version https://git-lfs.github.com/spec/v1
oid a747cfbbef63fc0a3f5ffca332ae486ee7bf77c1d1b9b2de02e261ef97d085fe
size 4923023

O arquivo real é armazenado em um armazenamento separado. Dessa forma, o Git rastreará as alterações neste arquivo de espaço reservado, não no arquivo grande. A combinação do uso do Git e do Git LFS ocultará isso do desenvolvedor. Você continuará a trabalhar com o repositório e os arquivos como antes.

Ao trabalhar com esses arquivos grandes por conta própria, você ainda verá o histórico do Git crescer em sua própria máquina, pois o Git ainda começará a rastrear esses arquivos grandes localmente, mas quando você clonar o repositório, o histórico será realmente pequeno. Portanto, é benéfico para outras pessoas que não trabalham diretamente nos arquivos grandes.

Prós do Git LFS

Contras do Git LFS

Instalação e uso do Git LFS

Acesse https://git-lfs.github.com e faça o download e instale o programa a partir de lá.

Para cada repositório que você deseja usar o LFS, você precisa seguir estas etapas:

git lfs install
git lfs track "*.psd"

Existem maneiras mais refinadas de indicar arquivos em uma pasta e mais. Consulte a Documentação do Git LFS para mais informações.

Com esses comandos, um arquivo .gitattribute é criado, que contém essas configurações e deve fazer parte do repositório.

A partir daqui, você usa os comandos Git padrão para trabalhar no repositório. O resto será tratado pelo Git e Git LFS.

Comandos Comuns do LFS

Instalar o Git LFS

git lfs install       # windows
sudo apt-get git-lfs  # linux

Veja as instruções de instalação do Git LFS para a instalação em outros sistemas.

Rastrear arquivos .mp4 com o Git LFS

git lfs track '*.mp4'

Atualizar o arquivo .gitattributes listando os arquivos e padrões a serem rastreados

*.mp4 filter=lfs diff=lfs merge=lfs -text
docs/images/* filter=lfs diff=lfs merge=lfs -text

Listar todos os padrões rastreados

git lfs track

Listar todos os arquivos rastreados

git lfs ls-files

Baixar arquivos para o seu diretório de trabalho

git lfs pull
git lfs pull --include="caminho/para/arquivo"

VFS for Git

Imagine um repositório grande contendo vários projetos, por exemplo, um por recurso. Como desenvolvedor, você pode estar trabalhando apenas em alguns recursos e, portanto, não deseja baixar todos os projetos do repositório. Por padrão, com o Git, no entanto, clonar o repositório significa que você baixará todos os arquivos/projetos.

O VFS for Git (ou Virtual File System for Git) resolve esse problema, pois baixará apenas o que você precisa para sua máquina local, mas se você olhar no sistema de arquivos, por exemplo, com o Windows Explorer, ele mostrará todas as pastas e arquivos, incluindo os tamanhos de arquivo corretos.

A plataforma Git deve oferecer suporte ao GVFS para que isso funcione. GitHub.com e Azure DevOps oferecem suporte a isso nativamente.

Instalação e uso do VFS for Git

A Microsoft criou o VFS for Git e o tornou de código aberto. Ele pode ser encontrado em

https://github.com/microsoft/VFSForGit. Está disponível apenas para Windows.

Os instaladores necessários podem ser encontrados em https://github.com/Microsoft/VFSForGit/releases.

Na página de lançamentos, você encontrará dois downloads importantes:

Baixe esses arquivos e instale-os em sua máquina.

Para usar o VFS for Git em um repositório, um arquivo .gitattributes precisa ser adicionado ao repositório com esta linha:

* -text

Para clonar um repositório em sua máquina usando o VFS for Git, use gvfs em vez de git, assim:

gvfs clone [URL] [dir]

Depois disso, você terá uma pasta que contém uma pasta src que contém o conteúdo do repositório. Isso é feito por uma prática de colocar todas as saídas dos sistemas de construção fora desta árvore. Isso facilita o gerenciamento de arquivos .gitignore e mantém o Git eficiente com muitos arquivos.

Para trabalhar com o repositório, basta usar os comandos Git como antes.

Para remover um repositório VFS for Git de sua máquina, certifique-se de que o processo VFS esteja parado e execute este comando na pasta principal:

gvfs unmount

Isso interromperá o processo e o desregistrará; depois disso, você pode remover com segurança a pasta.

Referências