Documentation / hooks.txton commit [PATCH] Escape asciidoc's built-in em-dash replacement (e1ccf53)
   1Hooks used by GIT
   2=================
   3v0.99.6, Sep 2005
   4
   5Hooks are little scripts you can place in `$GIT_DIR/hooks`
   6directory to trigger action at certain points.  When
   7`git-init-db` is run, a handful example hooks are copied in the
   8`hooks` directory of the new repository, but by default they are
   9all disabled.  To enable a hook, make it executable with `chmod
  10+x`.
  11
  12This document describes the currently defined hooks.
  13
  14applypatch-msg
  15--------------
  16
  17This hook is invoked by `git-applypatch` script, which is
  18typically invoked by `git-applymbox`.  It takes a single
  19parameter, the name of the file that holds the proposed commit
  20log message.  Exiting with non-zero status causes the
  21'git-applypatch' to abort before applying the patch.
  22
  23The hook is allowed to edit the message file in place, and can
  24be used to normalize the message into some project standard
  25format (if the project has one). It can also be used to refuse
  26the commit after inspecting the message file.
  27
  28The default applypatch-msg hook, when enabled, runs the
  29commit-msg hook, if the latter is enabled.
  30
  31pre-applypatch
  32--------------
  33
  34This hook is invoked by `git-applypatch` script, which is
  35typically invoked by `git-applymbox`.  It takes no parameter,
  36and is invoked after the patch is applied, but before a commit
  37is made.  Exiting with non-zero status causes the working tree
  38after application of the patch not committed.
  39
  40It can be used to inspect the current working tree and refuse to
  41make a commit if it does not pass certain test.
  42
  43The default pre-applypatch hook, when enabled, runs the
  44pre-commit hook, if the latter is enabled.
  45
  46post-applypatch
  47---------------
  48
  49This hook is invoked by `git-applypatch` script, which is
  50typically invoked by `git-applymbox`.  It takes no parameter,
  51and is invoked after the patch is applied and a commit is made.
  52
  53This hook is meant primarily for notification, and cannot affect
  54the outcome of `git-applypatch`.
  55
  56pre-commit
  57----------
  58
  59This hook is invoked by `git-commit`, and can be bypassed
  60with `\--no-verify` option.  It takes no parameter, and is
  61invoked before obtaining the proposed commit log message and
  62making a commit.  Exiting with non-zero status from this script
  63causes the `git-commit` to abort.
  64
  65The default pre-commit hook, when enabled, catches introduction
  66of lines with trailing whitespaces and aborts the commit when
  67a such line is found.
  68
  69commit-msg
  70----------
  71
  72This hook is invoked by `git-commit`, and can be bypassed
  73with `\--no-verify` option.  It takes a single parameter, the
  74name of the file that holds the proposed commit log message.
  75Exiting with non-zero status causes the `git-commit` to
  76abort.
  77
  78The hook is allowed to edit the message file in place, and can
  79be used to normalize the message into some project standard
  80format (if the project has one). It can also be used to refuse
  81the commit after inspecting the message file.
  82
  83The default commit-msg hook, when enabled, detects duplicate
  84Signed-off-by: lines, and aborts the commit when one is found.
  85
  86post-commit
  87-----------
  88
  89This hook is invoked by `git-commit`.  It takes no
  90parameter, and is invoked after a commit is made.
  91
  92This hook is meant primarily for notification, and cannot affect
  93the outcome of `git-commit`.
  94
  95The default post-commit hook, when enabled, demonstrates how to
  96send out a commit notification e-mail.
  97
  98update
  99------
 100
 101This hook is invoked by `git-receive-pack`, which is invoked
 102when a `git push` is done against the repository.  It takes
 103three parameters, name of the ref being updated, old object name
 104stored in the ref, and the new objectname to be stored in the
 105ref.  Exiting with non-zero status from this hook prevents
 106`git-receive-pack` from updating the ref.
 107
 108This can be used to prevent 'forced' update on certain refs by
 109making sure that the object name is a commit object that is a
 110descendant of the commit object named by the old object name.
 111Another use suggested on the mailing list is to use this hook to
 112implement access control which is finer grained than the one
 113based on filesystem group.
 114
 115post-update
 116-----------
 117
 118This hook is invoked by `git-receive-pack`, which is invoked
 119when a `git push` is done against the repository.  It takes
 120variable number of parameters; each of which is the name of ref
 121that was actually updated.
 122
 123This hook is meant primarily for notification, and cannot affect
 124the outcome of `git-receive-pack`.
 125
 126The default post-update hook, when enabled, runs
 127`git-update-server-info` to keep the information used by dumb
 128transport up-to-date.