DESCARGO DE RESPONSABILIDAD: Soy el autor de gitchangelog del que hablaré a continuación.
TL; DR: es posible que desee comprobar el registro de cambios propio de gitchangelog o la salida ascii que generó el anterior.
Si desea generar un registro de cambios a partir de su historial de git, probablemente tenga que considerar:
- El formato de salida . (Puro ASCII personalizado, tipo de registro de cambios de Debian, Markdow, ReST ...)
- algunos filtros de confirmación (es probable que no desee ver todos los errores tipográficos o cosméticos que aparecen en su registro de cambios)
- algunos confirman las disputas de texto antes de ser incluidas en el registro de cambios. (Garantizar la normalización de los mensajes con una primera letra en mayúscula o un punto final, pero también podría eliminar algún marcado especial en el resumen)
- ¿Es compatible tu historial de git ? La fusión, el etiquetado, no siempre es tan fácil de soportar por la mayoría de las herramientas. Depende de cómo gestiones tu historial.
Opcionalmente, es posible que desee alguna categorización (cosas nuevas, cambios, correcciones de errores) ...
Con todo esto en mente, creé y utilizo gitchangelog . Está destinado a aprovechar una convención de mensajes de compromiso de git para lograr todos los objetivos anteriores.
Tener una convención de mensajes de compromiso es obligatorio para crear un buen registro de cambios (con o sin usar gitchangelog
).
convención de mensaje de compromiso
Las siguientes son sugerencias de lo que podría ser útil pensar en agregar en sus mensajes de confirmación.
Es posible que desee separar aproximadamente sus confirmaciones en grandes secciones:
- por intención (por ejemplo: nuevo, arreglar, cambiar ...)
- por objeto (por ejemplo: doc, packaging, código ...)
- por audiencia (por ejemplo: dev, tester, usuarios ...)
Además, es posible que desee etiquetar algunas confirmaciones:
- como confirmaciones "menores" que no deberían quedar desactualizadas en su registro de cambios (cambios cosméticos, pequeños errores tipográficos en los comentarios ...)
- como "refactor" si realmente no tiene ningún cambio significativo en las características. Por lo tanto, esto no debería ser también parte del registro de cambios que se muestra al usuario final, por ejemplo, pero podría ser de algún interés si tiene un registro de cambios de desarrollador.
- también puede etiquetar con "api" para marcar cambios en la API o cosas nuevas de la API ...
- ... etc ...
Intente escribir su mensaje de confirmación dirigiéndose a los usuarios (funcionalidad) con la mayor frecuencia posible.
ejemplo
Esto es estándar git log --oneline
para mostrar cómo se puede almacenar esta información ::
* 5a39f73 fix: encoding issues with non-ascii chars.
* a60d77a new: pkg: added ``.travis.yml`` for automated tests.
* 57129ba new: much greater performance on big repository by issuing only one shell command for all the commits. (fixes #7)
* 6b4b267 chg: dev: refactored out the formatting characters from GIT.
* 197b069 new: dev: reverse ``natural`` order to get reverse chronological order by default. !refactor
* 6b891bc new: add utf-8 encoding declaration !minor
Entonces, si te has dado cuenta, el formato que elegí es:
{new|chg|fix}: [{dev|pkg}:] COMMIT_MESSAGE [!{minor|refactor} ... ]
Para ver un resultado de salida real, puede mirar al final de la página PyPI de gitchangelog
Para ver una documentación completa de mi convención de mensajes de confirmación, puede ver el archivo de referencia gitchangelog.rc.reference
Cómo generar un registro de cambios exquisito a partir de esto
Entonces, es bastante fácil hacer un registro de cambios completo. Podrías hacer tu propio script bastante rápido o usarlo gitchangelog
.
gitchangelog
generará un registro de cambios completo (con soporte de seccionamiento como New
, Fix
...), y es razonablemente configurable para sus propias convenciones de compromiso. Es compatible con cualquier tipo de producción gracias a templating a través Mustache
, Mako templating
y tiene un motor de herencia predeterminado escrito en Python prima; Todos los 3 motores actuales tienen ejemplos de cómo usarlos y pueden generar registros de cambios como el que se muestra en la página PyPI de gitchangelog.
Estoy seguro de que sé que hay un montón de otros git log
a changelog
herramientas por ahí también.
--graph
, que muestra visualmente en qué ramas están las confirmaciones.