Merge branch 'jc/receive-pack-hook-doc'
authorJunio C Hamano <gitster@pobox.com>
Wed, 13 Dec 2017 21:28:55 +0000 (13:28 -0800)
committerJunio C Hamano <gitster@pobox.com>
Wed, 13 Dec 2017 21:28:55 +0000 (13:28 -0800)
Doc update.

* jc/receive-pack-hook-doc:
  hooks doc: clarify when receive-pack invokes its hooks

1  2 
Documentation/githooks.txt

@@@ -22,10 -22,8 +22,10 @@@ changed via the `core.hooksPath` config
  linkgit:git-config[1]).
  
  Before Git invokes a hook, it changes its working directory to either
 -the root of the working tree in a non-bare repository, or to the
 -$GIT_DIR in a bare repository.
 +$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 ('pre-receive',
 +'update', 'post-receive', 'post-update', 'push-to-checkout') which are always
 +executed in $GIT_DIR.
  
  Hooks can get their arguments via the environment, command-line
  arguments, and stdin. See the documentation for each hook below for
@@@ -121,16 -119,17 +121,16 @@@ it is not suppressed by the `--no-verif
  means a failure of the hook and aborts the commit.  It should not
  be used as replacement for pre-commit hook.
  
 -The sample `prepare-commit-msg` hook that comes with Git comments
 -out the `Conflicts:` part of a merge's commit message.
 +The sample `prepare-commit-msg` hook that comes with Git removes the
 +help message found in the commented portion of the commit template.
  
  commit-msg
  ~~~~~~~~~~
  
 -This hook is invoked by 'git commit', and can be bypassed
 -with the `--no-verify` 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 'git commit' to
 -abort.
 +This hook is invoked by 'git commit' and 'git merge', and can be
 +bypassed with the `--no-verify` 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.
  
  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
@@@ -223,8 -222,8 +223,8 @@@ to the user by writing to standard erro
  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' when it reacts to
'git push' 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.
@@@ -257,15 -256,12 +257,15 @@@ environment variables will not be set. 
  to use push options, but doesn't transmit any, the count variable
  will be set to zero, `GIT_PUSH_OPTION_COUNT=0`.
  
 +See the section on "Quarantine Environment" in
 +linkgit:git-receive-pack[1] for some caveats.
 +
  [[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' when it reacts to
'git push' 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.
@@@ -309,8 -305,8 +309,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' when it reacts to
'git push' and updates reference(s) in its repository.
  It executes on the remote repository once after all the refs have
  been updated.
  
@@@ -348,8 -344,8 +348,8 @@@ will be set to zero, `GIT_PUSH_OPTION_C
  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' when it reacts to
'git push' and updates reference(s) in its repository.
  It executes on the remote repository once after all the refs have
  been updated.
  
@@@ -368,7 -364,7 +368,7 @@@ them
  
  When enabled, the default 'post-update' hook runs
  'git update-server-info' to keep the information used by dumb
 -transports (e.g., HTTP) up-to-date.  If you are publishing
 +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.
  
@@@ -379,8 -375,8 +379,8 @@@ for the user
  push-to-checkout
  ~~~~~~~~~~~~~~~~
  
- This hook is invoked by 'git-receive-pack' on the remote repository,
which happens when a 'git push' is done on a local repository, when
+ This hook is invoked by 'git-receive-pack' when it reacts to
'git push' and updates reference(s) in its repository, and when
  the push tries to update the branch that is currently checked out
  and the `receive.denyCurrentBranch` configuration variable is set to
  `updateInstead`.  Such a push by default is refused if the working
@@@ -446,42 -442,6 +446,42 @@@ rebase:
  The commits are guaranteed to be listed in the order that they were
  processed by rebase.
  
 +sendemail-validate
 +~~~~~~~~~~~~~~~~~~
 +
 +This hook is invoked by 'git send-email'.  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 'git send-email' to abort before sending any
 +e-mails.
 +
 +fsmonitor-watchman
 +~~~~~~~~~~~~~~~~~~
 +
 +This hook is invoked when the configuration option core.fsmonitor is
 +set to .git/hooks/fsmonitor-watchman.  It takes two arguments, a version
 +(currently 1) and the time in elapsed nanoseconds since midnight,
 +January 1, 1970.
 +
 +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.
 +
 +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.
 +
 +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.
 +
 +An optimized way to tell git "all files have changed" is to return
 +the filename '/'.
 +
 +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.
  
  GIT
  ---