diff --git a/Documentation/Makefile b/Documentation/Makefile index afdecc1a7f..b81a6a2c72 100644 --- a/Documentation/Makefile +++ b/Documentation/Makefile @@ -8,6 +8,7 @@ ARTICLES += cvs-migration ARTICLES += diffcore ARTICLES += howto-index ARTICLES += repository-layout +ARTICLES += hooks # with their own formatting rules. SP_ARTICLES = glossary howto/revert-branch-rebase diff --git a/Documentation/git-applymbox.txt b/Documentation/git-applymbox.txt index 3d813ec4cf..f6d857cda4 100644 --- a/Documentation/git-applymbox.txt +++ b/Documentation/git-applymbox.txt @@ -64,6 +64,12 @@ OPTIONS generated "Signed-off-by" line based on your committer identity. + +SEE ALSO +-------- +link:git-applypatch.html[git-applypatch]. + + Author ------ Written by Linus Torvalds diff --git a/Documentation/git-applypatch.txt b/Documentation/git-applypatch.txt index 14ce53aade..b8946321d3 100644 --- a/Documentation/git-applypatch.txt +++ b/Documentation/git-applypatch.txt @@ -16,6 +16,10 @@ Takes three files , , and prepared from an e-mail message by 'git-mailinfo', and creates a commit. It is usually not necessary to use this command directly. +This command can run `applypatch-msg`, `pre-applypatch`, and +`post-applypatch` hooks. See link:hooks.html[hooks] for more +information. + OPTIONS ------- diff --git a/Documentation/git-commit-script.txt b/Documentation/git-commit-script.txt index cf6b5c3da2..faa1870e34 100644 --- a/Documentation/git-commit-script.txt +++ b/Documentation/git-commit-script.txt @@ -8,7 +8,7 @@ git-commit-script - Record your changes SYNOPSIS -------- -'git commit' [-a] [-s] [-v] [(-c | -C) | -F | -m ] ... +'git commit' [-a] [-s] [-v] [(-c | -C) | -F | -m ] [-e] ... DESCRIPTION ----------- @@ -17,6 +17,10 @@ Updates the index file for given paths, or all modified files if VISUAL and EDITOR environment variables to edit the commit log message. +This command can run `commit-msg`, `pre-commit`, and +`post-commit` hooks. See link:hooks.html[hooks] for more +information. + OPTIONS ------- -a:: @@ -47,8 +51,14 @@ OPTIONS has a SP character immediately followed by a TAB character. +-e:: + The message taken from file with `-F`, command line with + `-m`, and from file with `-C` are usually used as the + commit log message unmodified. This option lets you + further edit the message taken from these sources. + ...:: - Update specified paths in the index file. + Update specified paths in the index file before committing. Author diff --git a/Documentation/git-receive-pack.txt b/Documentation/git-receive-pack.txt index 2f1a1f8ebb..2c6065fcb1 100644 --- a/Documentation/git-receive-pack.txt +++ b/Documentation/git-receive-pack.txt @@ -77,6 +77,12 @@ OPTIONS :: The repository to sync into. + +SEE ALSO +-------- +link:git-send-pack.html[git-send-pack] + + Author ------ Written by Linus Torvalds diff --git a/Documentation/hooks.txt b/Documentation/hooks.txt new file mode 100644 index 0000000000..45809ba13a --- /dev/null +++ b/Documentation/hooks.txt @@ -0,0 +1,128 @@ +Hooks used by GIT +================= +v0.99.6, Sep 2005 + +Hooks are little scripts you can place in `$GIT_DIR/hooks` +directory to trigger action at certain points. When +`git-init-db` 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`. + +This document describes the currently defined hooks. + +applypatch-msg +-------------- + +This hook is invoked by `git-applypatch` script, which is +typically invoked by `git-applymbox`. 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-applypatch' 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 +format (if the project has one). It can also be used to refuse +the commit after inspecting the message file. + +The default applypatch-msg hook, when enabled, runs the +commit-msg hook, if the latter is enabled. + +pre-applypatch +-------------- + +This hook is invoked by `git-applypatch` script, which is +typically invoked by `git-applymbox`. It takes no parameter, +and is invoked after the patch is applied, but before a commit +is made. Exiting with non-zero status causes the working tree +after application of the patch not committed. + +It can be used to inspect the current working tree and refuse to +make a commit if it does not pass certain test. + +The default pre-applypatch hook, when enabled, runs the +pre-commit hook, if the latter is enabled. + +post-applypatch +--------------- + +This hook is invoked by `git-applypatch` script, which is +typically invoked by `git-applymbox`. 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-applypatch`. + +pre-commit +---------- + +This hook is invoked by `git-commit-script`, 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-script` to abort. + +The default pre-commit hook, when enabled, catches introduction +of lines with trailing whitespaces and aborts the commit when +a such line is found. + +commit-msg +---------- + +This hook is invoked by `git-commit-script`, 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-script` to +abort. + +The hook is allowed to edit the message file in place, and can +be used to normalize the message into some project standard +format (if the project has one). It can also be used to refuse +the commit after inspecting the message file. + +The default commit-msg hook, when enabled, detects duplicate +Signed-off-by: lines, and aborts the commit when one is found. + +post-commit +----------- + +This hook is invoked by `git-commit-script`. 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-script`. + +The default post-commit hook, when enabled, demonstrates how to +send out a commit notification e-mail. + +update +------ + +This hook is invoked by `git-receive-pack`, which is invoked +when a `git push` is done against the repository. It takes +three parameters, name of the ref being updated, old object name +stored in the ref, and the new objectname to be stored in the +ref. Exiting with non-zero status from this hook prevents +`git-receive-pack` from updating the ref. + +This can be used to prevent 'forced' 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. +Another use suggested on the mailing list is to use this hook to +implement access control which is finer grained than the one +based on filesystem group. + +post-update +----------- + +This hook is invoked by `git-receive-pack`, which is invoked +when a `git push` is done against the repository. It takes +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 default post-update hook, when enabled, runs +`git-update-server-info` to keep the information used by dumb +transport up-to-date.