Agora estou aprendendo o Gerrit (que é a primeira ferramenta de revisão de código que eu uso). A Gerrit requer uma alteração revisada para consistir em uma única confirmação. Meu ramo de recursos tem cerca de 10 confirmações.
A maneira preferida pelo gerrit é esmagar esses 10 commits em um único. No entanto, dessa maneira, se a consolidação for mesclada na ramificação de destino, o histórico interno dessa ramificação de recurso será perdido. Por exemplo, não poderei usar git-bisect
para dividir esses commits. Estou certo?
Estou um pouco preocupado com esse estado de coisas. Qual é a justificativa para essa escolha? Existe alguma maneira de fazer isso em Gerrit sem perder a história?
git
code-reviews
gerrit
liori
fonte
fonte
Respostas:
A revisão de código tem o melhor impacto quando é um gancho de pré-confirmação (pré-envio no caso de git). Se um erro encontrado no dia 5 dos seus dez confirma, como você o corrige (preservando o histórico)? Claro, você pode criar outro ramo de tópico, corrigir esse commit, escolher os 5 commits restantes e reenviar os diffs para revisão, mas isso é muito complexo (embora você possa escrever um script para ele).
As alterações feitas em um único repositório devem, idealmente, preservar seu estado (por exemplo, não interromper a compilação, testes etc.). Portanto, se suas alterações forem feitas dessa maneira, elas poderão ser revisadas separadamente, caso contrário, compactá-las seria melhor do que sair do repositório inconsistente.
Você pode criar um erro no rastreador de erros e colocar uma referência em cada confirmação, para que os revisores e futuros leitores saibam o que você está tentando alcançar no seu conjunto.
fonte
E quanto à integração contínua? você fez 10 confirmações em uma ramificação de recursos e ela será "publicada" de uma só vez - isso seria um grande impacto para outras pessoas que deveriam revisar essas confirmações / alterações.
No entanto, vale a pena enviar 10 confirmações, se as confirmações contiverem modificações de código separadas. Porém, caso as confirmações contenham modificações contínuas em um único recurso (portanto, a maioria das confirmações apenas correções ou status intermediário de uma implementação contínua de uma definição de função), é melhor agrupá-las em uma única confirmação.
Em geral, pense na opinião dos revisores - qual é o tamanho de uma modificação de código que pode ser revisada facilmente.
Nota: O Gerrit não serve apenas para revisar o código - as alterações devem acionar vários testes de aceitação. (teste de unidade, teste de fumaça) Portanto, se você os tiver, será mais difícil publicar códigos com defeito. Portanto, dessa perspectiva, um commit deve conter essas alterações que valem a pena testar.
Então, Gerrit força você a não cometer mudanças muito pequenas e muito grandes. (você usará
--amend
não apenas para corrigir uma alteração já enviada para a Gerrit, em vez de corrigir uma confirmação que deseja enviar para revisão)fonte