Vamos começar a usar o Git (ainda não o utilizamos) e quero definir o fluxo de trabalho.
Temos 4 equipes em 4 locais globais diferentes, desenvolvendo juntos o mesmo produto. Cada equipe possui uma parte do código do produto, mas às vezes também precisa fazer alterações no código pertencente a outras equipes.
Existe uma recomendação para um fluxo de trabalho Git para esse ambiente?
Já vi este artigo , mas a abordagem aqui é "criamos ramificações adicionais o mais raramente possível" e acredito mais na abordagem "ramificação para cada história de usuário".
Além disso, este artigo apresenta uma boa abordagem.
Eu tinha em mente ter uma ramificação mestre, uma ramificação permanente por cada equipe mesclando periodicamente com a master e uma ramificação por história de usuário mesclando-se às ramificações das equipes. Faz sentido ou não funcionaria?
fonte
Respostas:
Dê uma olhada no Successful Git Branching Model , que possui uma boa estratégia de ramificação para o desenvolvimento de recursos em todos os lançamentos.
Você pode implementar algo semelhante com um nível extra para ramificações da equipe entre a ramificação 'develop' e as 'ramificações de recursos'. Ter ramificações de equipe também permitiria que duas equipes colaborassem de maneira mais eficaz, mesclando-se entre as ramificações de sua equipe.
fonte
Eu diria que cada equipe tem sua própria versão do repositório, com um repositório global no qual todos se comprometem (como no kernel do Linux, onde o repositório Linus É o kernel e o repositório central).
Então, para manter o código do produto, você pode usar submódulos como o @larsmans disse, então cada equipe só pode trabalhar principalmente na parte que é mais importante para eles e se precisar trabalhar com outra parte, pode fazê-lo, mas eles terá que lembrar de atualizar o submódulo, e é aí que está o problema (já que é muito fácil cometer erros ao usar o git, felizmente também é fácil se afastar deles).
Mas como suas equipes estão acostumadas a isso e sabem que estão alterando outro código de equipe, é mais fácil lembrar-se de fazer a atualização do submódulo antes de alterar um módulo externo.
fonte