Methoden zur Automatisierung von Git-Commit-Messages
(insight.infograb.net)*Wenn das Schreiben von Git-Commit-Messages zur Qual wird
- Commit-Messages mit Emojis und Issue-Nummern sind leicht nachzuverfolgen und sehen gut aus
- Aber je länger und komplexer die Commit-Message ist, desto umständlicher wird sie jedes Mal und desto häufiger passieren Fehler
- Jedes Mal das passende Emoji zu finden, ist mühsam
*Commit-Messages mit Git Hooks erzwingen
- Git Hooks sind eine Funktion, die von uns definierte Skripte ausführt, wenn Git-bezogene Ereignisse auftreten
- Diese Funktion ist in Server-Hooks und Client-Hooks unterteilt
*Server-Hooks: die Push-Rule-Funktion von Git nutzen
- Wenn man in den
pre-receive-Hook ein Skript zur Prüfung von Commit-Messages einfügt, wird verhindert, dass auf den Server gepusht wird - In GitLab lassen sich Commit-Messages mit der Push-Rule-Funktion per regulärem Ausdruck prüfen
- Wenn eine Commit-Message erkannt wird, die gegen den regulären Ausdruck verstößt, wird der Push abgelehnt und ein Fehler ausgelöst
*Client-Hooks: vor dem Push vorab prüfen
- Im
commit-msg-Hook, also noch bevor der Commit endgültig abgeschlossen wird, kann man ein Skript zur Prüfung der Commit-Message erstellen - Wenn man die Commit-Message ändern möchte, schreibt man das entsprechende Skript in den
prepare-commit-msg-Hook
*Die Methode von Infograb zur Automatisierung von Commit-Messages
- Mit Husky und Commitlint wurde ein System zur Automatisierung von Commit-Messages aufgebaut
- Husky ist ein npm-Modul, das beim Verwalten von Git Hooks hilft. Es erstellt Hook-Dateien mit Skripten im Verzeichnis
.husky. Anschließend wird das Skript mit dem Befehlnpx husky installin Git registriert - Commitlint ist ein Tool, mit dem sich Commit-Konventionen einfach verwalten und Commit-Messages prüfen lassen. Die vom Team festgelegten Commit-Konventionen werden im JSON-Format beschrieben. Danach wird die Message mit dem Befehl
commitlintgeprüft
- Die Commit-Konvention im Commitlint-Format definieren
- Auf Basis der Grundstruktur der Commit-Message werden in der Datei
commitlint.config.tsdie jeweils zum Team passenden Eigenschaften definiert
- Commitlint in Husky registrieren
- Den
commit-msg-Hook mit dem Befehlcommitlintregistrieren. Das Skript kommt in die Datei.husky/commit-msg
- Automatisierung hinzufügen
- Aufgaben wie das Hinzufügen von Emojis oder das Einfügen von Issue-Nummern automatisieren
- Im Produktteam von Infograb ist es so eingerichtet, dass beim Eingeben des Typs (
feat,fix) automatisch ein Emoji ergänzt wird, der erste Buchstabe des Typs automatisch in einen Großbuchstaben geändert wird und bei einer vorhandenen Issue-Nummer im Branch diese automatisch im Footer ergänzt wird - Das Automatisierungsskript kann in den
prepare-commit-msg-Hook eingefügt werden
2 Kommentare
Es ist auch gut, es zusammen mit commitizen zu verwenden.
Danke für das tolle Tool