Fluxo de trabalho Git para várias equipes

12

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?

Igor Oks
fonte
2
Usamos esse modelo de ramificação , mas acho que se você ler "ramo de recurso" como "ramo de história", ele combina muito bem com o seu segundo artigo.
2
Tenho certeza que 10 pessoas podem responder a isso com 10 respostas diferentes. Aqui está o que funciona para mim: Temos um repositório principal hospedado no github que denota o lançamento 'atual'. Versões mais antigas são ramificadas (embora a marcação também funcione). Os membros da equipe são incentivados a criar ramificações para as tarefas nas quais estão trabalhando. Quando concluídos, eles fazem uma solicitação de recebimento para o mestre (ou onde quer que seja necessário mesclar) e, em seguida, outra pessoa revisa o pedido de recebimento e é responsável por mesclá-lo ao mestre. Eles também são responsáveis ​​por limpar a filial depois que ela for mesclada.
2
Você pode estar interessado em submódulos para manter as bases de código das diferentes equipes separadas. Eles podem então bifurcar as bases de códigos uns dos outros e enviar correções ao editar as partes do código uns dos outros.
Fred Foo
@larsmans & carbonbasednerd - Seus comentários deveriam ter sido respostas, eles teriam votos positivos de mim. * 8 ')
Mark Booth

Respostas:

8

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.

Um modelo de ramificação git bem-sucedido

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.

Nick Haddad
fonte
0

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.

Coiote21
fonte