X-Git-Url: https://git.tokkee.org/?a=blobdiff_plain;f=Documentation%2Fgithooks.txt;h=046a2a7fe7cf8ec301d3a20f7ebc587a09d210e3;hb=c76dc9592d1c770212d50ee7a7028a74f472f23b;hp=4f06ae0ed4bd625bf5a33fca215c90fb1b5810c9;hpb=ea81e10ff4e31820407f4cb1b8ebd87de9e51737;p=git.git diff --git a/Documentation/githooks.txt b/Documentation/githooks.txt index 4f06ae0ed..046a2a7fe 100644 --- a/Documentation/githooks.txt +++ b/Documentation/githooks.txt @@ -15,19 +15,20 @@ DESCRIPTION Hooks are little scripts you can place in `$GIT_DIR/hooks` directory to trigger action at certain points. When -`git-init` is run, a handful example hooks are copied in the +'git-init' is run, a handful example hooks are copied in the `hooks` directory of the new repository, but by default they are -all disabled. To enable a hook, make it executable with `chmod +x`. +all disabled. To enable a hook, rename it by removing its `.sample` +suffix. This document describes the currently defined hooks. applypatch-msg -------------- -This hook is invoked by `git-am` script. It takes a single +This hook is invoked by 'git-am' script. It takes a single parameter, the name of the file that holds the proposed commit log message. Exiting with non-zero status causes -`git-am` to abort before applying the patch. +'git-am' to abort before applying the patch. The hook is allowed to edit the message file in place, and can be used to normalize the message into some project standard @@ -40,7 +41,7 @@ The default 'applypatch-msg' hook, when enabled, runs the pre-applypatch -------------- -This hook is invoked by `git-am`. It takes no parameter, and is +This hook is invoked by 'git-am'. It takes no parameter, and is invoked after the patch is applied, but before a commit is made. If it exits with non-zero status, then the working tree will not be @@ -55,33 +56,33 @@ The default 'pre-applypatch' hook, when enabled, runs the post-applypatch --------------- -This hook is invoked by `git-am`. It takes no parameter, +This hook is invoked by 'git-am'. It takes no parameter, and is invoked after the patch is applied and a commit is made. This hook is meant primarily for notification, and cannot affect -the outcome of `git-am`. +the outcome of 'git-am'. pre-commit ---------- -This hook is invoked by `git-commit`, and can be bypassed +This hook is invoked by 'git-commit', and can be bypassed with `\--no-verify` option. It takes no parameter, and is invoked before obtaining the proposed commit log message and making a commit. Exiting with non-zero status from this script -causes the `git-commit` to abort. +causes the 'git-commit' to abort. The default 'pre-commit' hook, when enabled, catches introduction of lines with trailing whitespaces and aborts the commit when such a line is found. -All the `git-commit` hooks are invoked with the environment +All the 'git-commit' hooks are invoked with the environment variable `GIT_EDITOR=:` if the command will not bring up an editor to modify the commit message. prepare-commit-msg ------------------ -This hook is invoked by `git-commit` right after preparing the +This hook is invoked by 'git-commit' right after preparing the default log message, and before the editor is started. It takes one to three parameters. The first is the name of the file @@ -93,7 +94,7 @@ commit is a merge or a `.git/MERGE_MSG` file exists); `squash` (if a `.git/SQUASH_MSG` file exists); or `commit`, followed by a commit SHA1 (if a `\-c`, `\-C` or `\--amend` option was given). -If the exit status is non-zero, `git-commit` will abort. +If the exit status is non-zero, 'git-commit' will abort. The purpose of the hook is to edit the message file in place, and it is not suppressed by the `\--no-verify` option. A non-zero exit @@ -106,10 +107,10 @@ out the `Conflicts:` part of a merge's commit message. commit-msg ---------- -This hook is invoked by `git-commit`, and can be bypassed +This hook is invoked by 'git-commit', and can be bypassed with `\--no-verify` option. It takes a single parameter, the name of the file that holds the proposed commit log message. -Exiting with non-zero status causes the `git-commit` to +Exiting with non-zero status causes the 'git-commit' to abort. The hook is allowed to edit the message file in place, and can @@ -123,21 +124,21 @@ The default 'commit-msg' hook, when enabled, detects duplicate post-commit ----------- -This hook is invoked by `git-commit`. It takes no +This hook is invoked by 'git-commit'. It takes no parameter, and is invoked after a commit is made. This hook is meant primarily for notification, and cannot affect -the outcome of `git-commit`. +the outcome of 'git-commit'. post-checkout ----------- -This hook is invoked when a `git-checkout` is run after having updated the +This hook is invoked when a 'git-checkout' is run after having updated the worktree. The hook is given three parameters: the ref of the previous HEAD, the ref of the new HEAD (which may or may not have changed), and a flag indicating whether the checkout was a branch checkout (changing branches, flag=1) or a file checkout (retrieving a file from the index, flag=0). -This hook cannot affect the outcome of `git-checkout`. +This hook cannot affect the outcome of 'git-checkout'. This hook can be used to perform repository validity checks, auto-display differences from the previous HEAD if different, or set working dir metadata @@ -146,10 +147,10 @@ properties. post-merge ----------- -This hook is invoked by `git-merge`, which happens when a `git pull` +This hook is invoked by 'git-merge', which happens when a 'git-pull' is done on a local repository. The hook takes a single parameter, a status flag specifying whether or not the merge being done was a squash merge. -This hook cannot affect the outcome of `git-merge` and is not executed, +This hook cannot affect the outcome of 'git-merge' and is not executed, if the merge failed due to conflicts. This hook can be used in conjunction with a corresponding pre-commit hook to @@ -161,8 +162,8 @@ for an example of how to do this. pre-receive ----------- -This hook is invoked by `git-receive-pack` on the remote repository, -which happens when a `git push` is done on a local repository. +This hook is invoked by 'git-receive-pack' on the remote repository, +which happens when a 'git-push' is done on a local repository. Just before starting to update refs on the remote repository, the pre-receive hook is invoked. Its exit status determines the success or failure of the update. @@ -183,15 +184,15 @@ updated. If the hook exits with zero, updating of individual refs can still be prevented by the <> hook. Both standard output and standard error output are forwarded to -`git-send-pack` on the other end, so you can simply `echo` messages +'git-send-pack' on the other end, so you can simply `echo` messages for the user. [[update]] update ------ -This hook is invoked by `git-receive-pack` on the remote repository, -which happens when a `git push` is done on a local repository. +This hook is invoked by 'git-receive-pack' on the remote repository, +which happens when a 'git-push' is done on a local repository. Just before updating the ref on the remote repository, the update hook is invoked. Its exit status determines the success or failure of the ref update. @@ -204,7 +205,7 @@ three parameters: - and the new objectname to be stored in the ref. A zero exit from the update hook allows the ref to be updated. -Exiting with a non-zero status prevents `git-receive-pack` +Exiting with a non-zero status prevents 'git-receive-pack' from updating that ref. This hook can be used to prevent 'forced' update on certain refs by @@ -222,7 +223,7 @@ implement access control which is finer grained than the one based on filesystem group. Both standard output and standard error output are forwarded to -`git-send-pack` on the other end, so you can simply `echo` messages +'git-send-pack' on the other end, so you can simply `echo` messages for the user. The default 'update' hook, when enabled--and with @@ -233,8 +234,8 @@ unannotated tags to be pushed. post-receive ------------ -This hook is invoked by `git-receive-pack` on the remote repository, -which happens when a `git push` is done on a local repository. +This hook is invoked by 'git-receive-pack' on the remote repository, +which happens when a 'git-push' is done on a local repository. It executes on the remote repository once after all the refs have been updated. @@ -243,7 +244,7 @@ arguments, but gets the same information as the <> hook does on its standard input. -This hook does not affect the outcome of `git-receive-pack`, as it +This hook does not affect the outcome of 'git-receive-pack', as it is called after the real work is done. This supersedes the <> hook in that it gets @@ -251,7 +252,7 @@ both old and new values of all the refs in addition to their names. Both standard output and standard error output are forwarded to -`git-send-pack` on the other end, so you can simply `echo` messages +'git-send-pack' on the other end, so you can simply `echo` messages for the user. The default 'post-receive' hook is empty, but there is @@ -263,8 +264,8 @@ emails. post-update ----------- -This hook is invoked by `git-receive-pack` on the remote repository, -which happens when a `git push` is done on a local repository. +This hook is invoked by 'git-receive-pack' on the remote repository, +which happens when a 'git-push' is done on a local repository. It executes on the remote repository once after all the refs have been updated. @@ -272,7 +273,7 @@ It takes a variable number of parameters, each of which is the name of ref that was actually updated. This hook is meant primarily for notification, and cannot affect -the outcome of `git-receive-pack`. +the outcome of 'git-receive-pack'. The 'post-update' hook can tell what are the heads that were pushed, but it does not know what their original and updated values are, @@ -282,20 +283,20 @@ updated values of the refs. You might consider it instead if you need them. When enabled, the default 'post-update' hook runs -`git-update-server-info` to keep the information used by dumb +'git-update-server-info' to keep the information used by dumb transports (e.g., HTTP) up-to-date. If you are publishing a git repository that is accessible via HTTP, you should probably enable this hook. Both standard output and standard error output are forwarded to -`git-send-pack` on the other end, so you can simply `echo` messages +'git-send-pack' on the other end, so you can simply `echo` messages for the user. pre-auto-gc ----------- -This hook is invoked by `git-gc --auto`. It takes no parameter, and -exiting with non-zero status from this script causes the `git-gc --auto` +This hook is invoked by 'git-gc --auto'. It takes no parameter, and +exiting with non-zero status from this script causes the 'git-gc --auto' to abort. GIT