Ich habe einen Git-Post-Commit-Hook geschrieben und er funktioniert korrekt. Ich möchte diesen Hook jedoch hinzufügen, um ihn auf alle aktuellen (und zukünftigen) Git-Repositorys anzuwenden, an denen ich arbeite. Ich habe versucht, den Hook zu meinem ~/.git/hooks/
anstatt im Hooks-Verzeichnis im Projektverzeichnis hinzuzufügen , dies schien jedoch nicht zu funktionieren.
Gibt es eine Möglichkeit, globale Git-Hooks zu erstellen, die für alle Repositorys auf meinem System gelten (ohne sie in jedes Projektverzeichnis kopieren zu müssen)? Wenn nicht, was wäre die beste Lösung für die Zukunft - vielleicht eine Git-Init-Vorlage?
Antworten:
Mit git 2.9+ (Juni 2016) würden Sie nur Folgendes tun:
Siehe " Standard-Git-Hooks ändern ": Dies wurde durchgeführt, um zentralisierte Hooks zu verwalten.
quelle
/.git/hooks/pre_commit
Kann ich innerhalb des Repos darauf hinweisen?Ab Git 1.7.1 können Sie init.templatedir in Ihrer gitconfig festlegen, um git mitzuteilen, wo nach Vorlagen gesucht werden soll.
Stellen Sie es so ein:
Anschließend verwenden neue Repositorys, die Sie erstellen oder klonen, dieses Verzeichnis für Vorlagen. Platzieren Sie die gewünschten Haken
~/.git_template/hooks
. Bestehende Repositorys können mit den richtigen Vorlagen neu initialisiert werden, indem siegit init
im selben Verzeichnis ausgeführt.git
werden, in dem sie sich befinden.Bei Git-Versionen, die älter als 1.7.1 sind,
git init --template ~/.git_template
funktioniert das Ausführen , wenn Sie wie ich sind und Ihr.git_template
Verzeichnis zusammen mit den übrigen Punktedateien verwalten möchten . Sie können auch die$GIT_TEMPLATE_DIR
Umgebung verwenden, um festzustellen,git init
wo sich Ihr Vorlagenverzeichnis befindet.quelle
git init
eines vorhandenen Repos esgit init
die Hooks für mich nicht aktualisiert. Es scheint, dass bereits vorhandene Dateien nicht überschrieben werden. stackoverflow.com/questions/10791486/ . Stattdessen müssen Sie zuerst die alten Hook-Dateien entfernen.Wenn Sie sie überall auf Ihrem System haben möchten (einschließlich der Benutzer neben Ihnen), können Sie den Inhalt des installierten Vorlagenverzeichnisses ändern - diese befinden sich dort
$PREFIX/share/git-core/templates/hooks
, wo$PREFIX
wahrscheinlich/usr/local
oder/usr
.Wenn Sie möchten, dass dies nur für Sie ist, dann ist die einfachste Sache die
--template
Option von git-init. Sie können problemlos ein persönliches Vorlagenverzeichnis behalten, das Symlinks zu der installierten Version der Standardeinstellungen enthält, die Sie beibehalten möchten (einzelne Hooks, das Info-Verzeichnis ...), und dann Ihren eigenen Inhalthooks/post-commit
und alles andere, was Sie anpassen möchten.quelle
git init
erneut ausgeführt und meinen neuen Hook hinzugefügt./Applications/SourceTree.app/Contents/Resources/git_local/share/git-core/templates/hooks
mingw64\share\templates\hooks
(oder mingw32 für 32-Bit)mingw64\share\git-core\templates\hooks
(gfw 2.25)Ein minimalistischer Ansatz besteht darin, ein
git_hooks/
Verzeichnis in Ihrem Repository zu erstellen , um die Hooks zu verfolgen, die Sie für dieses Projekt schreiben, zukünftige Benutzer darauf aufmerksam zu machen, indem Sie es in a erwähnenREADME
, und sich darauf zu verlassen, dass sie nach dem Klonen das Richtige tun. Ich habe eine Weile darüber nachgedacht und einen inkrementellen Ansatz gewählt. Auf der anderen Seite könnte ich ein Werkzeug wie Git-Hooks verwenden .quelle