generar ChangeLog en org-mode usando git log

index | OSiUX | archive | charlas | docs | dot | git | links | plt | tty | uml

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