2010-11-08 18 views

Respuesta

12

Varía, por supuesto, pero un formato muy común es algo como esto (tomado de http://tbaggery.com/2008/04/19/a-note-about-git-commit-messages.html, que creo que resume todo muy bien):

Short (50 chars or less) summary of changes 

More detailed explanatory text, if necessary. Wrap it to about 72 
characters or so. In some contexts, the first line is treated as the 
subject of an email and the rest of the text as the body. The blank 
line separating the summary from the body is critical (unless you omit 
the body entirely); tools like rebase can get confused if you run the 
two together. 

Further paragraphs come after blank lines. 

- Bullet points are okay, too 

- Typically a hyphen or asterisk is used for the bullet, preceded by a 
    single space, with blank lines in between, but conventions vary here 

Una cosa que no aborda es algo He adoptado por mí mismo, es decir, el uso de etiquetas cortas al comienzo de la primera línea para identificar qué tipo de compromiso es. Eso podría ser etiquetas como [fix] para una corrección de errores, [new] para una nueva característica o [dev] para una confirmación que solo afecta a las partes internas. Con una política como esa, es fácil generar automáticamente un registro de cambios de las confirmaciones.

Editar: Aquí hay otro buen resumen, desde este sitio, incluso: In git, what are some good conventions to format multiple comments to a single commit

+1

El prefijo mucho más común para la primera línea es la parte del proyecto al que se aplica la confirmación. Podría ser un nombre de archivo, un módulo, lo que más le convenga. De lo contrario, creo que ya cubriste a los sospechosos habituales. – Cascabel

+0

Tiendo a no saturar mi resumen con ningún metadato (que no sean punteros de error). Compromisos bien escritos con buenos resúmenes son un buen comienzo. siempre puede agregar etiquetas cerca de la parte inferior del resumen para decidir si algo es elegible para notas de la versión. Luego pongo esos en la etiqueta real y [generar mi registro de cambios] (http://dustin.github.com/2009/01/17/changelog.html) desde las etiquetas. :) – Dustin

1

No recomendaría mensajes de gran tamaño. Si no puede explicar en una oración lo que está haciendo, su compromiso abarca demasiado cambio. Use git rebase -i y divida su confirmación si ya se ha comprometido. Si aún no ha confirmado los cambios, use git add -p en el escenario en partes pequeñas y luego realice commits más pequeños.

Un historial de cambios granulares como este ayudará a las fusiones y rebases posteriores. También lo ayudará a enlazar con su rastreador de problemas. Si tiene 2 o más tickets abordados, será más difícil descifrar a qué ticket se dirigió cada cambio en la confirmación.

+1

Los cambios no triviales a menudo requieren una explicación sustancial, particularmente si uno está trabajando en un proyecto grande que tiene que preservar la semántica de un documento de especificación externo y/o interno. Tuve que escribir cuatro mensajes de compromiso de párrafo para cambiar una única macro en la fuente de MPICH porque tenía que explicar el comportamiento estándar de MPI Y la macro semántica interna para justificar el cambio. Si no hubiera hecho esto, algún futuro desarrollador desperdiciaría una cantidad excesiva de tiempo redescubriendo esa información. No me gustaría votar si pudiera ... – Jeff

+0

Gracias, @Jeff. El software es un mundo tan grande que realmente no se trata de reglas, sino más bien de directrices. A veces simplemente no es posible aplicarlos. –

+0

Estoy de acuerdo con la idea de compromisos atómicos (que es la razón por la que generalmente no me gusta el aplastamiento). Sin embargo, creo que es mejor equivocarnos al proporcionar más contexto de lo necesario en lugar de menos. Además, si el trabajo no se realizó como confirmaciones atómicas, no recomendaría dividirlas después como sugieres. Esto aumenta el riesgo de cometer un código incompleto. –