Abstract: Python-Skript zur automatisierten Erzeugung eines Changelogs (Markdown) aus einem git-Repository (Conventional commits).
Work-in-progress
Verantwortliche: Daniel Fütterer, M.A. (Wissenschaftlicher Mitarbeiter), Prof. Dr. Marlon Schumacher
Ressourcen: Software Repository
Die Idee zum Skript enstand aus dem Bedarf, bei öffentlichen Repositories einen unkomplizierten Weg zu finden, Entwicklungsvorgänge anhand eines Logs (Changelog) zu dokumentieren und sauber zu formatieren. Mit Hilfe der Verwendung von Conventional Commits ist es möglich, das zu automatisieren. Conventional Commits ist ein Regelwerk, das einen einheitlichen Aufbau für sämtliche Commit Messages eines Repositorys vorgibt.
Ziel ist es, diese verschiedenen Parameter (type: Kategorie von Commits, scope: deren Umfangsbereich, tag: Versionsnummern, hash etc.) zu erfassen und strukturiert darzustellen.
Das Skript steht in Python, ist objektorientiert implementiert und noch nicht veröffentlicht, mit ihm erzeugte Changelogs sind aber bereits in Verwendung, z.B. Binauralix (Applikation zur Binauralisierung beliebiger Lautsprecher Konfigurationen) von M. Schumacher.
# Beispiel-Changelog (vgl. Beitragsbild)
## Version 1.0
### Features - *scope*
### Fixes - *scope*
### Other - *scope*
### Non-conform commits - full message (short-hash)
Commits werden nach den Types der conventional commits Syntax sortiert: feature und fix werden separat aufgezählt, andere Typen werden unter other gesammelt. Innerhalb der Types wird nach scope untersortiert; diese werden durch das Skript ausgelesen und gegliedert. Commits, die nicht nach der cc-Syntax erfassbar sind, werden nicht verworfen, sondern am Ende gesammelt. Diese Gruppierung gilt jeweils für eine Versionsnummer. In der aktuellen Entwicklungsversion sind diese Einstellungen noch statisch, in Zukunft sollen sie dynamisch über Kommandozeilenparameter flexibler gestaltet werden können. Das Programm wird ohne Parameter aufgerufen:
python changelog-generator.py
Daraufhin fragt das Skript den Pfad zum git-Repository ab und wo der Changelog gespeichert werden soll.