Git Hooks sind einfach, um Ihr Repository zu verwalten

Git Es ist ein großartiges Werkzeug. Sie können damit nicht nur Änderungen in einer Datei über Hooks verfolgen, sondern auch nahtlos mit anderen Personen zusammenarbeiten. Git ist in dieser Hinsicht eines der Werkzeuge, das die Entwicklung von FOSS vorangetrieben hat. Eines der größten Probleme mit Git ist jedoch, dass die Verwaltung Ihrer Repositories Zeit und Mühe kostet. Das Ausführen und Synchronisieren dieser Repositorys kann beispielsweise zwei bis drei Git-Befehle erfordern. Das macht ihre Verwaltung nicht nur mühsam, sondern auch anfällig für Benutzerfehler. Hier zeigen wir Ihnen einige einfache, aber leistungsstarke Git-Hooks zur besseren Verwaltung Ihrer Repositories.

Einfache Git-Hooks zum Verwalten Ihres Repositorys – %categories

Was sind Git-Hooks?

Im Kern ist git-hook ein flexibler Unterbefehl, mit dem Sie benutzerdefinierte Skripts erstellen können, die ausgeführt werden, wenn Git eine Aktion im Repository ausführt. Beispielsweise ist es möglich, Hook zu verwenden, um Ihr Repository automatisch auf Stilfehler zu überprüfen, bevor Sie es festschreiben.

Einfache Git-Hooks zum Verwalten Ihres Repositorys – %categories

Der Hook-Unterbefehl funktioniert, indem er den Ordner „hooks“ im Verzeichnis „.git“ des Repositorys liest. Dieser Ordner enthält eine Reihe vorgefertigter Dateien, die ein Beispielskript für jede Git-Aktion bereitstellen, die Sie automatisch ausführen können.

Einfache Git-Hooks zum Verwalten Ihres Repositorys – %categories

Größtenteils können Sie Git-Hooks in jeder beliebigen Skriptsprache schreiben. Dies macht es unglaublich flexibel und für jeden Softwareentwickler zugänglich.

1. Verhindern Sie das Pushen zum Master

Einer der häufigsten Fehler, den ein Benutzer in Git macht, besteht darin, einen Commit aus dem Entwicklungszweig direkt in den Master zu verschieben. Dies kann unglaublich frustrierend sein, wenn Sie Github verwenden, um Ihre Projekte zu verfolgen und zu pflegen.

Einfache Git-Hooks zum Verwalten Ihres Repositorys – %categories

Sie können dieses Problem verhindern, indem Sie einen Pre-Push erstellen, der jedes Mal überprüft und bestätigt, wenn Sie versuchen, ein Repository aus dem Master-Branch zu pushen.

  1. Gehe zu Git-Repository die Sie schützen möchten.Einfache Git-Hooks zum Verwalten Ihres Repositorys – %categories
  2. Erstellen Git-Hook-Datei mit Ihrem Skript-Korrekturleser. Da muss dieser Hook vorher ausgeführt werden "Zahlen" , dann müssen Sie einen Hook erstellen "vorausbezahlt":
    Berühren Sie .git/hooks/pre-push
  3. Öffnen Hook-Datei neu in Texteditor.
    nano .git/hooks/pre-push
  4. Drinnen schreiben Haken "vor der Zahlung". Das Folgende ist beispielsweise ein Skript, das Sie um eine Bestätigung bittet, wenn Sie vom Master-Branch pushen:
    #!/bin/sh protect='master' current=$(git symbolic-ref HEAD | sed -e 's,.*/\(.*\),\1,') if [ $protect = $current ] Lesen Sie dann -p "Push zum Master bestätigen? Y/n." -n 1 -r < /dev/tty echo if echo $REPLY | grep -E '^[Yy]$' > /dev/null then exit 0 fi exit 1 else exit 0 fi
  5. speichern neuer Haken. in einem nano Tun Sie dies, indem Sie drücken Strg + O , Dann Strg + X.Einfache Git-Hooks zum Verwalten Ihres Repositorys – %categories
  6. Führen Sie den folgenden Befehl aus, um sicherzustellen, dass Git den neuen Hook ausführen kann.
chmod +x .git/hooks/pre-push

2. Pushes zum Master-Zweig ablehnen

Abgesehen davon, dass Sie verhindern, dass Sie zum Master gepusht werden, können Sie auch einen Hook auf der Serverseite erstellen, der alle Pushs zu seinem Master-Zweig ablehnt. Dies ist unglaublich nützlich, wenn Sie ein Repository mit mehreren Entwicklern teilen.

Lesen Sie auch:  So verbergen Sie eine Geschichte vor jemandem auf Facebook

Einfache Git-Hooks zum Verwalten Ihres Repositorys – %categories

Beheben Sie dies, indem Sie einen „Pre-Receive“-Hook erstellen, der automatisch verhindert, dass eingeschränkte Benutzer zum Master-Branch gepusht werden.

  1. Erstellen Git-Hook-Datei für „Pre-Akquisition“ in Ihrem entfernten Lager.
    Berühren Sie .git/hooks/pre-receive
  2. öffne das Datei.
    nano .git/hooks/pre-receive
  3. Ablehnungstext hinzufügen Haken „Vorkasse“. Beispielsweise sollten die folgenden Codezeilen sofort einsatzbereit sein:
    #!/bin/sh branch=$(git symbolic-ref HEAD | sed -e 's,.*/\(.*\),\1,') blacklist=(alice bob) if [[ ${blacklist[ *]} =~ $USER ]]; then if [ "$branch" == "master" ]; dann echo "Du darfst keine Änderungen in diesem Zweig festschreiben" Ausgang 1 fi fi
  4. Speichern Sie Ihre neue Hook-Datei. In meinem Fall muss ich Strg+O und dann Strg+X drücken, um die Datei zu speichern.
  5. speichern Hook-Text und umsetzbar machen.
chmod +x .git/hooks/pre-receive

Tipp: Sie können auch den Git-Alias ​​verwenden, um die Nutzung von Git effizienter zu gestalten.

3. Sperren Sie das Repository gegen Rebasing

Ein weiterer häufiger Fehler, den ein Benutzer in Git macht, ist das Zurücksetzen des derzeit aktiven Zweigs. Dies kann ein frustrierendes Problem sein, wenn Sie an einem Repository mit vielen Mitwirkenden arbeiten, da durch Refactoring von anderen Benutzern vorgenommene Commits entfernt werden.

Einfache Git-Hooks zum Verwalten Ihres Repositorys – %categories

Sie können dieses Problem verhindern, indem Sie einen 'pre-re-etablieren'-Hook erstellen, der überprüft, ob der aktuelle Zweig geschlossen ist oder nicht.

  1. erstellt „pre-rebase“-Datei in einem Verzeichnis „.git/hooks“:
    Berühren Sie .git/hooks/pre-rebase
  2. öffne das Datei zum Bearbeiten.
    nano .git/hooks/pre-rebase
  3. Fügen Sie das Skript hinzu zurückweisen Eintreten neue Hook-Datei.
    #!/bin/sh branch="$2" [ -n "$branch" ] || branch=$(git rev-parse --abbrev-ref HEAD) lock="branch.${branch}.rebaselock" if [ "$(git config --bool "$lock")" = true ]; then echo "pre-rebase hook: \"$lock\" is set to true. Rebase weigern." Ausgang 1 fi
  4. speichern Hook-Datei neu und lauffähig machen.
chmod +x .git/hooks/pre-rebase

4. Erzwingen Sie eine Stil- und Syntaxprüfung für Ihren Code

Eine der nützlichsten Verwendungen von Hook Git ist das Einhängen in Linter-Code. Dies ist ein einfaches Programm, das überprüft, ob Ihr Code dem Stil und Format des Projekts entspricht.

Lesen Sie auch:  So fügen Sie einen fehlenden Ort oder eine fehlende Adresse in Google Maps hinzu

Einfache Git-Hooks zum Verwalten Ihres Repositorys – %categories

  1. sich beziehen linter zu Ihrem Git-Repository erstellen Sie zunächst eine Hook-Datei "Vorherige Verpflichtung".
    Berühren Sie .git/hooks/pre-commit
  2. Installieren linter passend zur Sprache Ihres Projekts. In diesem Fall verwende ich „Muschelcheck“ So analysieren Sie meinen Bash-Code:
    sudo apt installiere Shellcheck
  3. Öffnen Hook-Datei new und fügen Sie das folgende Skript hinzu.
    #!/bin/bash for file in $(git diff --cached --name-only --diff-filter=AM | grep -E '\.sh$') do shellcheck "$file" # Run the linter for jede neue Datei. wenn [$? -ne 0 ]; then exit 1 # Beenden Sie das Commit, wenn der Linter fehlschlägt. fi fertig
  4. speichern Hook-Datei neu und ausführbar machen:
    chmod +x .git/hooks/pre-commit

5. Benutzer automatisch über Repository-Änderungen benachrichtigen

Schließlich können Sie auch einen Git-Hook erstellen, der automatisch eine E-Mail sendet, wenn Ihr Repository einen neuen Commit erhält. Dies ist nützlich, wenn Sie ein einfaches Benachrichtigungssystem für Ihr Repository erstellen möchten.

  1. Erstellen Hooks-Datei „post-receiver“ in einem Verzeichnis .git / Haken in Ihrem Lager:
    Berühren Sie .git/hooks/post-receive
  2. Öffnen Git-Hook-Datei neu und geben Sie folgendes Skript ein:
    #!/bin/sh commit_message=$(git log -1 --pretty=%B) users=("[E-Mail geschützt] ""[E-Mail geschützt] ""[E-Mail geschützt] “) für Benutzer in „${users[@]}“; sende mail -s „New Commit: $commit_message“ $user < /dev/null fertig
  3. speichern Hook-Datei neu und lauffähig machen.
    chmod +x .git/hooks/post-receive

Häufig gestellte Fragen

F1: Kann ich Git-Hooks in einer kompilierten Sprache wie C schreiben?

Lesen Sie auch:  So sehen Sie gelöschte Freunde auf Snapchat

Antworten. Eine der größten Einschränkungen von Git Hooks besteht darin, dass Sie eine Sprache verwenden müssen, die Sie direkt vom Terminal aus ausführen können. Das bedeutet, dass Git-Hooks keine lokalisierten Sprachen für ihre Skripte unterstützen. Beispielsweise können Sie neue Git-Hooks mit Python oder Shell und nicht mit C oder C++ erstellen.

F2: Ist es möglich, mehrere Hooks im selben Git-Repository auszuführen?

Antworten. Ja. Während die obigen Beispiele Hooks als separate individuelle Features zeigen, können Sie sie leicht miteinander mischen, um Ihren eigenen einzigartigen Workflow zu erstellen, was Git-Hooks unglaublich flexibel und an jede Codierungssituation anpassbar macht. Sie können beispielsweise sowohl den „Prevent Push to Master“-Hook als auch den „Syntax Check“-Precommit-Hook in Ihrem Repository verwenden.

F3. Warum senden Git-Hooks keine E-Mails an Benutzer?

Antworten. Dieses Problem wird höchstwahrscheinlich dadurch verursacht, dass Ihr Remote-Server keine ausgehenden E-Mails ordnungsgemäß senden kann. Um dies zu beheben, stellen Sie sicher, dass Ihr Remote-Server sicher ist und über einen E-Mail-Zustellungsagenten verfügt, der in Verbindung mit einer SMTP-Domäne arbeitet.

Sie können auch mögen