Tim Pope argumenta a favor de un estilo particular de mensaje de compromiso de Git en su publicación de blog: http://www.tpope.net/node/106 .
Aquí hay un resumen rápido de lo que recomienda:
- La primera línea tiene 50 caracteres o menos.
- Luego una línea en blanco.
- El texto restante debe estar envuelto en 72 caracteres.
Su publicación en el blog explica las razones de estas recomendaciones (a las que llamaré “formato 50/72” por brevedad):
- En la práctica, algunas herramientas tratan la primera línea como una línea de asunto y el segundo párrafo como un cuerpo (similar al correo electrónico).
git log
no maneja la envoltura, por lo que es difícil de leer si las líneas son demasiado largas.git format-patch --stdout
convierte los commits en correo electrónico, por lo que jugar bien ayuda si tus commits ya están bien envueltos.
Un punto que me gustaría agregar que creo que Tim estaría de acuerdo con:
- El acto de resumir su confirmación es una buena práctica inherente a cualquier sistema de control de versiones. Ayuda a otros (o más tarde a usted) a encontrar compromisos relevantes más rápidamente.
Entonces, tengo un par de ángulos para mi pregunta:
- ¿Qué parte (aproximadamente) de los "líderes de pensamiento" o "usuarios experimentados" de Git adoptan el estilo de formato 50/72? Pregunto esto porque en algún momento los nuevos usuarios no conocen o no les importan las prácticas de la comunidad.
- Para aquellos que no usan este formato, ¿hay alguna razón de principios para usar un estilo de formato diferente? (Tenga en cuenta que estoy buscando un argumento sobre los méritos, no "Nunca he oído hablar de él" o "No me importa").
- Hablando empíricamente, ¿qué porcentaje de repositorios de Git adopta este estilo? (En caso de que alguien quiera hacer un análisis de los repositorios de GitHub ... pista, pista).
Mi punto aquí no es recomendar el estilo 50/72 o derribar otros estilos. (Para ser abierto al respecto, lo prefiero, pero estoy abierto a otras ideas). Solo quiero obtener la justificación de por qué a la gente le gusta o se opone a varios estilos de mensajes de compromiso de Git. (Siéntase libre de mencionar puntos que no se han mencionado también).
Respuestas:
Con respecto a la línea de "resumen" (los 50 en su fórmula), la documentación del kernel de Linux tiene esto que decir :
Dicho esto, parece que los mantenedores del núcleo intentan mantener las cosas alrededor de 50. Aquí hay un histograma de las longitudes de las líneas de resumen en el registro git para el núcleo:
( ver en tamaño completo )
Hay un puñado de confirmaciones que tienen líneas de resumen que son más largas (algunas mucho más largas) de las que puede contener este gráfico sin hacer que la parte interesante parezca una sola línea. (Probablemente haya alguna técnica estadística sofisticada para incorporar esos datos aquí, pero bueno ... :-)
Si quieres ver las longitudes en bruto:
o un histograma basado en texto:
fuente
git shortlog | awk '/^ / {gensub(/[[:space:]]\+\(.*\)$/, "\\1", ""); print length()}'
Con respecto a los "líderes de opinión": Linus defiende enfáticamente el ajuste de línea para el mensaje de compromiso completo:
Las excepciones se refieren principalmente al texto "no en prosa", es decir, texto que no fue escrito por un humano para la confirmación, por ejemplo, mensajes de error del compilador.
fuente
La separación de presentación y datos impulsa mis mensajes de confirmación aquí.
Su mensaje de confirmación no debe estar envuelto en ningún recuento de caracteres y, en su lugar, los saltos de línea deben usarse para separar pensamientos, párrafos, etc., como parte de los datos, no la presentación. En este caso, los "datos" son el mensaje que está tratando de transmitir y la "presentación" es cómo el usuario lo ve.
Utilizo una sola línea de resumen en la parte superior e intento mantenerla corta pero no me limito a un número arbitrario. Sería mucho mejor si Git realmente proporcionara una forma de almacenar mensajes de resumen como una entidad separada del mensaje, pero dado que no es así, tengo que hackear uno y uso el primer salto de línea como delimitador (afortunadamente, muchas herramientas admiten esto significa separar los datos).
Para el mensaje en sí, las nuevas líneas indican algo significativo en los datos. Una nueva línea nueva indica un inicio / interrupción en una lista y una nueva línea nueva indica un nuevo pensamiento / idea.
Así es como se ve en un visor que envuelve suavemente el texto.
Sospecho que el autor de la recomendación de mensaje de compromiso de Git que ha vinculado nunca ha escrito software que antes sea consumido por una amplia gama de usuarios finales en diferentes dispositivos (es decir, un sitio web) desde este momento en la evolución del software / informática es bien sabido que almacenar sus datos con información de presentación codificada es una mala idea en lo que respecta a la experiencia del usuario.
fuente
tig
,git log
ogitk
, y tal vez también con github.\n\n
es un separador de pensamiento.\n*
es un indicador de elemento de lista. La forma en que se representan depende de la vista. El problema con los saltos de línea artificiales es que no están asociados con nada más que la presentación. No se transmite ninguna información relacionada con los datos al poner un salto de línea a 70 caracteres. Mi elección de\n\n
y\n*
es la misma que por qué Markdown lo eligió, porque es una forma de codificación de datos que también parece algo razonable en una vista de texto sin formato.Estoy de acuerdo en que es interesante proponer un estilo particular de trabajo. Sin embargo, a menos que tenga la oportunidad de establecer el estilo, generalmente sigo lo que se ha hecho para mantener la coherencia.
Echando un vistazo a Linux Kernel Commits, el proyecto que comenzó git si lo desea, http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h = bca476139d2ded86be146dae09b06e22548b67f3 , no siguen la regla 50/72. La primera línea tiene 54 caracteres.
Yo diría que la consistencia importa. Configure los medios adecuados para identificar a los usuarios que han realizado confirmaciones (user.name, user.email, especialmente en redes internas. User @ OFFICE-1-PC-10293982811111 no es una dirección de contacto útil). Dependiendo del proyecto, haga que los detalles apropiados estén disponibles en la confirmación. Es difícil decir qué debería ser; pueden ser tareas completadas en un proceso de desarrollo, luego detalles de lo que ha cambiado.
No creo que los usuarios deberían usar git de una manera porque ciertas interfaces para git tratan las confirmaciones de ciertas maneras.
También debo señalar que hay otras formas de encontrar commits. Para empezar,
git diff
te diré qué ha cambiado. También puede hacer cosas comogit log --pretty=format:'%T %cN %ce'
formatear las opciones degit log
.fuente
¿La longitud máxima recomendada del título es realmente 50?
He creído esto durante años, pero como acabo de notar, la documentación de "git commit" en realidad dice
Se podría argumentar que "menos de 50" solo puede significar "no más de 49".
fuente