Como Git LFS funciona: Visão geral do armazenamento de arquivos grandes de Git

Equipes de desenvolvimento ao redor do mundo usam Git para gerenciar código fonte. E muitos usam Git LFS – Git Large File Storage – para gerenciar e armazenar arquivos grandes. Aqui, nós decompomos o que Git LFS faz e quando usá-lo.

Can Git Handle Large Files?

Git não pode lidar com arquivos grandes por si só. É por isso que muitas equipes de Git adicionam Git LFS para lidar com arquivos grandes em Git.

O que é Git LFS (Git Large File Storage)?

Git LFS é uma extensão Git usada para gerenciar arquivos grandes e arquivos binários em um repositório Git separado.

A maioria dos projetos hoje tem tanto código quanto ativos binários. E armazenar grandes arquivos binários em repositórios Git pode ser um gargalo para os usuários de Git.

Por isso alguns usuários de Git adicionam Git Large File Storage (LFS).

Como Git LFS funciona?

Git LFS usa ponteiros ao invés dos arquivos reais ou objetos binários grandes (blobs).

Então, ao invés de escrever grandes arquivos/blobs em um repositório Git, você escreve um arquivo ponteiro. E os próprios arquivos/blobs são escritos em um servidor separado. Você pode até usar múltiplos servidores no Git LFS.

O início é bastante simples. Você baixa a extensão e configura seus tipos de arquivo.

Usar o Git LFS torna possível a versão de arquivos grandes (e gerenciar blobs) enquanto libera espaço nos repositórios do Git. E Git LFS é muitas vezes uma correção para empurrar arquivos grandes para GitHub.

Git Problemas além do LFS

Git tem problemas além do Git LFS. E a segurança é um grande problema. Falta segurança ao Git nativo, e as opções adicionais para proteger o Git não são grandes. Descubra o que você deve fazer sobre a segurança do Git em nosso white paper – Como Bloquear Git.

Lock Down Git

Devo usar Git LFS?

Você deve usar Git LFS se você tiver arquivos grandes ou arquivos binários para armazenar em repositórios Git.

Isso é porque Git é descentralizado. Então, todo desenvolvedor tem o histórico completo de mudanças em seu computador. E alterações em grandes arquivos binários fazem com que os repositórios Git cresçam pelo tamanho desse arquivo toda vez que o arquivo é alterado (e essa alteração é cometida). Isso significa que levará muito tempo para obter os arquivos. E se você fizer isso, será difícil versionar e fundir os binários.

Então, toda vez que os arquivos crescem, o repositório Git cresce. E quando os usuários do Git precisam recuperar e clonar um repositório, isso cria problemas.

Git LFS foi criado para resolver estes problemas. Mas ele tem problemas próprios…

Quando Git Large File Storage Doesn’t Work

Git LFS funciona. Mas as equipas dizem-nos constantemente que é difícil de gerir. Então, mesmo que Git em si seja gratuito, ele pode aumentar os custos de produtividade.

Instalar Git LFS em cada servidor e estação de trabalho (e/ou repo) leva tempo. Ele também sobrecarrega os administradores. Uma vez instalado, não há visibilidade e há pouco controle sobre ele. E se alguns desenvolvedores não tiverem a extensão LFS do Git? Ele se decompõe.

Pega passos extras para manter o Git Large File Storage com build runners, como o Jenkins. Isso leva a tempo extra – e complexidade extra.

Tudo isso pode levar a problemas de desempenho.

Alternativos para Git LFS

Git LFS não é a única maneira de gerenciar arquivos grandes em Git. Existem alternativas.

Inclui outras correções de código aberto ou de terceiros, como por exemplo:

  • git-annex
  • git-bigfiles
  • git-fat
  • git-media
  • git-bigstore
  • git-sym

Mas, assim como o Git LFS, estas opções de armazenamento de arquivos grandes do Git podem criar problemas. Há uma maneira melhor de gerenciar arquivos grandes e arquivos binários.

O Melhor Controle de Versão para Arquivos Binários Grandes: Helix Core

Os projetos de hoje são maiores, com mais arquivos e ativos mistos do que nunca. Git e Git LFS sozinhos não podem gerenciar isso. Mas Helix Core can.

Helix Core – software de controle de versão da Perforce – é a melhor opção para gerenciar arquivos binários de grande porte. Isso porque o armazenamento de arquivos grandes é uma capacidade nativa, não um add-on. E é à prova de bala.

No Helix Core, você pode armazenar binários ao lado do seu código fonte. Na verdade, todos os seus maiores arquivos – arquivos binários, código fonte, arquivos de arte, arquivos de vídeo, imagens, bibliotecas e artefatos de compilação – podem viver juntos em um único repositório. Sem diminuir a velocidade de times grandes e distribuídos.

Veja por si mesmo porque o Helix Core é a ferramenta escolhida para gerenciar arquivos binários grandes.

Gerenciar arquivos grandes no Helix Core

Por falar nisso, Perforce Has Git, Too

Você ainda tem times que precisam gerenciar arquivos grandes no Git? Você pode trazê-los para seu pipeline de construção com as ferramentas Perforce Git – Helix4Git e Helix TeamHub.

Helix4Git é um servidor Git dentro de um servidor Perforce. O Helix TeamHub é uma solução de hospedagem de código Git. Estas ferramentas permitem às equipes de Git aproveitar a velocidade e desempenho do Helix Core – enquanto trabalham em Git.

Então, você pode usar o Helix4Git junto com o Helix Core para trazer seu repositório Git para o seu pipeline de compilação. O Helix4Git permite que seus desenvolvedores ainda usem suas ferramentas nativas de Git. Mas eles conseguem seus arquivos muito mais rápido.

Você obtém:

  • Performance de compilação CI/CD mais rápida.
  • Suporte para projetos multi-repo, repositórios de artefatos, e até mesmo um registro de containers Docker.
  • A habilidade de gradualmente adicionar nós.
  • Replicação e conteúdo atualizado garantido sem atraso, ao invés de copiar.

Leave a Reply