Recentemente, deparei com um artigo do MSDN sobre ramificação e mesclagem e SCM: Ramificando e mesclando iniciador - Chris Birmele .
No artigo, eles dizem que 'big bang merge' é um antipadrão em fusão:
Big Bang Merge - adiando a ramificação que se une ao final do esforço de desenvolvimento e tentando mesclar todas as ramificações simultaneamente.
Percebi que isso é muito semelhante ao que minha empresa está fazendo com todos os ramos de desenvolvimento que são produzidos.
Eu trabalho em uma empresa muito pequena, com uma pessoa atuando como autoridade de revisão final + mala direta. Temos 5 desenvolvedores (incluindo eu), cada um de nós terá uma tarefa / bug / projeto separado e cada um dos ramos do tronco atual (subversão) será executado e, em seguida, realizaremos o trabalho de desenvolvimento em nosso ramo, testamos os resultados, escrevemos documentação. se necessário, faça uma revisão por pares e um loop de feedback com os outros desenvolvedores e envie a ramificação para revisão + mesclagem em nosso software de gerenciamento de projetos.
Meu chefe, a única autoridade no repositório de troncos, na verdade adiará todas as revisões de ramificações até um único momento em que ele executará revisões o máximo que puder, algumas ramificações serão devolvidas para aprimoramentos / correções, algumas ramos se fundem diretamente no tronco, alguns ramos serão jogados de volta por causa de conflitos etc.
Não é incomum termos 10 a 20 ramos ativos na fila de revisão final para serem mesclados no tronco.
Também temos frequentemente que resolver conflitos no estágio final de revisão e mesclagem, porque duas ramificações foram criadas no mesmo tronco, mas modificaram o mesmo trecho de código. Normalmente, evitamos isso apenas reorganizando o tronco e reaplicando nossas alterações e resolvendo os conflitos e enviando o novo ramo para revisão (rebase do pobre homem).
Algumas perguntas diretas que tenho são:
- Estamos exibindo o próprio antipadrão que foi descrito como o 'big bang merge'?
- Alguns dos problemas que estamos vendo são resultado desse processo de mesclagem?
- Como podemos melhorar esse processo de mesclagem sem aumentar o gargalo no meu chefe?
Edit: Duvido que meu chefe afrouxe o controle sobre o repositório de troncos ou permita que outros desenvolvedores se unam ao tronco. Não sei quais são suas razões para isso, mas eu realmente não planejo abordar o assunto, porque ele foi abordado antes e abatido rapidamente. Eu acho que eles simplesmente não confiam em nós, o que não faz sentido, porque tudo é rastreado de qualquer maneira.
Qualquer outra visão sobre essa situação seria apreciada.