Posso aninhar repositórios Git? Eu tenho:
/project_root/
/project_root/my_project
/project_root/third_party_git_repository_used_by_my_project
Será que faz sentido para git init/add
o /project_root
para facilitar o gerenciamento de tudo localmente ou tenho de gerir my_project
eo 3o partido um separadamente?
Coloque suas bibliotecas de terceiros em um repositório separado e use submódulos para associá-los ao projeto principal. Aqui está um passo a passo:
http://git-scm.com/book/en/Git-Tools-Submodules
Ao decidir como segmentar um repositório, eu normalmente decidia com base na frequência com que os modificava. Se é uma biblioteca de terceiros e apenas as alterações que você está fazendo estão atualizando para uma versão mais recente, você deve definitivamente separá-la do projeto principal.
fonte
Apenas para completar:
Há outra solução, eu recomendaria: mesclagem de subárvores .
Ao contrário dos submódulos, é mais fácil de manter. Você criaria cada repositório da maneira normal. Enquanto estiver no seu repositório principal, você deseja mesclar o mestre (ou qualquer outra ramificação) de outro repositório em um diretório do diretório principal.
Em seguida, para puxar o outro repositório para o diretório (para atualizá-lo), use a estratégia de mesclagem de subárvore:
Estou usando esse método há anos, funciona :-)
Mais sobre essa maneira, incluindo compará-lo com submódulos, pode ser encontrado neste documento de instruções do git .
fonte
Você poderia adicionar
para
isso deve impedir que o repositório aninhado seja incluído no repositório pai e você pode trabalhar com eles independentemente.
Mas: se um usuário executar git clean -dfx no repositório pai, ele removerá o repositório aninhado ignorado. Outra maneira é ligar o link simbólico à pasta e ignorá-lo. Se você executar o git clean, o link simbólico será removido, mas o repositório 'aninhado' permanecerá intacto, pois realmente reside em outro lugar.
fonte
O git-subtree ajudará você a trabalhar com vários projetos em uma única árvore e manterá um histórico separável para eles.
fonte
Resumo.
Sim. No entanto, por padrão, o git não controla a
.git
pasta do repositório aninhado. O Git possui recursos projetados para gerenciar repositórios aninhados (continue lendo).Provavelmente não faz sentido, pois o git possui recursos para gerenciar repositórios aninhados. Os recursos integrados do Git para gerenciar repositórios aninhados são
submodule
esubtree
.Aqui está um blog sobre o tópico e aqui está uma pergunta de SO que aborda os prós e contras do uso de cada um.
fonte
Eu usaria um repositório por projeto. Dessa forma, a história se torna mais fácil de navegar.
Também verificaria a versão da biblioteca de terceiros que estou usando, no repositório do projeto que a está usando.
fonte