25 Punkte von ironlung 2023-06-14 | 2 Kommentare | Auf WhatsApp teilen

*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 Befehl npx husky install in 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 commitlint geprüft
  1. Die Commit-Konvention im Commitlint-Format definieren
  • Auf Basis der Grundstruktur der Commit-Message werden in der Datei commitlint.config.ts die jeweils zum Team passenden Eigenschaften definiert
  1. Commitlint in Husky registrieren
  • Den commit-msg-Hook mit dem Befehl commitlint registrieren. Das Skript kommt in die Datei .husky/commit-msg
  1. 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

 
yangeok 2023-06-20

Es ist auch gut, es zusammen mit commitizen zu verwenden.

 
roxie 2023-06-24

Danke für das tolle Tool