Fluxo de trabalho de submodules Git

No meu projeto eu preciso usar código de terceiros, armazenado em vários repositórios Git. Meu projeto também é armazenado em repositório Git (separado). Há várias pessoas trabalhando comigo no projeto principal e eu sou o mantenedor.

Em projetos anteriores eu costumava copiar dependências manualmente para a árvore de trabalho do Git, adicionando um pequeno arquivo especificando a versão que eu uso.

Agora, isso é um pouco desconfortável, já que preciso atualizar diariamente uma das dependências e, muitas vezes, contribuir com código para ela, na maioria das vezes junto com as alterações no projeto principal.

Eu decidi tentar os submódulos do Git para fazer o gerenciamento. Quanto mais eu os procuro, mais frustrado me torno. Parece até que a cópia manual é, talvez, melhor.

Aqui estão algumas das minhas preocupações:

Não podemos mais obter um estado de repositório consistente com um único comando (git checkout agora precisagit submodule update --init).Não podemos usar corretamente algumas das ferramentas do Git (git archive é o mais notável).Não conseguimos ver as alterações / diferenças de status em submódulos do projeto principal.Como acabei de encontrar de um jeito difícilgit submodule não funciona com--git-dir e--work-tree opções e requerem alteração física do diretório atual para o "nível superior da árvore de trabalho".

Parece que para simplificar o fluxo de trabalho de nossos submódulos (ou seja, uma operação == um comando), temos que escrever um wrapper bastante grosso ao redor do Git. Isso é triste.

Observe que não é uma opção se afastar do Git ou mesclar o desenvolvimento do subprojeto inteiramente no projeto principal.

Talvez eu esteja usandogit submodules de um jeito errado? Existe algum bom tutorial sobre o fluxo de trabalho?

Por favor, fale se você não souber a resposta correta, mas compartilhe minhas preocupações. :-)

questionAnswers(2)

yourAnswerToTheQuestion