¿Debería un mensaje git commit mencionar el archivo que fue modificado?

50

En la primera línea de un mensaje de confirmación git, tengo la costumbre de mencionar el archivo que se modificó si un cambio no abarca varios archivos, por ejemplo:

Add [somefunc] to [somefile] 

¿Es esto algo bueno o innecesario?

Matty
fuente

Respuestas:

84

Las herramientas de control de versiones son lo suficientemente potentes como para permitir que la persona vea qué archivos se modificaron y qué métodos se agregaron. Significa que, en general, los mensajes de registro que duplican claramente lo que ya existe están contaminando el registro.

Agregó un somefuncmétodo para cumplir un requisito, es decir:

  • para agregar una función,
  • para eliminar un error o
  • para refactorizar el código fuente.

Esto significa que sus mensajes de registro deben explicar más bien qué características / errores se vieron afectados o cuál fue el propósito de la refactorización.

Arseni Mourzenko
fuente
55
También debería hablar sobre por qué . ¿Qué otras opciones consideró y por qué eligió esta?
Jay Bazuzi
2
Comento las confirmaciones de la misma manera que comentaría el código, solo desde una perspectiva de nivel superior (es decir, menos información, más resumen). Personalmente, lo descompongo en un nivel de archivo / módulo (en git), pero solo porque los commits son baratos por adelantado y me gusta poder leer la historia como un libro. YMMV.
Evan Plaice
1
Si por alguna razón la persona comete un montón de archivos a la vez que no están relacionados con el mismo error, prefiero que enumeren los nombres de los archivos y la identificación del error antes del verano. No necesito saber file.cpp: agregado getMethod (), pero me gustaría la identificación de error # 10 file.cpp: veraniego decente aquí. Sin embargo, si comprometen un montón de archivos que se distribuyen en varios informes de errores, tendremos una charla, porque realmente no me gusta eso. Prefiero que hagan múltiples confirmaciones. Uno para cada problema que están resolviendo.
William
@William: Además, en caso de que haya un problema con una corrección de error, es posible revertirlo con un mínimo de alboroto. Combine diez correcciones de errores en una confirmación, y eso puede ser un problema grave.
David Thornley
59

No. Hay muchas formas de examinar el contenido de una confirmación. El comentario debe describir el propósito de la confirmación.

Dan Ray
fuente
30

No olvide agregar NÚMERO DE BOLETO / NÚMERO DE EMISIÓN .

Si tiene alguna función o sistema de seguimiento de problemas con un número de ticket o número de problema , asegúrese de incluir ese número de identificación en la confirmación. Eso ayudará a cualquiera que quiera saber más sobre la función o el problema en el que estaba trabajando.

En mi último proyecto, había una macro que se desarrolló para asegurar que los primeros 7 dígitos del comentario fueran un número de problema válido de la búsqueda clara (nuestro sistema de seguimiento de problemas / funciones).

java_mouse
fuente
¿Cómo se compromete un cambio de refactorización, entonces?
Jules
@Jules refactoring tiene un ticket # que nunca se termina
Caleth
Una metodología de @Jules es que la refactorización se rastrea como un tipo de problema de "tarea" y, por lo tanto, también tiene un número de problema.
Scott McIntyre
@ScottMcIntyre Si bien esto puede ser cierto, no estoy convencido de que sea una buena idea. Con frecuencia, la refactorización se realiza mejor de manera oportunista o como parte del proceso de desarrollo de código que se basa en el código que se va a refactorizar. Como dice Fowler , "la refactorización planificada es [...] una señal de que el equipo no ha refactorizado lo suficiente usando los otros flujos de trabajo". O más sin rodeos por Ron Jeffries: Refactorización - ¡No en la cartera! .
Jules
3

Hago ese tipo de cosas cuando me comprometo, por ejemplo, la solución de un defecto que requiere cambios en varios archivos. Esto hace que sea un poco más fácil saber qué cambió realmente sin mirar los archivos individuales en el conjunto de cambios.

Para conjuntos de cambios de un solo archivo, esto es innecesario.

La primera línea es siempre una descripción de alto nivel del conjunto de cambios, como un enlace al defecto o la historia del usuario.

Mike Partridge
fuente
3

Si es información relevante en la narrativa del mensaje de confirmación, entonces sí, inclúyala. Si el único bit de información es el nombre del archivo, entonces no.

Por ejemplo, esto tiene sentido: "Se movió la función build_foo () de fooutil.c a foobase.c, ya que la mayoría de los programas que desean usar build_foo () ya incluyen foobase.c"

Este no: "Actualizó build_foo () en fooutil.c para tomar un parámetro de barra".

Andy Lester
fuente
1

Quiero agregar una perspectiva diferente aquí.

Mi respuesta es sí o no, pero generalmente diría que sí.

El control de versiones es lo suficientemente potente como para saber qué archivo se está actualizando. Pero cuando lo hacemos

$ git log

Solo vemos el mensaje de confirmación. Eso es lo que hace la mayoría de la gente.

Al mirar en el registro en sí. Le agrega contexto adicional. Por ejemplo:

readme.md: Fix typo detected by language tool

Es mejor que

Fix typo detected by language tool

Sin embargo, si los cambios generan múltiples archivos, al menos mencione el componente que se está editando.

API: Fix reset password not sent email to user

Al leerlo, sabemos que el error que se está arreglando está en el componente API, y probablemente en el directorio API en la base del código.

Sin embargo, podríamos hacer

$ git show COMMIT_ID --name-only 

pero agrega más pasos solo para obtener los archivos.

Yana Agun Siswanto
fuente
0

El único momento en que podría ver que esto es útil para un registro de un solo archivo es si ha realizado cambios en una función utilizada en muchos lugares dentro del archivo con el resultado de que el diff está abarrotado. Incluso entonces pondría el número de seguimiento de cambios # y una descripción de texto sin formato del cambio primero.

Dan Neely
fuente
-1

Creo que la verdadera pregunta aquí es cuán limitado en alcance son sus compromisos. Si espera para confirmar una variedad de cambios no relacionados juntos en una confirmación, es posible que sienta la necesidad de especificar qué archivos se cambiaron con qué propósito.

Sin embargo, si simplemente realizó confirmaciones más estrechas con mayor frecuencia, una única confirmación explicaría qué archivos se modificaron y simplemente podría describir cuál era el propósito del mensaje.

Más commits, más a menudo. Esa es la forma en que puede evitar ser tan detallado en sus mensajes.

raffi
fuente
-2

No deberia

Todos los interesados ​​pueden ver cambios en una historia

Tampoco es factible en sistemas más grandes, ya que muchos archivos pueden generarse automáticamente

CodeART
fuente