generar /ChangeLog/ en =org-mode= usando =git log=

· osiux's blog


#+LINK_HOME:   index.html
#+INCLUDE:     header.org

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 asi 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 iran con el subject ChangeLog: filename.org

automatizando el ChangeLog #

De momento el script git-log-org-changelog esta a prueba, viendo que casos de usos se presentan para mejoararlo, pero muy posiblemente lo voy a invocar desde del hook post-commit para automatizar por completo su generación totalmente desatendida.

ChangeLog #