Nosso projeto tem cerca de 11 GB, 10 dos quais são dados binários (imagens .png). Consequentemente, as operações git diff
ou git status
demoram mais de um minuto. Felizmente, todos os arquivos de dados são separados em uma pasta com o nome maravilhoso data
. A atribuição é "Evite compactar, diferenciar e outras operações caras em arquivos binários".
Foi considerado dividir o projeto em dois repositórios. Em seguida,
data
haveria um repositório externo, verificado pelo repositório principal do código-fonte. Foi decidido que a sobrecarga de manter os repositórios sincronizados seria demais, principalmente para os artistas que trabalham com os arquivos de dados.Dizendo explicitamente ao git que esses arquivos são binários , foram excluídos os arquivos das diferenças , mas esses parecem ser apenas uma solução parcial para a pergunta.
Eu sinto que os atributos git são a solução, mas como? Ou existe uma arquitetura melhor do que um repositório monolítico?
Respostas:
Você pode usar o git-lfs ou ferramentas similares (git-fat, git-anexo, etc.). Essas ferramentas basicamente substituem os arquivos binários no seu repositório por um pequeno arquivo de texto com hashes e armazenam os dados binários reais de maneira não-git - como um compartilhamento de rede.
Torna diffs e tudo super rápido, pois apenas os hashes são comparados e é - pelo menos para o git-lfs - transparente para o usuário (após a instalação uma vez).
O Afaik git-lfs é suportado pelo github, gitlab, VisualStudio e é de código aberto.
fonte
git-lfs
em um projeto com muitos gigabytes de ativos com uma equipe mista de desenvolvedor / artista? Estou interessado em saber se as pessoas estão usando o git-lfs para projetos como jogos e animação. Uma vez que ainda é relativamente novo no momento da escrita. Pela minha própria experiência, a barreira de entrada no git para usuários menos técnicos já é muito alta, portanto, ter uma camada extra para gerenciamento de arquivos por cima - pode ser difícil para as pessoas usarem, a menos que já estejam confortáveis com o git.Use os repositórios GIT e SVN
Se os arquivos binários puderem ser separados logicamente da fonte, considere o uso de git para arquivos de texto e um DVCS não como subversão para os arquivos binários.
Um projeto em que trabalho faz isso, pois temos muitos GB para bibliotecas compiladas (para dependências do OSX / Win32), das quais precisamos manter a versão.
Por outro lado, se você possui usuários não técnicos, o uso de dois sistemas de controle de versão pode ser problemático. No entanto, se os artistas não estiverem trabalhando no código, você poderá fornecer um script para executar a atualização e eles poderão usar o subversion para confirmar ativos binários.
Use SVN (com
git svn
)Embora essa troca nem sempre seja tão agradável para desenvolvedores que estão acostumados a usar o git comum, você pode usar o SVN para o repositório principal e os desenvolvedores podem usar
git svn
ferramentas.Isso torna um pouco mais de trabalho para desenvolvedores que usam git, mas significa para todos que não estão familiarizados com o DVCS (ou VCS em geral) - eles podem usar o modelo simples do SVN sem precisar usar vários sistemas de controle de versão complexos.
O git-lfs também é uma opção, mas eu não o usei, por isso não posso falar de como funciona.
fonte