generar *ChangeLog* en `org-mode` usando `git log`
- AUTHOR: Osiris Alejandro Gomez
- EMAIL: osiux@osiux.com
- DATE: 2021-02-01 18:36
[1]
porqué registrar los cambios?
Estoy en otro intento por darle algo de continuidad a mi desantentido *blog* y para cambiar un poco la estrategia, ahora estoy comenzando a escribir los *posts* y publicarlos así como estén, llenos de errores e inconclusos, la idea es ir mejorándolos poco a poco, y por esto es una buena práctica ir registrando los cambios en un *ChangeLog* para ver el progreso, cómo mejoró y se fue corrigiendo.
registrar los cambios manualmente es tedioso!
Algunos pocos *posts*, tenían un *ChangeLog* manual y la verdad es que es una tarea tediosa y propensa a errores, pero se puede automatizar, ahora bien lo que más me interesaba era que cada entrada del *ChangeLog* apunte al *commit* del cambio a los efectos de visualizar fácilmente el `diff`, pero esto conlleva un problema, el *hash* del *commit* del cambio debe estar dentro del cambio y no es posible, a menos que en el *subject* del *commit* escriba el mensaje pensando que va a ser una línea del *ChangeLog*, y respetando el *commit* atómico a un único *post* debería luego poder realizar un *commit* con todos los *commits* que conforman el *ChangeLog*.
`git log` al rescate!
La ventaja de esta idea es que puedo crear un *script* `bash` que reciba como parámetro el nombre de archivo del *post* e invoque a `git log` para obtener el historial de cambios y construya el *ChangeLog* y lo inserte dentro del mismo archivo del *post*, de esta manera podría generar *ChangeLog* para cada archivo del *blog* a futuro y del pasado.
`git-log-org-changelog`
El *script* inicial es bastante simple y por ahora asume que el título `** ChangeLog` es la última sección de un archivo, lo busca, lo trunca, genera el historial de cambios y lo concatena, obviamente en caso de no existir, simplemente lo añade.
Para evitar incluir cambios recursivamente innecesarios, los *commits* específicos de *ChangeLog* irán con el *subject* `ChangeLog: filename.gmi`
automatizando el *ChangeLog*
De momento `git-log-org-changelog` ^1[2] esta a prueba, viendo que casos de usos se presentan para mejorarlo, pero muy posiblemente lo voy a invocar desde del *hook* `post-commit` para automatizar por completo su generación totalmente desatendida.
tal vez te interese leer
- `git-tag-summary` vs `git-tag-readme`[3]
- `git-tag-changelog`[4]
- cambiar la fecha de un *commit* usando `GIT_COMMITER_DATE`[5]
- git `post-commit` *ChangeLog*[6]
ChangeLog
- `2023-07-02 20:50`[7] agregar imagen y links relacionados y actualizar OpenGraph en generar *ChangeLog* en `org-mode` usando `git log`
- `2023-07-02 19:28`[8] agregar DESCRIPTION, KEYWORDS, corregir sintaxis, agregar footnotes
- `2022-11-13 20:39`[9] agregar y actualizar tags OpenGraph
- `2021-02-04 19:50`[10] corrijo link a script `git-log-org-changelog`
- `2021-02-01 19:33`[11] agrego generar *ChangeLog* en `org-mode` usando `git log`