Por que algumas pessoas gostam de revisão de código com "interdiff"
Avaliando a ferramenta de revisão de código Gerrit
- Gerrit é uma ferramenta de revisão de código de código aberto que funciona com repositórios Git
- É possível criar patches no repositório e enviá-los para revisão
- Outras pessoas revisam o código escrito e apontam problemas que precisam ser corrigidos
- Revisão de código geralmente é uma boa ideia
- Em projetos de código aberto, o código pode ser mesclado, o que aumenta a responsabilidade e a dívida técnica
Diversas ferramentas de revisão de código
- Existem várias ferramentas, como Gerrit, GitHub, Phabricator, upload de arquivos
.patch em rastreadores de bugs e envio por e-mail via git send-email
- Cada ferramenta pode funcionar em diferentes graus de eficácia
Série de patches ideal
- Uma série de 3 patches representa a evolução da base de código passo a passo
- As mudanças devem ser separadas logicamente, e cada patch deve poder ser lido como se tivesse sido aplicado individualmente
- A revisão de código analisa essa série ideal
A forma de revisão de código do GitHub: "diff soup"
- O GitHub originalmente incentiva revisões adicionando novos commits por cima dos commits existentes
- Isso acontece por causa do design de UX e por vários outros motivos
- Quando vários commits são adicionados durante o processo de revisão, as relações implícitas entre eles ficam complexas
- Isso dificulta o uso das ferramentas
git blame e git bisect
Um método melhor: revisão com "interdiff" (também conhecida como git range-diff)
- Em vez de adicionar novos commits, publica-se uma nova versão dos commits originais
- Usa-se
git range-diff para comparar as diferenças entre versões dos commits
- O revisor pode fazer uma revisão incremental sem precisar reler todo o diff
- As ferramentas
git blame e git bisect funcionam de forma mais confiável
Explicação intermediária: estratégia de mesclagem de patches
- O método acima é independente da estratégia de mesclagem (por exemplo,
git rebase vs commit git merge com múltiplos pais)
Explicação intermediária: se git rebase é algo ruim
git rebase é aceitável. Só não deve ser usado em branches públicas sobre as quais outras pessoas basearão seus commits
Outras notas
Conclusão
- O sistema de revisão com interdiff incentiva patches menores e que são mesclados mais rapidamente na branch principal
- Ele oferece uma experiência de revisão de código melhor tanto para revisores quanto para autores
Resumo do GN⁺
- Este artigo oferece uma análise aprofundada sobre ferramentas e metodologias de revisão de código
- A abordagem de revisão com interdiff pode melhorar bastante a eficiência da revisão de código
- Ela ajuda a resolver o problema de "diff soup" do GitHub
- O texto apresenta fatores importantes a considerar ao escolher uma ferramenta de revisão de código
- Ferramentas com recursos semelhantes incluem GitHub, Gerrit e Phabricator
1 comentários
Comentários do Hacker News
O fluxo de trabalho usado principalmente no GitHub envolve muito trabalho e não é claro para os colaboradores
git blameegit bisectgit commit --fixup <hash do commit a ser atualizado>git rebase --interactive origin/main --autosquashpara combinar os commits de fixup com os commits originaisgit push --force-with-leaseA forma de revisão de código do GitHub é ineficiente, e isso era tratado manualmente com o Phabricator
Querem um sistema melhor do que a forma de revisão de código do GitHub
É sempre interessante ver novas abordagens para revisão de código
O Review Board introduziu interdiffs primeiro, e isso é muito útil em revisão de código
Já usaram o sistema de revisão de código Gerrit, e a revisão de código do GitHub é ineficiente
Já usaram vários sistemas de revisão de código, e cada um tem seus pontos fortes e fracos
Depois de usar o sistema de revisão de código Gerrit, os PRs em pilha do GitHub parecem incômodos