Por qué algunas personas prefieren la revisión de código con "interdiff"
Evaluación de la herramienta de revisión de código Gerrit
- Gerrit es una herramienta de revisión de código de código abierto que funciona junto con repositorios Git
- Se pueden escribir parches en el repositorio y enviarlos para revisión
- Otras personas revisan el código escrito y señalan problemas que deben corregirse
- La revisión de código suele ser una buena idea
- En proyectos de código abierto, el código puede fusionarse, lo que incrementa la responsabilidad y la deuda técnica
Diversas herramientas de revisión de código
- Existen varias herramientas, como Gerrit, GitHub, Phabricator, subir archivos
.patch a un bug tracker y enviar correos mediante git send-email
- Cada herramienta puede funcionar en distintos grados
Serie de parches ideal
- Una serie de 3 parches representa la evolución de la base de código paso a paso
- Los cambios deben estar separados de forma lógica, y cada parche debe poder leerse como si se hubiera aplicado de manera individual
- La revisión de código permite revisar este tipo de serie ideal
Método de revisión de código de GitHub: "diff soup"
- GitHub originalmente fomenta hacer revisiones agregando nuevos commits encima de los commits originales
- Esto ocurre por el diseño de la UX y por varias otras razones
- Si durante el proceso de revisión se agregan varios commits, la relación implícita entre ellos se vuelve compleja
- Se dificulta el uso de las herramientas
git blame y git bisect
Una mejor forma: revisión con "interdiff" (AKA git range-diff)
- En lugar de agregar nuevos commits, se publica una nueva versión de los commits originales
- Se usa
git range-diff para comparar las diferencias entre versiones de commits
- El revisor puede hacer una revisión incremental sin tener que releer todo el diff
- Las herramientas
git blame y git bisect funcionan de manera más confiable
Explicación intermedia: estrategia de fusión de parches
- El método anterior es independiente de la estrategia de fusión (por ejemplo,
git rebase vs commits git merge con múltiples padres)
Explicación intermedia: si git rebase es malo o no
git rebase está bien. Solo no debería usarse en ramas públicas sobre las que otras personas basarán sus commits
Otras notas
Conclusión
- El sistema de revisión interdiff fomenta parches más pequeños que se fusionan más rápido en la rama principal
- Ofrece una mejor experiencia de revisión de código tanto para revisores como para autores
Resumen de GN⁺
- Este artículo ofrece un análisis profundo sobre herramientas y metodologías de revisión de código
- El enfoque de revisión interdiff puede mejorar significativamente la eficiencia de la revisión de código
- Ayuda a resolver el problema de "diff soup" en GitHub
- Presenta factores importantes a considerar al elegir una herramienta de revisión de código
- Herramientas con funciones similares incluyen GitHub, Gerrit y Phabricator
1 comentarios
Opiniones en Hacker News
El flujo de trabajo que se usa principalmente en GitHub implica mucho trabajo y no es claro para los colaboradores
git blamenigit bisectgit commit --fixup <hash del commit a actualizar>git rebase --interactive origin/main --autosquashpara combinar los commits fixup con el commit originalgit push --force-with-leaseLa forma de hacer code review en GitHub es ineficiente, y con Phabricator esto se manejaba manualmente
Quieren un sistema mejor que el code review de GitHub
Siempre es interesante ver nuevos enfoques de code review
Review Board fue el primero en introducir interdiffs, y esto es muy útil en code review
Hay experiencia usando el sistema de code review Gerrit, y el code review de GitHub es ineficiente
Hay experiencia usando varios sistemas de code review, y cada uno tiene ventajas y desventajas
Después de usar el sistema de code review Gerrit, los PR en stack de GitHub resultan incómodos