Git Hooks¶
Git-Hooks sind Skripte, die bei bestimmten Ereignissen in einem Git-Repository automatisch ausgeführt werden, u. a.:
Befehl |
Hooks |
|---|---|
|
|
|
|
|
|
|
|
|
pre-push, pre-receive, update, post-update, proc-receive, post-receive, push-to-checkout |
Sie können sich entweder in lokalen oder serverseitigen Repositories befinden und erlauben so, Git-Repositories individuell anzupassen und benutzerdefinierte Aktionen auszulösen.
Git Hooks befinden sich im Verzeichnis .git/hooks/. Beim Anlegen eines
Repository werden dort auch bereits einige Beispielskripte angelegt:
.git/hooks
├── applypatch-msg.sample
├── commit-msg.sample
├── fsmonitor-watchman.sample
├── post-update.sample
├── pre-applypatch.sample
├── pre-commit.sample
├── pre-merge-commit.sample
├── pre-push.sample
├── pre-rebase.sample
├── pre-receive.sample
├── prepare-commit-msg.sample
├── push-to-checkout.sample
├── sendemail-validate.sample
└── update.sample
Damit die Skripte ausgeführt werden, muss lediglich der Suffix .sample
entfernt werden und ggf. die Dateiberechtigung
ausführbar sein, z.B. mit chmod +x
.git/PREPARE-COMMIT-MSG.
Die integrierten Skripte sind Shell- und Perl-Skripte, es können jedoch
beliebige Skriptsprachen verwenden werden. Dabei bestimmt die Shebang-Zeile
(#!/bin/sh), wie die Datei interpretiert werden soll.
Die Skripte werden jedoch mit git push nicht auf den Git-Server kopiert.
Um Skripte in mehreren Repositories verwenden zu können, empfiehlt sich daher
das pre-commit-Framework.
Siehe auch
Konfigurationsbasierte Hooks¶
Added in version 2.54: Git 2.54 führt nun eine neue Möglichkeit ein, Hooks in euren
Konfigurationsdateien zu definieren: Anstatt eines Skripts in
.git/hooks/pre-commit abzulegen, kann nun folgendes angegeben werden:
[hook "ruff check"]
event = pre-commit
command = ~/bin/ruff check --fix --exit-non-zero-on-fix
Diese Konfiguration kann jedoch nicht nur für jedes Projekt angegeben werden,
sondern auch global oder systemweit in ~/.gitconfig oder in
/etc/gitconfig.
Mit git hook list pre-commit erfahrt ihr, welche Hooks konfiguriert sind
und woher sie stammen.