'\" t
.\"     Title: githooks
.\"    Author: [FIXME: author] [see http://docbook.sf.net/el/author]
.\" Generator: DocBook XSL Stylesheets v1.79.1 <http://docbook.sf.net/>
.\"      Date: 11/18/2018
.\"    Manual: Git Manual
.\"    Source: Git 2.20.0.rc0
.\"  Language: English
.\"
.TH "GITHOOKS" "5" "11/18/2018" "Git 2\&.20\&.0\&.rc0" "Git Manual"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.\" http://bugs.debian.org/507673
.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.ie \n(.g .ds Aq \(aq
.el       .ds Aq '
.\" -----------------------------------------------------------------
.\" * set default formatting
.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
.\" -----------------------------------------------------------------
.\" * MAIN CONTENT STARTS HERE *
.\" -----------------------------------------------------------------
.SH "NAME"
githooks \- Hooks used by Git
.SH "SYNOPSIS"
.sp
$GIT_DIR/hooks/* (or `git config core\&.hooksPath`/*)
.SH "DESCRIPTION"
.sp
Hooks are programs you can place in a hooks directory to trigger actions at certain points in git\(cqs execution\&. Hooks that don\(cqt have the executable bit set are ignored\&.
.sp
By default the hooks directory is \fB$GIT_DIR/hooks\fR, but that can be changed via the \fBcore\&.hooksPath\fR configuration variable (see \fBgit-config\fR(1))\&.
.sp
Before Git invokes a hook, it changes its working directory to either $GIT_DIR in a bare repository or the root of the working tree in a non\-bare repository\&. An exception are hooks triggered during a push (\fIpre\-receive\fR, \fIupdate\fR, \fIpost\-receive\fR, \fIpost\-update\fR, \fIpush\-to\-checkout\fR) which are always executed in $GIT_DIR\&.
.sp
Hooks can get their arguments via the environment, command\-line arguments, and stdin\&. See the documentation for each hook below for details\&.
.sp
\fBgit init\fR may copy hooks to the new repository, depending on its configuration\&. See the "TEMPLATE DIRECTORY" section in \fBgit-init\fR(1) for details\&. When the rest of this document refers to "default hooks" it\(cqs talking about the default template shipped with Git\&.
.sp
The currently supported hooks are described below\&.
.SH "HOOKS"
.SS "applypatch\-msg"
.sp
This hook is invoked by \fBgit-am\fR(1)\&. It takes a single parameter, the name of the file that holds the proposed commit log message\&. Exiting with a non\-zero status causes \fBgit am\fR to abort before applying the patch\&.
.sp
The hook is allowed to edit the message file in place, and can be used to normalize the message into some project standard format\&. It can also be used to refuse the commit after inspecting the message file\&.
.sp
The default \fIapplypatch\-msg\fR hook, when enabled, runs the \fIcommit\-msg\fR hook, if the latter is enabled\&.
.SS "pre\-applypatch"
.sp
This hook is invoked by \fBgit-am\fR(1)\&. It takes no parameter, and is invoked after the patch is applied, but before a commit is made\&.
.sp
If it exits with non\-zero status, then the working tree will not be committed after applying the patch\&.
.sp
It can be used to inspect the current working tree and refuse to make a commit if it does not pass certain test\&.
.sp
The default \fIpre\-applypatch\fR hook, when enabled, runs the \fIpre\-commit\fR hook, if the latter is enabled\&.
.SS "post\-applypatch"
.sp
This hook is invoked by \fBgit-am\fR(1)\&. It takes no parameter, and is invoked after the patch is applied and a commit is made\&.
.sp
This hook is meant primarily for notification, and cannot affect the outcome of \fBgit am\fR\&.
.SS "pre\-commit"
.sp
This hook is invoked by \fBgit-commit\fR(1), and can be bypassed with the \fB\-\-no\-verify\fR option\&. It takes no parameters, and is invoked before obtaining the proposed commit log message and making a commit\&. Exiting with a non\-zero status from this script causes the \fBgit commit\fR command to abort before creating a commit\&.
.sp
The default \fIpre\-commit\fR hook, when enabled, catches introduction of lines with trailing whitespaces and aborts the commit when such a line is found\&.
.sp
All the \fBgit commit\fR hooks are invoked with the environment variable \fBGIT_EDITOR=:\fR if the command will not bring up an editor to modify the commit message\&.
.SS "prepare\-commit\-msg"
.sp
This hook is invoked by \fBgit-commit\fR(1) right after preparing the default log message, and before the editor is started\&.
.sp
It takes one to three parameters\&. The first is the name of the file that contains the commit log message\&. The second is the source of the commit message, and can be: \fBmessage\fR (if a \fB\-m\fR or \fB\-F\fR option was given); \fBtemplate\fR (if a \fB\-t\fR option was given or the configuration option \fBcommit\&.template\fR is set); \fBmerge\fR (if the commit is a merge or a \fB\&.git/MERGE_MSG\fR file exists); \fBsquash\fR (if a \fB\&.git/SQUASH_MSG\fR file exists); or \fBcommit\fR, followed by a commit SHA\-1 (if a \fB\-c\fR, \fB\-C\fR or \fB\-\-amend\fR option was given)\&.
.sp
If the exit status is non\-zero, \fBgit commit\fR will abort\&.
.sp
The purpose of the hook is to edit the message file in place, and it is not suppressed by the \fB\-\-no\-verify\fR option\&. A non\-zero exit means a failure of the hook and aborts the commit\&. It should not be used as replacement for pre\-commit hook\&.
.sp
The sample \fBprepare\-commit\-msg\fR hook that comes with Git removes the help message found in the commented portion of the commit template\&.
.SS "commit\-msg"
.sp
This hook is invoked by \fBgit-commit\fR(1) and \fBgit-merge\fR(1), and can be bypassed with the \fB\-\-no\-verify\fR option\&. It takes a single parameter, the name of the file that holds the proposed commit log message\&. Exiting with a non\-zero status causes the command to abort\&.
.sp
The hook is allowed to edit the message file in place, and can be used to normalize the message into some project standard format\&. It can also be used to refuse the commit after inspecting the message file\&.
.sp
The default \fIcommit\-msg\fR hook, when enabled, detects duplicate "Signed\-off\-by" lines, and aborts the commit if one is found\&.
.SS "post\-commit"
.sp
This hook is invoked by \fBgit-commit\fR(1)\&. It takes no parameters, and is invoked after a commit is made\&.
.sp
This hook is meant primarily for notification, and cannot affect the outcome of \fBgit commit\fR\&.
.SS "pre\-rebase"
.sp
This hook is called by \fBgit-rebase\fR(1) and can be used to prevent a branch from getting rebased\&. The hook may be called with one or two parameters\&. The first parameter is the upstream from which the series was forked\&. The second parameter is the branch being rebased, and is not set when rebasing the current branch\&.
.SS "post\-checkout"
.sp
This hook is invoked when a \fBgit-checkout\fR(1) 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 \fBgit checkout\fR\&.
.sp
It is also run after \fBgit-clone\fR(1), unless the \fB\-\-no\-checkout\fR (\fB\-n\fR) option is used\&. The first parameter given to the hook is the null\-ref, the second the ref of the new HEAD and the flag is always 1\&. Likewise for \fBgit worktree add\fR unless \fB\-\-no\-checkout\fR is used\&.
.sp
This hook can be used to perform repository validity checks, auto\-display differences from the previous HEAD if different, or set working dir metadata properties\&.
.SS "post\-merge"
.sp
This hook is invoked by \fBgit-merge\fR(1), which happens when a \fBgit pull\fR 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 \fBgit merge\fR and is not executed, if the merge failed due to conflicts\&.
.sp
This hook can be used in conjunction with a corresponding pre\-commit hook to save and restore any form of metadata associated with the working tree (e\&.g\&.: permissions/ownership, ACLS, etc)\&. See contrib/hooks/setgitperms\&.perl for an example of how to do this\&.
.SS "pre\-push"
.sp
This hook is called by \fBgit-push\fR(1) and can be used to prevent a push from taking place\&. The hook is called with two parameters which provide the name and location of the destination remote, if a named remote is not being used both values will be the same\&.
.sp
Information about what is to be pushed is provided on the hook\(cqs standard input with lines of the form:
.sp
.if n \{\
.RS 4
.\}
.nf
<local ref> SP <local sha1> SP <remote ref> SP <remote sha1> LF
.fi
.if n \{\
.RE
.\}
.sp
For instance, if the command \fBgit push origin master:foreign\fR were run the hook would receive a line like the following:
.sp
.if n \{\
.RS 4
.\}
.nf
refs/heads/master 67890 refs/heads/foreign 12345
.fi
.if n \{\
.RE
.\}
.sp
although the full, 40\-character SHA\-1s would be supplied\&. If the foreign ref does not yet exist the \fB<remote SHA\-1>\fR will be 40 \fB0\fR\&. If a ref is to be deleted, the \fB<local ref>\fR will be supplied as \fB(delete)\fR and the \fB<local SHA\-1>\fR will be 40 \fB0\fR\&. If the local commit was specified by something other than a name which could be expanded (such as \fBHEAD~\fR, or a SHA\-1) it will be supplied as it was originally given\&.
.sp
If this hook exits with a non\-zero status, \fBgit push\fR will abort without pushing anything\&. Information about why the push is rejected may be sent to the user by writing to standard error\&.
.SS "pre\-receive"
.sp
This hook is invoked by \fBgit-receive-pack\fR(1) when it reacts to \fBgit push\fR and updates reference(s) in its 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\&.
.sp
This hook executes once for the receive operation\&. It takes no arguments, but for each ref to be updated it receives on standard input a line of the format:
.sp
.if n \{\
.RS 4
.\}
.nf
<old\-value> SP <new\-value> SP <ref\-name> LF
.fi
.if n \{\
.RE
.\}
.sp
where \fB<old\-value>\fR is the old object name stored in the ref, \fB<new\-value>\fR is the new object name to be stored in the ref and \fB<ref\-name>\fR is the full name of the ref\&. When creating a new ref, \fB<old\-value>\fR is 40 \fB0\fR\&.
.sp
If the hook exits with non\-zero status, none of the refs will be updated\&. If the hook exits with zero, updating of individual refs can still be prevented by the \fIupdate\fR hook\&.
.sp
Both standard output and standard error output are forwarded to \fBgit send\-pack\fR on the other end, so you can simply \fBecho\fR messages for the user\&.
.sp
The number of push options given on the command line of \fBgit push \-\-push\-option=\&.\&.\&.\fR can be read from the environment variable \fBGIT_PUSH_OPTION_COUNT\fR, and the options themselves are found in \fBGIT_PUSH_OPTION_0\fR, \fBGIT_PUSH_OPTION_1\fR,\&... If it is negotiated to not use the push options phase, the environment variables will not be set\&. If the client selects to use push options, but doesn\(cqt transmit any, the count variable will be set to zero, \fBGIT_PUSH_OPTION_COUNT=0\fR\&.
.sp
See the section on "Quarantine Environment" in \fBgit-receive-pack\fR(1) for some caveats\&.
.SS "update"
.sp
This hook is invoked by \fBgit-receive-pack\fR(1) when it reacts to \fBgit push\fR and updates reference(s) in its 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\&.
.sp
The hook executes once for each ref to be updated, and takes three parameters:
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
the name of the ref being updated,
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
the old object name stored in the ref,
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
and the new object name to be stored in the ref\&.
.RE
.sp
A zero exit from the update hook allows the ref to be updated\&. Exiting with a non\-zero status prevents \fBgit receive\-pack\fR from updating that ref\&.
.sp
This hook can be used to prevent \fIforced\fR update on certain refs by making sure that the object name is a commit object that is a descendant of the commit object named by the old object name\&. That is, to enforce a "fast\-forward only" policy\&.
.sp
It could also be used to log the old\&.\&.new status\&. However, it does not know the entire set of branches, so it would end up firing one e\-mail per ref when used naively, though\&. The \fIpost\-receive\fR hook is more suited to that\&.
.sp
In an environment that restricts the users\(aq access only to git commands over the wire, this hook can be used to implement access control without relying on filesystem ownership and group membership\&. See \fBgit-shell\fR(1) for how you might use the login shell to restrict the user\(cqs access to only git commands\&.
.sp
Both standard output and standard error output are forwarded to \fBgit send\-pack\fR on the other end, so you can simply \fBecho\fR messages for the user\&.
.sp
The default \fIupdate\fR hook, when enabled\(emand with \fBhooks\&.allowunannotated\fR config option unset or set to false\(emprevents unannotated tags to be pushed\&.
.SS "post\-receive"
.sp
This hook is invoked by \fBgit-receive-pack\fR(1) when it reacts to \fBgit push\fR and updates reference(s) in its repository\&. It executes on the remote repository once after all the refs have been updated\&.
.sp
This hook executes once for the receive operation\&. It takes no arguments, but gets the same information as the \fIpre\-receive\fR hook does on its standard input\&.
.sp
This hook does not affect the outcome of \fBgit receive\-pack\fR, as it is called after the real work is done\&.
.sp
This supersedes the \fIpost\-update\fR hook in that it gets both old and new values of all the refs in addition to their names\&.
.sp
Both standard output and standard error output are forwarded to \fBgit send\-pack\fR on the other end, so you can simply \fBecho\fR messages for the user\&.
.sp
The default \fIpost\-receive\fR hook is empty, but there is a sample script \fBpost\-receive\-email\fR provided in the \fBcontrib/hooks\fR directory in Git distribution, which implements sending commit emails\&.
.sp
The number of push options given on the command line of \fBgit push \-\-push\-option=\&.\&.\&.\fR can be read from the environment variable \fBGIT_PUSH_OPTION_COUNT\fR, and the options themselves are found in \fBGIT_PUSH_OPTION_0\fR, \fBGIT_PUSH_OPTION_1\fR,\&... If it is negotiated to not use the push options phase, the environment variables will not be set\&. If the client selects to use push options, but doesn\(cqt transmit any, the count variable will be set to zero, \fBGIT_PUSH_OPTION_COUNT=0\fR\&.
.SS "post\-update"
.sp
This hook is invoked by \fBgit-receive-pack\fR(1) when it reacts to \fBgit push\fR and updates reference(s) in its repository\&. It executes on the remote repository once after all the refs have been updated\&.
.sp
It takes a variable number of parameters, each of which is the name of ref that was actually updated\&.
.sp
This hook is meant primarily for notification, and cannot affect the outcome of \fBgit receive\-pack\fR\&.
.sp
The \fIpost\-update\fR hook can tell what are the heads that were pushed, but it does not know what their original and updated values are, so it is a poor place to do log old\&.\&.new\&. The \fIpost\-receive\fR hook does get both original and updated values of the refs\&. You might consider it instead if you need them\&.
.sp
When enabled, the default \fIpost\-update\fR hook runs \fBgit update\-server\-info\fR 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\&.
.sp
Both standard output and standard error output are forwarded to \fBgit send\-pack\fR on the other end, so you can simply \fBecho\fR messages for the user\&.
.SS "push\-to\-checkout"
.sp
This hook is invoked by \fBgit-receive-pack\fR(1) when it reacts to \fBgit push\fR and updates reference(s) in its repository, and when the push tries to update the branch that is currently checked out and the \fBreceive\&.denyCurrentBranch\fR configuration variable is set to \fBupdateInstead\fR\&. Such a push by default is refused if the working tree and the index of the remote repository has any difference from the currently checked out commit; when both the working tree and the index match the current commit, they are updated to match the newly pushed tip of the branch\&. This hook is to be used to override the default behaviour\&.
.sp
The hook receives the commit with which the tip of the current branch is going to be updated\&. It can exit with a non\-zero status to refuse the push (when it does so, it must not modify the index or the working tree)\&. Or it can make any necessary changes to the working tree and to the index to bring them to the desired state when the tip of the current branch is updated to the new commit, and exit with a zero status\&.
.sp
For example, the hook can simply run \fBgit read\-tree \-u \-m HEAD "$1"\fR in order to emulate \fBgit fetch\fR that is run in the reverse direction with \fBgit push\fR, as the two\-tree form of \fBgit read\-tree \-u \-m\fR is essentially the same as \fBgit checkout\fR that switches branches while keeping the local changes in the working tree that do not interfere with the difference between the branches\&.
.SS "pre\-auto\-gc"
.sp
This hook is invoked by \fBgit gc \-\-auto\fR (see \fBgit-gc\fR(1))\&. It takes no parameter, and exiting with non\-zero status from this script causes the \fBgit gc \-\-auto\fR to abort\&.
.SS "post\-rewrite"
.sp
This hook is invoked by commands that rewrite commits (\fBgit-commit\fR(1) when called with \fB\-\-amend\fR and \fBgit-rebase\fR(1); currently \fBgit filter\-branch\fR does \fInot\fR call it!)\&. Its first argument denotes the command it was invoked by: currently one of \fBamend\fR or \fBrebase\fR\&. Further command\-dependent arguments may be passed in the future\&.
.sp
The hook receives a list of the rewritten commits on stdin, in the format
.sp
.if n \{\
.RS 4
.\}
.nf
<old\-sha1> SP <new\-sha1> [ SP <extra\-info> ] LF
.fi
.if n \{\
.RE
.\}
.sp
The \fIextra\-info\fR is again command\-dependent\&. If it is empty, the preceding SP is also omitted\&. Currently, no commands pass any \fIextra\-info\fR\&.
.sp
The hook always runs after the automatic note copying (see "notes\&.rewrite\&.<command>" in \fBgit-config\fR(1)) has happened, and thus has access to these notes\&.
.sp
The following command\-specific comments apply:
.PP
rebase
.RS 4
For the
\fIsquash\fR
and
\fIfixup\fR
operation, all commits that were squashed are listed as being rewritten to the squashed commit\&. This means that there will be several lines sharing the same
\fInew\-sha1\fR\&.
.sp
The commits are guaranteed to be listed in the order that they were processed by rebase\&.
.RE
.SS "sendemail\-validate"
.sp
This hook is invoked by \fBgit-send-email\fR(1)\&. It takes a single parameter, the name of the file that holds the e\-mail to be sent\&. Exiting with a non\-zero status causes \fBgit send\-email\fR to abort before sending any e\-mails\&.
.SS "fsmonitor\-watchman"
.sp
This hook is invoked when the configuration option \fBcore\&.fsmonitor\fR is set to \fB\&.git/hooks/fsmonitor\-watchman\fR\&. It takes two arguments, a version (currently 1) and the time in elapsed nanoseconds since midnight, January 1, 1970\&.
.sp
The hook should output to stdout the list of all files in the working directory that may have changed since the requested time\&. The logic should be inclusive so that it does not miss any potential changes\&. The paths should be relative to the root of the working directory and be separated by a single NUL\&.
.sp
It is OK to include files which have not actually changed\&. All changes including newly\-created and deleted files should be included\&. When files are renamed, both the old and the new name should be included\&.
.sp
Git will limit what files it checks for changes as well as which directories are checked for untracked files based on the path names given\&.
.sp
An optimized way to tell git "all files have changed" is to return the filename \fB/\fR\&.
.sp
The exit status determines whether git will use the data from the hook to limit its search\&. On error, it will fall back to verifying all files and folders\&.
.SS "p4\-pre\-submit"
.sp
This hook is invoked by \fBgit\-p4 submit\fR\&. It takes no parameters and nothing from standard input\&. Exiting with non\-zero status from this script prevent \fBgit\-p4 submit\fR from launching\&. Run \fBgit\-p4 submit \-\-help\fR for details\&.
.SH "GIT"
.sp
Part of the \fBgit\fR(1) suite
