Preservar el historial de confirmación de control de versiones vs Refactorización y documentación

11

No cuesta casi nada usar el historial de confirmación mantenido por el sistema de control de versiones. Sin embargo, durante un esfuerzo importante de refactorización (o reorganización / limpieza) de un proyecto, se moverán funciones y clases e incluso espacios de nombres; a veces se fusionarán varios archivos y se dividirán otros archivos. Estos cambios a menudo conducen a la pérdida del historial de confirmación original de algunos archivos.

En mi opinión personal, mantener la organización del proyecto es más importante que mantener el historial del código fuente. La buena organización del proyecto permite que se agreguen continuamente nuevas funciones con un esfuerzo razonable, mientras que el valor del historial del código fuente parece ser dudoso.

Además, con el uso de pruebas unitarias, los problemas de regresión se identifican rápidamente. Mientras la última versión continúe satisfaciendo todos los requisitos de software, ¿realmente necesitamos preservar el historial del código fuente?

Entiendo que cualquier código fuente enviado debe conservarse debido a la necesidad de brindar soporte a los clientes sin requerirles que realicen una actualización importante de la versión. Pero aparte de esto, ¿hay algún valor en mantener el historial de confirmaciones del código fuente?

¿El historial de confirmación del código fuente juega algún papel en las comunicaciones entre los miembros del equipo? ¿Qué pasa si abolimos el historial de confirmación, pero en su lugar nos basamos en el "código fuente" + "código de prueba de la unidad" para la comunicación?

¿La existencia de un historial de compromiso hace que uno se sienta complacido con la documentación a largo plazo de información importante sobre el proyecto, como los principales cambios de diseño / requisitos y las corrientes de pensamiento que impulsaron esos cambios?

rwong
fuente
3
Dependiendo del sistema de código fuente que utilice, el historial de versiones se conservará incluso con movimientos de archivos y demás. El historial de archivos eliminados también debería ser accesible. Y al final lo que importa es la historia del resultado final. La clase X puede ser una combinación de las clases Y y Z, pero el historial te lo dirá (especialmente si tienes buenos comentarios de registro), y aún puedes rastrear hasta los originales. ¿Me estoy perdiendo de algo?
Adam Lear
1
These changes often lead to the loss of the original commit history of a few files.Eche un vistazo, por ejemplo, a "culpar a git": no se pierde nada. A veces puede ser un poco más difícil de encontrar, pero siempre está ahí.
maaartinus
1
En una refactorización grande, vale la pena tomarse un tiempo para pensar y planificar las actualizaciones de control de origen. A menudo, con un esfuerzo adicional mínimo o pequeño, se puede conservar mucha más información. por ejemplo, si divide un archivo en 3 partes, primero conserve la copia del original en cada uno de sus 3 reemplazos; luego se compromete a modificar los tres ...
UuDdLrLrSs

Respuestas:

5

Para utilizar el historial de confirmaciones para más de "comentarios realizados" o comentarios de tipo "error corregido", debe estar vinculado con su sistema de seguimiento de problemas. Cada cambio, cada confirmación, debe tener algún problema asociado para que sepa qué cambió, por quién y por qué.

Mientras la última versión continúe satisfaciendo todos los requisitos de software, ¿realmente necesitamos preservar el historial del código fuente?

El software suficientemente complejo rara vez tiene todos los requisitos implementados y todos los errores corregidos por una multitud de razones, por lo que creo que su afirmación aquí es, digamos, optimista.

Supongamos que está en la versión 7.8 de su programa. Pero está apoyando, en el campo, 12 versiones activas diferentes, como 1.6, 2.2, 2.8, etc. Cada uno de estos no se actualizará a la última versión por una variedad de razones, por lo que está apoyando a todos con correcciones de errores. Un cliente encuentra un error en su última versión 7.8. Lo arreglas en 7.8. ¿Cómo sabes cuántos de los otros lanzamientos deben corregirse? Sin el historial de fuentes y el seguimiento de problemas, no lo hace.

Erik
fuente
7

el valor del historial del código fuente parece ser dudoso.

He tenido ingenieros que se remontan varios años al código fuente buscando respuestas a por qué algo es así. A veces, la forma en que las cosas han evolucionado con el tiempo es importante para comprender un error, pero no es algo en lo que generalmente se piensa al documentar cosas (ni siquiera necesariamente documentable).

Además, puede haber muy buenas razones legales para mantener el historial del código fuente. La mayor parte del buceo en el contenedor de código fuente que he tenido que hacer (como ingeniero de construcción / SCM) ha sido a pedido del departamento legal de mi empresa.

ebneter
fuente
1
Personalmente, encuentro que si bien es raro mirar la historia, en las ocasiones en que se necesita la capacidad de hacerlo es extremadamente valiosa. Así que estoy a favor de preservar la historia cuando es práctico hacerlo.
UuDdLrLrSs
3

Mientras la última versión continúe satisfaciendo todos los requisitos de software, ¿realmente necesitamos preservar el historial del código fuente?

Pero aparte de esto, ¿hay algún valor en mantener el historial de confirmaciones del código fuente?

Sí a los dos. Puede ser útil saber cuándo se cambió algo, quién lo hizo y por qué. Si pierde su historial, su capacidad para hacerlo se ve afectada.

¿El historial de confirmación del código fuente juega algún papel en las comunicaciones entre los miembros del equipo? ¿Qué pasa si abolimos el historial de confirmación, pero en su lugar nos basamos en el "código fuente" + "código de prueba de la unidad" para la comunicación?

Si lo hace El enfoque de "código fuente" + "código de prueba de unidad" solo no le dice quién / cuándo / por qué.

¿La existencia de un historial de compromiso hace que uno se sienta complacido con la documentación a largo plazo de información importante sobre el proyecto, como los principales cambios de diseño / requisitos y las corrientes de pensamiento que impulsaron esos cambios?

Supongo que se podría decir que sí. Pero pocos desarrolladores documentan a fondo los cambios en los requisitos / diseño. Y ciertamente, casi nadie registra la corriente de pensamiento que impulsó el desarrollo inicial o las modificaciones posteriores. Tener el historial de confirmación (y especialmente los mensajes de registro de confirmación) y los enlaces cruzados con el sistema de seguimiento de problemas / fallas al menos le brindan algo de dónde ir. Y eso es mejor que nada, o un conjunto de instantáneas de lanzamiento.

Stephen C
fuente
1
+1 Además, confiar en el código para la comunicación significa que la información que estaría en el historial también está presente en los comentarios, violando DRY.
Larry Coleman
1
@Larry: cierto. Pero en realidad, es probable que el problema sea muy poca información registrada en lugar de demasiada (o duplicada) información.
Stephen C