Einführung in Git-Hooks
Kontinuierliche Lieferung erfordert ein erhebliches Maß an Automatisierung. Sie können nicht kontinuierlich bereitstellen, wenn Sie keine Qualitätscodebasis haben. Es ist der Bereich, in dem Git so gut abschneidet.
Sie können die meisten Überprüfungen in Ihrer Codebasis automatisieren. Bevor Sie den Code in Ihr lokales Repository übernehmen, geschweige denn in das Remote-Repository.
Git Hooks
Git-Hooks sind ein Mechanismus, mit dem Code vor oder nach bestimmten Git-Lebenszyklusereignissen ausgeführt werden kann.
Beispielsweise könnte ein Commit-msg-Ereignis eingebunden werden, um zu überprüfen, ob die Commit-Nachrichtenstruktur dem empfohlenen Format folgt.
Die Hooks können ausführbaren Code sein, einschließlich Shell, PowerShell, Python oder anderen Skripts. Oder es kann sich um eine binäre ausführbare Datei handeln. Alles ist erlaubt!
Die einzigen Kriterien sind, dass Hooks im Ordner ".git/hooks" im Repositorystamm gespeichert werden müssen. Außerdem müssen sie benannt werden, damit sie den verwandten Ereignissen (Git 2.x) entsprechen:
- applypatch-msg
- pre-applypatch
- post-applypatch
- Vorab-Commit
- prepare-commit-msg
- Commit-Nachricht
- Nach dem Commit
- Pre-Rebase
- Nach dem Auschecken
- nach dem Zusammenführen
- Vorabprüfung
- aktualisieren
- Post-Receive
- Nach dem Update
- pre-auto-gc
- Nachbearbeitung
- Vorab-Push
Praktische Anwendungsfälle für die Verwendung von Git-Hooks
Da Git-Hooks Skripts basierend auf bestimmten Ereignissen ausführen, können Sie mit ihnen eine vielzahl von Aktionen ausführen.
Einige Beispiele dafür, wo Sie Hooks verwenden können, um Richtlinien zu erzwingen, Konsistenz sicherzustellen und Ihre Umgebung zu steuern:
- Durchsetzung von Voraussetzungen für die Zusammenführung
- Überprüfen der Zuordnung der Arbeitsaufgaben-ID in Ihrer Commit-Nachricht
- Verhindern, dass Sie & Ihr Team fehlerhaften Code übernehmen kann
- Senden von Benachrichtigungen an den Chatroom Ihres Teams (Teams, Slack, HipChat usw.)
In der nächsten Lektion erfahren Sie, wie Sie Git Hooks implementieren.