Agregar dependencies en una confirmación separada? (mejores prácticas)

Digamos que estoy agregando alguna funcionalidad nueva a un module C existente (podría ser cualquier idioma, pero usaremos C como ejemplo). Digamos que el module es un tree de búsqueda binary, y quiero agregar tres nuevas funciones: preOrder (), postOrder () y inOrder (), que recorren el tree (de manera diferente) e imprimen los datos en cada nodo. Digamos también que estas funciones dependen de una nueva dependencia, llámala libprettyprint.

Para agregar la nueva dependencia al proyecto, tengo que agregar una línea #include a la implementación del module (file .c) y editar algunas reglas de Makefile.

Voy a poner cada una de mis 3 funciones nuevas en confirmaciones separadas, para que puedan ser aceptadas fácilmente, modificadas o rechazadas en sentido ascendente. Pero hay al less dos forms diferentes de tratar con la nueva dependencia:

Forma uno: Agregaría el #include, cambiaría el file MAKE y escribiría mi primera function. Entonces yo cometería eso. Luego escribiría las otras dos funciones y también las comprometería por separado. (3 commits total)

Forma dos: podría hacer un commit muy pequeño con solo el #include y el Makefile modificado, luego comprometer las tres funciones en tres commits separados. (4 commits total)

La forma uno me parece peor porque, si el responsable del proyecto / mi jefe rechazara el primer commit pero aceptara los otros dos, habrían eliminado el #include y el Makefile editado, y los otros dos commits no podrían comstackrse. La forma dos corrige eso.

Mi pregunta es, en el mundo real, ¿vale la pena el esfuerzo adicional para usar siempre el Camino dos? ¿O simplemente complica los loggings de commit y pierde time?

De mi POV, tú

  • Olvidó la forma 0
  • Siempre se debe tener en count: la forma usada es muy dependiente de los comentarios y hábitos (lo que es bueno en un lugar es malo en otro equipo)

Yo (personalmente) prefiero usar y me alegra ver a The Way Zero, un compañero de trabajo empleado:

Una tarea lógica totalmente incluida en una confirmación completada lógicamente. Agregó tres funciones, esta adición requiere: 1) include 2) makefile cambiado 3) file lib agregado 4) nuevas funciones en la fuente ?! De acuerdo, conviértalo todo en una confirmación, para que el revisor pueda revisar solo una confirmación y no busque posiblemente "dependiente".

Si, por alguna razón, su compromiso no cumple con el revisor, usted y él conforman la mejor forma de implementación y usted hace un compromiso final adicional "debido a la corrección de la implementación acordada de … de la revisión N", less fricciones para todos , evolución claramente visible en perspectiva