Uma das coisas que gosto na maneira como tenho o Subversion configurado é que posso ter um único repositório principal com vários projetos. Quando eu quero trabalhar em um projeto, posso verificar apenas esse projeto. Como isso
\main
\ProductA
\ProductB
\Shared
então
svn checkout http://.../main/ProductA
Como um novo usuário do git, quero explorar um pouco das melhores práticas no campo antes de me comprometer com um fluxo de trabalho específico. Pelo que li até agora, git armazena tudo em uma única pasta .git na raiz da árvore do projeto. Então, eu poderia fazer uma de duas coisas.
- Configure um projeto separado para cada produto.
- Configure um único projeto massivo e armazene os produtos em subpastas.
Existem dependências entre os produtos, portanto, o único projeto massivo parece apropriado. Estaremos usando um servidor onde todos os desenvolvedores podem compartilhar seu código. Já coloquei isso funcionando em SSH e HTTP e essa parte que adoro. No entanto, os repositórios em SVN já têm muitos GB de tamanho, então arrastar todo o repositório em cada máquina parece uma má ideia - especialmente porque somos cobrados por largura de banda de rede excessiva.
Eu imagino que os repositórios do projeto do kernel do Linux são igualmente grandes, então deve haver uma maneira adequada de lidar com isso com o Git, mas ainda não descobri.
Existem diretrizes ou melhores práticas para trabalhar com repositórios de vários projetos muito grandes?
git diff
egit status
ambos aprenderam a levar em consideração os estados dos submódulos mesmo se executados a partir do projeto principal. Você simplesmente não pode perder a modificação do submódulo.GitSlave permite que você gerencie vários repositórios independentes como um. Cada repo pode ser manipulado por comandos git regulares, enquanto o gitslave permite que você execute um comando adicional em todos os repos.
Repo-per-project tem vantagens com componentização e builds simplificados com ferramentas como Maven. O repo-per-project adiciona proteção ao limitar o escopo do que o desenvolvedor está mudando - em termos de commits errados de lixo.
fonte