Al realizar una corrección en una confirmación anterior, ¿debería volver a redactar o agregar una confirmación de reparación separada?

11

Un escenario común en el desarrollo de software es la revisión de código del código de otra persona. Una herramienta común para hacer esto es abrir una solicitud de extracción.

Mi pregunta es, cuando se encuentran problemas en la revisión, si los cambios

  1. comprometerse por separado (nuevo compromiso)
  2. o debería modificarse la confirmación existente (suponiendo que nadie se esté ramificando de su confirmación anterior ... ya que reescribir el historial desde una rama compartida es una mala noticia).

Para el primer escenario, es fácil rastrear los cambios incrementales, aunque agrega algo de ruido al historial de confirmación. La segunda opción tiene los pros y los contras inversos.

loeschg
fuente
14
Dices "ruido" al commit, pero leí que es un historial exacto . ¿Por qué tratar de enmascarar lo que realmente sucedió en la historia de commit? Una revisión de código es una revisión de código, no es necesario pintarlo como algo más. Mi voto sería ir a la comisión por separado, y no a la rebase en este caso.
Thomas Stringer
3
Usualmente hago las dos cosas. Publique cada confirmación por separado, luego, una vez que la revisión se haya completado, vuelva a crear y fusionar. GitHub mantiene discusiones sobre la solicitud de extracción incluso después de que esos compromisos se eliminen o reemplacen, por lo que no hay una pérdida sustancial de historial por rebase. Obtienes lo mejor de ambos mundos.
Ajedi32
1
Tengo sentimientos encontrados con respecto a si cometí algo que de alguna manera más tarde determiné que bloquea el sistema. esas confirmaciones, si descubro su defecto de mi fabricación pronto, son las que me gustaría revertir de la historia. pero son solo pedacitos, no cuestan tanto, por lo que probablemente la cosa más segura, rentable y consistente que hacer (como en la doctrina) es siempre comprometerse por separado y dejar el auto destrozado en la zanja para que todos lo hagan ver ahora y para siempre .... y puede marcar cada rama defectuosa con un mensaje inconfundible para no construir sobre ella, por lo que no hay una rama compartida.
robert bristow-johnson
¿Puedes explicar qué es "rebase" y cuándo me gustaría?
Kilian Foth

Respuestas:

23

Asume que la solución no introduce ningún problema nuevo y soluciona los antiguos. Pero vale la pena revisar muchas soluciones por sí mismas, y eso probablemente sea mucho más fácil cuando los cambios incrementales se pueden revisar por separado.

Doc Brown
fuente