Changelogs gehören zu den Dokumenten, die in vielen Projekten zu kurz kommen. Hans-Helge Bletsch hat dafür das quelloffene PHP-CLI-Werkzeug Changelogger veröffentlicht, das im September 2019 erschienen ist. Es stammt aus der Arbeit beim SaaS-Anbieter ChurchTools und verlagert jeden Changelog-Eintrag in eine eigene YAML-Datei im Repository, statt alle Änderungen fortlaufend in eine einzige CHANGELOG.md zu schreiben.
Hintergrund ist der Release-Alltag im Team: In einem Sprint sammeln sich Bug Fixes, Security-Themen, neue Funktionen und Library-Updates. Bei ChurchTools lagen die Beschreibungen zunächst in den GitLab-Issues, sodass vor jedem Release jemand die Einträge zusammensuchen und per Copy und Paste zusammenführen musste. Das neue GitLab-Projekt Changelogger übernimmt genau diesen Schritt.
Eine Datei pro Änderung statt Merge-Konflikte
Changelogger legt jede Änderung als eigene Datei im Ordner changelogs/unreleased ab. Der entscheidende Nebeneffekt: Mehrere Entwickler arbeiten nicht gleichzeitig an derselben Zeile der CHANGELOG.md, wodurch die typischen Merge-Konflikte am Sprint-Anfang entfallen. Für den Reviewer ist zudem auf einen Blick erkennbar, ob ein Merge Request einen Changelog-Eintrag mitbringt oder ob er fehlt. Vorbild ist die in den GitLab-Entwicklerdokumentationen beschriebene Vorgehensweise mit YAML-Dateien pro Merge Request.
Befehle für Eintrag, Release und Rückbau
Im Arbeitsalltag stehen drei Kommandos im Zentrum. changelogger new erzeugt einen neuen Eintrag, changelogger show listet alle unveröffentlichten Änderungen und changelogger release fasst sie beim Release eines Tags sortiert in der CHANGELOG.md zusammen, bevor der Ordner für die nächste Version geleert wird. Die Struktur folgt der Vorlage von keepachangelog.com, die der Podcast The Changelog zusammen mit ihrem Autor Oliver Lacan bekannt gemacht hatte. Bewusste Designentscheidung ist dabei der Verzicht auf Git-Logs: Commit-Messages hält das Projekt für Entwicklerinformation, nicht für nutzbare Changelog-Texte, weil auch Endnutzer die Änderungen verstehen sollen.
Installiert wird Changelogger als Dev-Dependency oder global über Composer, alternativ steht eine PHAR-Datei bereit. Obwohl das Werkzeug in PHP geschrieben ist, lässt es sich wie viele CLI-Tools in Projekten jeder Sprache einsetzen. Zum Start war der Stand ausdrücklich als Beta markiert; das Repository unter Apache-Lizenz 2.0 führte bereits mehrere Versionen von v0.0.2 bis v0.1.1 und wurde auch danach weiter gepflegt.

