As ramificações devem funcionar bem, com base na minha experiência de usá-las em revisões pré-confirmadas em trabalhos anteriores.
Observe que estávamos usando revisões pré-confirmação apenas para patches críticos para o código candidato à liberação de produção, portanto não havia muitas ramificações (as alterações de rotina foram passadas pelas revisões pós-confirmação).
Como você parece usar revisões de pré-confirmação para todas as alterações, pode ser necessário gerenciar uma grande quantidade de ramificações. Se você espera que o desenvolvedor faça uma alteração "passível de revisão" por semana, em média, acabará tendo cerca de 50 ramificações por ano para cada desenvolvedor da equipe. Se você estiver usando pedaços menores de trabalho - como aqueles que levam 1, 2, 3 ... dias - multiplique 50 por 2, 3, 5 ... de acordo.
Abaixo estão algumas outras considerações a serem consideradas, se você desejar da melhor maneira .
1. lidar com casos em que a revisão atrasada bloqueia o código necessário para outros membros da equipe
Estabelecer, monitorar e resolver conflitos relacionados aos prazos de revisão de código. De acordo com minha lembrança de revisões pré-confirmação de alterações de rotina com as quais lidei em um dos projetos anteriores, o prazo razoável é de cerca de 3 dias e o momento para começar a me preocupar é quando a revisão não é concluída mais de um dia após o envio.
Para comparação, nas revisões pós-confirmação, esses requisitos são muito mais relaxados (estou usando o prazo de 2 semanas e começo a me preocupar após 1 semana) - mas como você direciona as revisões pré-confirmação, isso provavelmente não é interessante.
2. mesclar conflitos ao enviar o código revisado
O que fazer se a confirmação do código revisado for bloqueada por alterações conflitantes confirmadas por outra pessoa enquanto o código aguardava a revisão?
Algumas opções a serem consideradas são
- reverta para o início e exija que os desenvolvedores reimplemente e revejam a mudança.
Nesse caso, talvez seja necessário abordar um impacto negativo no moral da equipe que isso possa ter (terá!).
- passe a responsabilidade de mesclar para outro membro da equipe ("mestre de mesclagem").
Nesse caso, você também precisará decidir se as mesclas em si devem passar por uma revisão pré-confirmação ou não - e, se sim, o que fazer no caso de se essa fusão, por sua vez, encontra outro conflito.
- ignorar as alterações feitas no código revisado no estágio de mesclagem
Nesse caso, talvez seja necessário abordar um impacto negativo no moral da equipe relacionado ao fato de o código confirmado diferir daquele que foi revisado.
- inventar uma maneira de evitar conflitos A
abordagem direta é permitir que apenas um desenvolvedor de cada vez modifique um conjunto específico de arquivos - embora isso não o proteja contra o tipo de alterações que não modificam os arquivos diretamente, mas os impacta através de alterações internas da API . Você também pode descobrir que esse tipo de "bloqueio pessimista" torna as mudanças em todo o sistema e a refatoração profunda bastante problemáticas.
Para comparação, não haveria problemas desse tipo nas revisões pós-confirmação (já que tratam de código que já foi mesclado por definição) - mas como você direciona as revisões pré-confirmação, isso provavelmente não é interessante.
3. carregar desenvolvedor que está aguardando revisão
Estabeleça uma política explícita para saber se o desenvolvedor que enviou a revisão deve mudar para uma nova tarefa ou fazer outra coisa (como por exemplo, perseguir o revisor).
Para comparação, as revisões pós-confirmação dificilmente precisam de uma política explícita (já que é natural prosseguir para a próxima tarefa depois que você confirma o código e levando em conta que o prazo de revisão é de uma semana ou duas) - mas como você direciona as revisões pré-confirmação, provavelmente isso não é interessante.