Automatisieren Sie Ihren Workflow mit Git Hooks

Bildnachweis: Atlass

Was sind Git Hooks?

Git-Hooks sind Skripte, die vor bestimmten Ereignissen wie Commit, Push, Rebase usw. ausgeführt werden. Da sie ereignisbasiert sind, überprüft git bei der Ausführung bestimmter Git-Befehle die Hooks im Git-Repository, um festzustellen, ob ein zugehöriges Skript vorhanden ist Lauf. Die Hooks befinden sich im Verzeichnis .git / hooks.

CD .git / Hooks

Wenn Sie die Dateien in diesem Verzeichnis auflisten, werden die folgenden Beispiel-Hooks angezeigt.

1. applypatch-msg.sample
2. commit-msg.sample
3. post-update.sample
4. Probe vor dem Anwenden des Patches
5. pre-commit.sample
6. Pre-Push-Probe
7. pre-rebase.sample
8. Probe vorab empfangen
9. prepare-commit-msg.sample
10.update.sample

So verbessern Sie Ihren Git-Workflow

Wenn Sie jemals an einem Open-Source-Projekt mit vielen Mitwirkenden gearbeitet haben, oder wenn Sie der technische Teamleiter eines Projekts sind, und Sie nach Möglichkeiten suchen, den Git-Workflow Ihres Teams so zu verbessern, dass bestimmte Workflow-Fehler bei Entwicklern auftreten neigen dazu, gemieden zu werden, bevor sie verpflichtet werden, vielleicht sind Sie ein Entwickler, der sein A-Spiel immer bei 100 haben möchte, vielleicht ist jetzt ein guter Zeitpunkt, um Git-Hooks zu erkunden.

In diesem Artikel zeige ich Ihnen, wie Sie mit dem Pre-Push-Git-Hook Tests durchführen, bevor Sie den Code an Ihren Remote-Zweig senden. In diesem Beitrag werde ich PHP verwenden.

Wenn Sie ein Mac-Buch verwenden, folgen Sie den Anweisungen. Wenn Sie einen Windows-PC verwenden, unterscheiden sich die Shell-Befehle. Windows-Befehle werden in diesem Beitrag nicht bereitgestellt.

Klonen Sie dieses Repository. Es enthält ein mit Laravel erstelltes Projekt und einige mit PHPUnit geschriebene Komponententests. Sobald Sie das geklont und eingerichtet haben, ändern Sie das Verzeichnis in das Git Hooks-Verzeichnis und erstellen Sie eine Pre-Push-Datei. Öffnen Sie dies mit Ihrem bevorzugten Texteditor, ich benutze Atom.

CD .git / Hooks
Berühren Sie Pre-Push
atom pre-push // Öffne diese Datei mit einem beliebigen Texteditor

Im Idealfall möchte ich in der Lage sein, die Tests auszuführen, bevor der Code an meine Remote-Zweigstelle gesendet wird. Wenn das Hook-Skript mit 0 beendet wird, ist alles in Ordnung und git schiebt den Code weiter an meinen Remote-Zweig. Wenn es mit einem Code ungleich Null beendet wird, stoppt git den Vorgang.

Zeile 7:
Die exec-Funktion löst den Befehl zum Ausführen der Tests aus, in diesem Fall Vendor / Bin / Phpunit.

Wenn Sie ein anderes Testframework wie Codeception verwenden, sollten Sie vendor / bin / phpunit durch den spezifischen Befehl ersetzen, um die Tests in dem von Ihnen gewählten Framework auszuführen. Der Inhalt der Ausgabevariablen ist ein Array, das mit jeder Ausgabezeile des Befehls gefüllt wird.

Zeile 9:
Wenn der Exit-Code ungleich 0 ist, wurde der Test nicht erfolgreich ausgeführt. Sie können den Inhalt der Ausgabevariablen untersuchen und bestimmen, welches Element des Arrays auf Ihrem Terminal angezeigt werden soll. Ich habe den Artikel bei Index 14 angezeigt, der eine Zusammenfassung der Tests, Bestehens und Nichtbestehens zeigt. Dieser Teil liegt ganz bei Ihnen. Sie können alles auf dem Terminal ausgeben, was Sie möchten. Die Quintessenz ist, dass Git anhält und das Push-Ereignis sowieso nicht stattfindet.

Zeile 18:
Ein Null-Exit-Code bedeutet, dass wir alle grün sind. Git fährt mit dem Push-Ereignis für Ihre Remote-Niederlassung fort.

Was nun?

Machen Sie die Pre-Push-Datei ausführbar, damit sie als Hook fungiert.

chmod a + x Pre-Push

Nehmen Sie nun eine kleine Änderung an den Dateien im Projekt vor und stellen Sie die geänderten Dateien bereit. Sie können Ihren Code optimieren, um einen Fehler auszulösen, damit wir den Hook sofort in Aktion sehen können.

ga. && gc -m "etwas Kleingeld"
Git-Push-Ursprung der Zweig, auf dem Sie sind

Wenn ein Fehler auftritt, wird auf Ihrem Terminal Folgendes angezeigt:

Was ist der Vorteil davon?

1. Angenommen, Sie haben vergessen, den Testbefehl vor dem Drücken auszuführen. Dies erspart Ihnen die Verlegenheit, die auftreten kann, wenn die Erstellung von github / bitbucket / gitlab fehlschlägt.
2. Führen Sie den Test die ganze Zeit manuell aus, bevor Sie Push-Vorgänge ausführen. Was tun wir mit sich wiederholenden Vorgängen? Das habe ich auch gedacht! Außerdem erhöht es Ihre Produktivität.
3. Sie können wirklich coole Dinge tun, beispielsweise die Berechnung der Gesamtzeit, die für die Ausführung der Tests benötigt wurde. Auf diese Weise können Sie sofort feststellen, ob die Ausführung der Tests zu lange gedauert hat. Es liegt wirklich ganz bei Ihnen.

Sie können auch andere Anwendungsfälle für die verschiedenen Git-Haken untersuchen. Git Hooks ist ein interessantes Tool zur Automatisierung Ihres Workflows. Teilen Sie Ihre Gedanken über den Kommentarbereich unten.

Fanden Sie diesen Beitrag hilfreich? Zeigen Sie bitte etwas Liebe und teilen Sie.