git/list[1] front-page[2] threads[3] people[4] search[5] about
 

[PATCH v8 37/37] docs: unify githooks and git-hook manpages

From
Emily Shaffer <emilyshaffer@google.com>
Date
Mar 11, 2021, 02:10 UTC
Message-ID
<20210311021037.3001235-38-emilyshaffer@google.com>
In-Reply-To
<20210311021037.3001235-1-emilyshaffer@google.com>

By showing the list of all hooks in 'git help hook' for users to refer to, 'git help hook' becomes a one-stop shop for hook authorship. Since some may still have muscle memory for 'git help githooks', though, reference the 'git hook' commands and otherwise don't remove content.

Signed-off-by: Emily Shaffer <emilyshaffer@google.com>
---
 Documentation/git-hook.txt     |  11 +
 Documentation/githooks.txt     | 716 +--------------------------------
 Documentation/native-hooks.txt | 708 ++++++++++++++++++++++++++++++++
 3 files changed, 724 insertions(+), 711 deletions(-)
 create mode 100644 Documentation/native-hooks.txt
diff --git a/Documentation/git-hook.txt b/Documentation/git-hook.txt
index 81b8e94994..4ad31ac360 100644
--- a/Documentation/git-hook.txt
+++ b/Documentation/git-hook.txt
@@ -17,6 +17,13 @@ DESCRIPTION
 You can list and run configured hooks with this command. Later, you will be able
 to add and modify hooks with this command.
 
+In general, when instructions suggest adding a script to
+`.git/hooks/<something>`, you can specify it in the config instead by running
+`git config --add hook.<something>.command <path-to-script>` - this way you can
+share the script between multiple repos. That is, `cp ~/my-script.sh
+~/project/.git/hooks/pre-commit` would become `git config --add
+hook.pre-commit.command ~/my-script.sh`.
+
 This command parses the default configuration files for sections `hook` and
 `hookcmd`. `hook` is used to describe the commands which will be run during a
 particular hook event; commands are run in the order Git encounters them during
@@ -145,6 +152,10 @@ CONFIGURATION
 -------------
 include::config/hook.txt[]
 
+HOOKS
+-----
+include::native-hooks.txt[]
+
 GIT
 ---
 Part of the linkgit:git[1] suite
diff --git a/Documentation/githooks.txt b/Documentation/githooks.txt
index b63054b947..9a25dfdc3f 100644
--- a/Documentation/githooks.txt
+++ b/Documentation/githooks.txt
@@ -7,15 +7,16 @@ githooks - Hooks used by Git
 
 SYNOPSIS
 --------
+'git hook'
 $GIT_DIR/hooks/* (or \`git config core.hooksPath`/*)
 
 
 DESCRIPTION
 -----------
 
-Hooks are programs you can place in a hooks directory to trigger
-actions at certain points in git's execution. Hooks that don't have
-the executable bit set are ignored.
+Hooks are programs you can specify in your config (see linkgit:git-hook[1]) or
+place in a hooks directory to trigger actions at certain points in git's
+execution. Hooks that don't have the executable bit set are ignored.
 
 By default the hooks directory is `$GIT_DIR/hooks`, but that can be
 changed via the `core.hooksPath` configuration variable (see
@@ -41,714 +42,7 @@ The currently supported hooks are described below.
 
 HOOKS
 -----
-
-applypatch-msg
-~~~~~~~~~~~~~~
-
-This hook is invoked by linkgit:git-am[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 `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
-format. 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.
-
-Hooks run during 'applypatch-msg' will not be parallelized, because hooks are
-expected to edit the file holding the commit log message.
-
-pre-applypatch
-~~~~~~~~~~~~~~
-
-This hook is invoked by linkgit:git-am[1].  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
-committed after applying the patch.
-
-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.
-
-Hooks run during 'pre-applypatch' will be run in parallel, unless hook.jobs is
-configured to 1.
-
-post-applypatch
-~~~~~~~~~~~~~~~
-
-This hook is invoked by linkgit:git-am[1].  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`.
-
-Hooks run during 'post-applypatch' will be run in parallel, unless hook.jobs is
-configured to 1.
-
-pre-commit
-~~~~~~~~~~
-
-This hook is invoked by linkgit:git-commit[1], and can be bypassed
-with the `--no-verify` 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 `git commit` command to abort before creating a commit.
-
-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
-variable `GIT_EDITOR=:` if the command will not bring up an editor
-to modify the commit message.
-
-The default 'pre-commit' hook, when enabled--and with the
-`hooks.allownonascii` config option unset or set to false--prevents
-the use of non-ASCII filenames.
-
-Hooks executed during 'pre-commit' will not be parallelized.
-
-pre-merge-commit
-~~~~~~~~~~~~~~~~
-
-This hook is invoked by linkgit:git-merge[1], and can be bypassed
-with the `--no-verify` option.  It takes no parameters, and is
-invoked after the merge has been carried out successfully and before
-obtaining the proposed commit log message to
-make a commit.  Exiting with a non-zero status from this script
-causes the `git merge` command to abort before creating a commit.
-
-The default 'pre-merge-commit' hook, when enabled, runs the
-'pre-commit' hook, if the latter is enabled.
-
-This hook is invoked with the environment variable
-`GIT_EDITOR=:` if the command will not bring up an editor
-to modify the commit message.
-
-If the merge cannot be carried out automatically, the conflicts
-need to be resolved and the result committed separately (see
-linkgit:git-merge[1]). At that point, this hook will not be executed,
-but the 'pre-commit' hook will, if it is enabled.
-
-Hooks executed during 'pre-merge-commit' will not be parallelized.
-
-prepare-commit-msg
-~~~~~~~~~~~~~~~~~~
-
-This hook is invoked by linkgit:git-commit[1] 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
-that contains the commit log message.  The second is the source of the commit
-message, and can be: `message` (if a `-m` or `-F` option was
-given); `template` (if a `-t` option was given or the
-configuration option `commit.template` is set); `merge` (if the
-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 SHA-1 (if a `-c`, `-C` or `--amend` option was given).
-
-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
-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 removes the
-help message found in the commented portion of the commit template.
-
-Hooks executed during 'prepare-commit-msg' will not be parallelized, because
-hooks are expected to edit the file containing the commit log message.
-
-commit-msg
-~~~~~~~~~~
-
-This hook is invoked by linkgit:git-commit[1] and linkgit:git-merge[1], 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
-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` trailers, and aborts the commit if one is found.
-
-Hooks executed during 'commit-msg' will not be parallelized, because hooks are
-expected to edit the file containing the proposed commit log message.
-
-post-commit
-~~~~~~~~~~~
-
-This hook is invoked by linkgit:git-commit[1]. It takes no parameters, and is
-invoked after a commit is made.
-
-This hook is meant primarily for notification, and cannot affect
-the outcome of `git commit`.
-
-Hooks executed during 'post-commit' will run in parallel, unless hook.jobs is
-configured to 1.
-
-pre-rebase
-~~~~~~~~~~
-
-This hook is called by linkgit:git-rebase[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.
-
-Hooks executed during 'pre-rebase' will run in parallel, unless hook.jobs is
-configured to 1.
-
-post-checkout
-~~~~~~~~~~~~~
-
-This hook is invoked when a linkgit:git-checkout[1] or
-linkgit:git-switch[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 `git switch` or `git checkout`,
-other than that the hook's exit status becomes the exit status of
-these two commands.
-
-It is also run after linkgit:git-clone[1], unless the `--no-checkout` (`-n`) 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 `git worktree add`
-unless `--no-checkout` is used.
-
-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.
-
-Hooks executed during 'post-checkout' will not be parallelized.
-
-post-merge
-~~~~~~~~~~
-
-This hook is invoked by linkgit:git-merge[1], 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,
-if the merge failed due to conflicts.
-
-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.
-
-Hooks executed during 'post-merge' will run in parallel, unless hook.jobs is
-configured to 1.
-
-pre-push
-~~~~~~~~
-
-This hook is called by linkgit:git-push[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.
-
-Information about what is to be pushed is provided on the hook's standard
-input with lines of the form:
-
-  <local ref> SP <local sha1> SP <remote ref> SP <remote sha1> LF
-
-For instance, if the command +git push origin master:foreign+ were run the
-hook would receive a line like the following:
-
-  refs/heads/master 67890 refs/heads/foreign 12345
-
-although the full, 40-character SHA-1s would be supplied.  If the foreign ref
-does not yet exist the `<remote SHA-1>` will be 40 `0`.  If a ref is to be
-deleted, the `<local ref>` will be supplied as `(delete)` and the `<local
-SHA-1>` will be 40 `0`.  If the local commit was specified by something other
-than a name which could be expanded (such as `HEAD~`, or a SHA-1) it will be
-supplied as it was originally given.
-
-If this hook exits with a non-zero status, `git push` will abort without
-pushing anything.  Information about why the push is rejected may be sent
-to the user by writing to standard error.
-
-Hooks executed during 'pre-push' will run in parallel, unless hook.jobs is
-configured to 1.
-
-[[pre-receive]]
-pre-receive
-~~~~~~~~~~~
-
-This hook is invoked by linkgit:git-receive-pack[1] 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.
-
-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:
-
-  <old-value> SP <new-value> SP <ref-name> LF
-
-where `<old-value>` is the old object name stored in the ref,
-`<new-value>` is the new object name to be stored in the ref and
-`<ref-name>` is the full name of the ref.
-When creating a new ref, `<old-value>` is 40 `0`.
-
-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 <<update,'update'>> hook.
-
-Both standard output and standard error output are forwarded to
-`git send-pack` on the other end, so you can simply `echo` messages
-for the user.
-
-The number of push options given on the command line of
-`git push --push-option=...` can be read from the environment
-variable `GIT_PUSH_OPTION_COUNT`, and the options themselves are
-found in `GIT_PUSH_OPTION_0`, `GIT_PUSH_OPTION_1`,...
-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'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.
-
-Hooks executed during 'pre-receive' will not be parallelized.
-
-[[update]]
-update
-~~~~~~
-
-This hook is invoked by linkgit:git-receive-pack[1] 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.
-
-The hook executes once for each ref to be updated, and takes
-three parameters:
-
- - the name of the ref being updated,
- - the old object name stored in the ref,
- - and the new object name 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`
-from updating that ref.
-
-This hook 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.
-That is, to enforce a "fast-forward only" policy.
-
-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
-<<post-receive,'post-receive'>> hook is more suited to that.
-
-In an environment that restricts the users' 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 linkgit:git-shell[1] for how you might use the login
-shell to restrict the user's access to only git commands.
-
-Both standard output and standard error output are forwarded to
-`git send-pack` on the other end, so you can simply `echo` messages
-for the user.
-
-The default 'update' hook, when enabled--and with
-`hooks.allowunannotated` config option unset or set to false--prevents
-unannotated tags to be pushed.
-
-Hooks executed during 'update' are run in parallel, unless hook.jobs is
-configured to 1.
-
-[[proc-receive]]
-proc-receive
-~~~~~~~~~~~~
-
-This hook is invoked by linkgit:git-receive-pack[1].  If the server has
-set the multi-valued config variable `receive.procReceiveRefs`, and the
-commands sent to 'receive-pack' have matching reference names, these
-commands will be executed by this hook, instead of by the internal
-`execute_commands()` function.  This hook is responsible for updating
-the relevant references and reporting the results back to 'receive-pack'.
-
-This hook executes once for the receive operation.  It takes no
-arguments, but uses a pkt-line format protocol to communicate with
-'receive-pack' to read commands, push-options and send results.  In the
-following example for the protocol, the letter 'S' stands for
-'receive-pack' and the letter 'H' stands for this hook.
-
-    # Version and features negotiation.
-    S: PKT-LINE(version=1\0push-options atomic...)
-    S: flush-pkt
-    H: PKT-LINE(version=1\0push-options...)
-    H: flush-pkt
-
-    # Send commands from server to the hook.
-    S: PKT-LINE(<old-oid> <new-oid> <ref>)
-    S: ... ...
-    S: flush-pkt
-    # Send push-options only if the 'push-options' feature is enabled.
-    S: PKT-LINE(push-option)
-    S: ... ...
-    S: flush-pkt
-
-    # Receive result from the hook.
-    # OK, run this command successfully.
-    H: PKT-LINE(ok <ref>)
-    # NO, I reject it.
-    H: PKT-LINE(ng <ref> <reason>)
-    # Fall through, let 'receive-pack' to execute it.
-    H: PKT-LINE(ok <ref>)
-    H: PKT-LINE(option fall-through)
-    # OK, but has an alternate reference.  The alternate reference name
-    # and other status can be given in option directives.
-    H: PKT-LINE(ok <ref>)
-    H: PKT-LINE(option refname <refname>)
-    H: PKT-LINE(option old-oid <old-oid>)
-    H: PKT-LINE(option new-oid <new-oid>)
-    H: PKT-LINE(option forced-update)
-    H: ... ...
-    H: flush-pkt
-
-Each command for the 'proc-receive' hook may point to a pseudo-reference
-and always has a zero-old as its old-oid, while the 'proc-receive' hook
-may update an alternate reference and the alternate reference may exist
-already with a non-zero old-oid.  For this case, this hook will use
-"option" directives to report extended attributes for the reference given
-by the leading "ok" directive.
-
-The report of the commands of this hook should have the same order as
-the input.  The exit status of the 'proc-receive' hook only determines
-the success or failure of the group of commands sent to it, unless
-atomic push is in use.
-
-It is forbidden to specify more than one hook for 'proc-receive'. If a
-globally-configured 'proc-receive' must be overridden, use
-'hookcmd.<global-hook>.skip = true' to ignore it.
-
-[[post-receive]]
-post-receive
-~~~~~~~~~~~~
-
-This hook is invoked by linkgit:git-receive-pack[1] 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.
-
-This hook executes once for the receive operation.  It takes no
-arguments, but gets the same information as the
-<<pre-receive,'pre-receive'>>
-hook does on its standard input.
-
-This hook does not affect the outcome of `git receive-pack`, as it
-is called after the real work is done.
-
-This supersedes the <<post-update,'post-update'>> hook in that it gets
-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
-for the user.
-
-The default 'post-receive' hook is empty, but there is
-a sample script `post-receive-email` provided in the `contrib/hooks`
-directory in Git distribution, which implements sending commit
-emails.
-
-The number of push options given on the command line of
-`git push --push-option=...` can be read from the environment
-variable `GIT_PUSH_OPTION_COUNT`, and the options themselves are
-found in `GIT_PUSH_OPTION_0`, `GIT_PUSH_OPTION_1`,...
-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't transmit any, the count variable
-will be set to zero, `GIT_PUSH_OPTION_COUNT=0`.
-
-Hooks executed during 'post-receive' are run in parallel, unless hook.jobs is
-configured to 1.
-
-[[post-update]]
-post-update
-~~~~~~~~~~~
-
-This hook is invoked by linkgit:git-receive-pack[1] 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.
-
-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 'post-update' 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
-<<post-receive,'post-receive'>> hook does get both original and
-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
-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
-for the user.
-
-Hooks run during 'post-update' will be run in parallel, unless hook.jobs is
-configured to 1.
-
-reference-transaction
-~~~~~~~~~~~~~~~~~~~~~
-
-This hook is invoked by any Git command that performs reference
-updates. It executes whenever a reference transaction is prepared,
-committed or aborted and may thus get called multiple times.
-
-The hook takes exactly one argument, which is the current state the
-given reference transaction is in:
-
-    - "prepared": All reference updates have been queued to the
-      transaction and references were locked on disk.
-
-    - "committed": The reference transaction was committed and all
-      references now have their respective new value.
-
-    - "aborted": The reference transaction was aborted, no changes
-      were performed and the locks have been released.
-
-For each reference update that was added to the transaction, the hook
-receives on standard input a line of the format:
-
-  <old-value> SP <new-value> SP <ref-name> LF
-
-The exit status of the hook is ignored for any state except for the
-"prepared" state. In the "prepared" state, a non-zero exit status will
-cause the transaction to be aborted. The hook will not be called with
-"aborted" state in that case.
-
-Hooks run during 'reference-transaction' will be run in parallel, unless
-hook.jobs is configured to 1.
-
-push-to-checkout
-~~~~~~~~~~~~~~~~
-
-This hook is invoked by linkgit:git-receive-pack[1] 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
-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.
-
-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.
-
-For example, the hook can simply run `git read-tree -u -m HEAD "$1"`
-in order to emulate `git fetch` that is run in the reverse direction
-with `git push`, as the two-tree form of `git read-tree -u -m` is
-essentially the same as `git switch` or `git checkout`
-that switches branches while
-keeping the local changes in the working tree that do not interfere
-with the difference between the branches.
-
-Hooks executed during 'push-to-checkout' will not be parallelized.
-
-pre-auto-gc
-~~~~~~~~~~~
-
-This hook is invoked by `git gc --auto` (see linkgit:git-gc[1]). It
-takes no parameter, and exiting with non-zero status from this script
-causes the `git gc --auto` to abort.
-
-Hooks run during 'pre-auto-gc' will be run in parallel, unless hook.jobs is
-configured to 1.
-
-post-rewrite
-~~~~~~~~~~~~
-
-This hook is invoked by commands that rewrite commits
-(linkgit:git-commit[1] when called with `--amend` and
-linkgit:git-rebase[1]; however, full-history (re)writing tools like
-linkgit:git-fast-import[1] or
-https://github.com/newren/git-filter-repo[git-filter-repo] typically
-do not call it!).  Its first argument denotes the command it was
-invoked by: currently one of `amend` or `rebase`.  Further
-command-dependent arguments may be passed in the future.
-
-The hook receives a list of the rewritten commits on stdin, in the
-format
-
-  <old-sha1> SP <new-sha1> [ SP <extra-info> ] LF
-
-The 'extra-info' is again command-dependent.  If it is empty, the
-preceding SP is also omitted.  Currently, no commands pass any
-'extra-info'.
-
-The hook always runs after the automatic note copying (see
-"notes.rewrite.<command>" in linkgit:git-config[1]) has happened, and
-thus has access to these notes.
-
-Hooks run during 'post-rewrite' will be run in parallel, unless hook.jobs is
-configured to 1.
-
-The following command-specific comments apply:
-
-rebase::
-	For the 'squash' and 'fixup' 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
-	'new-sha1'.
-+
-The commits are guaranteed to be listed in the order that they were
-processed by rebase.
-
-sendemail-validate
-~~~~~~~~~~~~~~~~~~
-
-This hook is invoked by linkgit:git-send-email[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 `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` or `.git/hooks/fsmonitor-watchmanv2`
-depending on the version of the hook to use.
-
-Version 1 takes two arguments, a version (1) and the time in elapsed
-nanoseconds since midnight, January 1, 1970.
-
-Version 2 takes two arguments, a version (2) and a token that is used
-for identifying changes since the token. For watchman this would be
-a clock id. This version must output to stdout the new token followed
-by a NUL before the list of files.
-
-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.
-
-p4-changelist
-~~~~~~~~~~~~~
-
-This hook is invoked by `git-p4 submit`.
-
-The `p4-changelist` hook is executed after the changelist
-message has been edited by the user. It can be bypassed with the
-`--no-verify` option. It takes a single parameter, the name
-of the file that holds the proposed changelist text. Exiting
-with a non-zero status causes the command to abort.
-
-The hook is allowed to edit the changelist file and can be used
-to normalize the text into some project standard format. It can
-also be used to refuse the Submit after inspect the message file.
-
-Run `git-p4 submit --help` for details.
-
-p4-prepare-changelist
-~~~~~~~~~~~~~~~~~~~~~
-
-This hook is invoked by `git-p4 submit`.
-
-The `p4-prepare-changelist` hook is executed right after preparing
-the default changelist message and before the editor is started.
-It takes one parameter, the name of the file that contains the
-changelist text. Exiting with a non-zero status from the script
-will abort the process.
-
-The purpose of the hook is to edit the message file in place,
-and it is not suppressed by the `--no-verify` option. This hook
-is called even if `--prepare-p4-only` is set.
-
-Run `git-p4 submit --help` for details.
-
-p4-post-changelist
-~~~~~~~~~~~~~~~~~~
-
-This hook is invoked by `git-p4 submit`.
-
-The `p4-post-changelist` hook is invoked after the submit has
-successfully occurred in P4. It takes no parameters and is meant
-primarily for notification and cannot affect the outcome of the
-git p4 submit action.
-
-Run `git-p4 submit --help` for details.
-
-p4-pre-submit
-~~~~~~~~~~~~~
-
-This hook is invoked by `git-p4 submit`. It takes no parameters and nothing
-from standard input. Exiting with non-zero status from this script prevent
-`git-p4 submit` from launching. It can be bypassed with the `--no-verify`
-command line option. Run `git-p4 submit --help` for details.
-
-
-
-post-index-change
-~~~~~~~~~~~~~~~~~
-
-This hook is invoked when the index is written in read-cache.c
-do_write_locked_index.
-
-The first parameter passed to the hook is the indicator for the
-working directory being updated.  "1" meaning working directory
-was updated or "0" when the working directory was not updated.
-
-The second parameter passed to the hook is the indicator for whether
-or not the index was updated and the skip-worktree bit could have
-changed.  "1" meaning skip-worktree bits could have been updated
-and "0" meaning they were not.
-
-Only one parameter should be set to "1" when the hook runs.  The hook
-running passing "1", "1" should not be possible.
-
-Hooks run during 'post-index-change' will be run in parallel, unless hook.jobs
-is configured to 1.
+include::native-hooks.txt[]
 
 GIT
 ---
diff --git a/Documentation/native-hooks.txt b/Documentation/native-hooks.txt
new file mode 100644
index 0000000000..6c4aad83e1
--- /dev/null
+++ b/Documentation/native-hooks.txt
@@ -0,0 +1,708 @@
+applypatch-msg
+~~~~~~~~~~~~~~
+
+This hook is invoked by linkgit:git-am[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 `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
+format. 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.
+
+Hooks run during 'applypatch-msg' will not be parallelized, because hooks are
+expected to edit the file holding the commit log message.
+
+pre-applypatch
+~~~~~~~~~~~~~~
+
+This hook is invoked by linkgit:git-am[1].  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
+committed after applying the patch.
+
+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.
+
+Hooks run during 'pre-applypatch' will be run in parallel, unless hook.jobs is
+configured to 1.
+
+post-applypatch
+~~~~~~~~~~~~~~~
+
+This hook is invoked by linkgit:git-am[1].  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`.
+
+Hooks run during 'post-applypatch' will be run in parallel, unless hook.jobs is
+configured to 1.
+
+pre-commit
+~~~~~~~~~~
+
+This hook is invoked by linkgit:git-commit[1], and can be bypassed
+with the `--no-verify` 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 `git commit` command to abort before creating a commit.
+
+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
+variable `GIT_EDITOR=:` if the command will not bring up an editor
+to modify the commit message.
+
+The default 'pre-commit' hook, when enabled--and with the
+`hooks.allownonascii` config option unset or set to false--prevents
+the use of non-ASCII filenames.
+
+Hooks executed during 'pre-commit' will not be parallelized.
+
+pre-merge-commit
+~~~~~~~~~~~~~~~~
+
+This hook is invoked by linkgit:git-merge[1], and can be bypassed
+with the `--no-verify` option.  It takes no parameters, and is
+invoked after the merge has been carried out successfully and before
+obtaining the proposed commit log message to
+make a commit.  Exiting with a non-zero status from this script
+causes the `git merge` command to abort before creating a commit.
+
+The default 'pre-merge-commit' hook, when enabled, runs the
+'pre-commit' hook, if the latter is enabled.
+
+This hook is invoked with the environment variable
+`GIT_EDITOR=:` if the command will not bring up an editor
+to modify the commit message.
+
+If the merge cannot be carried out automatically, the conflicts
+need to be resolved and the result committed separately (see
+linkgit:git-merge[1]). At that point, this hook will not be executed,
+but the 'pre-commit' hook will, if it is enabled.
+
+Hooks executed during 'pre-merge-commit' will not be parallelized.
+
+prepare-commit-msg
+~~~~~~~~~~~~~~~~~~
+
+This hook is invoked by linkgit:git-commit[1] 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
+that contains the commit log message.  The second is the source of the commit
+message, and can be: `message` (if a `-m` or `-F` option was
+given); `template` (if a `-t` option was given or the
+configuration option `commit.template` is set); `merge` (if the
+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 SHA-1 (if a `-c`, `-C` or `--amend` option was given).
+
+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
+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 removes the
+help message found in the commented portion of the commit template.
+
+Hooks executed during 'prepare-commit-msg' will not be parallelized, because
+hooks are expected to edit the file containing the commit log message.
+
+commit-msg
+~~~~~~~~~~
+
+This hook is invoked by linkgit:git-commit[1] and linkgit:git-merge[1], 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
+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` trailers, and aborts the commit if one is found.
+
+Hooks executed during 'commit-msg' will not be parallelized, because hooks are
+expected to edit the file containing the proposed commit log message.
+
+post-commit
+~~~~~~~~~~~
+
+This hook is invoked by linkgit:git-commit[1]. It takes no parameters, and is
+invoked after a commit is made.
+
+This hook is meant primarily for notification, and cannot affect
+the outcome of `git commit`.
+
+Hooks executed during 'post-commit' will run in parallel, unless hook.jobs is
+configured to 1.
+
+pre-rebase
+~~~~~~~~~~
+
+This hook is called by linkgit:git-rebase[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.
+
+Hooks executed during 'pre-rebase' will run in parallel, unless hook.jobs is
+configured to 1.
+
+post-checkout
+~~~~~~~~~~~~~
+
+This hook is invoked when a linkgit:git-checkout[1] or
+linkgit:git-switch[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 `git switch` or `git checkout`,
+other than that the hook's exit status becomes the exit status of
+these two commands.
+
+It is also run after linkgit:git-clone[1], unless the `--no-checkout` (`-n`) 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 `git worktree add`
+unless `--no-checkout` is used.
+
+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.
+
+Hooks executed during 'post-checkout' will not be parallelized.
+
+post-merge
+~~~~~~~~~~
+
+This hook is invoked by linkgit:git-merge[1], 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,
+if the merge failed due to conflicts.
+
+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.
+
+Hooks executed during 'post-merge' will run in parallel, unless hook.jobs is
+configured to 1.
+
+pre-push
+~~~~~~~~
+
+This hook is called by linkgit:git-push[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.
+
+Information about what is to be pushed is provided on the hook's standard
+input with lines of the form:
+
+  <local ref> SP <local sha1> SP <remote ref> SP <remote sha1> LF
+
+For instance, if the command +git push origin master:foreign+ were run the
+hook would receive a line like the following:
+
+  refs/heads/master 67890 refs/heads/foreign 12345
+
+although the full, 40-character SHA-1s would be supplied.  If the foreign ref
+does not yet exist the `<remote SHA-1>` will be 40 `0`.  If a ref is to be
+deleted, the `<local ref>` will be supplied as `(delete)` and the `<local
+SHA-1>` will be 40 `0`.  If the local commit was specified by something other
+than a name which could be expanded (such as `HEAD~`, or a SHA-1) it will be
+supplied as it was originally given.
+
+If this hook exits with a non-zero status, `git push` will abort without
+pushing anything.  Information about why the push is rejected may be sent
+to the user by writing to standard error.
+
+Hooks executed during 'pre-push' will run in parallel, unless hook.jobs is
+configured to 1.
+
+[[pre-receive]]
+pre-receive
+~~~~~~~~~~~
+
+This hook is invoked by linkgit:git-receive-pack[1] 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.
+
+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:
+
+  <old-value> SP <new-value> SP <ref-name> LF
+
+where `<old-value>` is the old object name stored in the ref,
+`<new-value>` is the new object name to be stored in the ref and
+`<ref-name>` is the full name of the ref.
+When creating a new ref, `<old-value>` is 40 `0`.
+
+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 <<update,'update'>> hook.
+
+Both standard output and standard error output are forwarded to
+`git send-pack` on the other end, so you can simply `echo` messages
+for the user.
+
+The number of push options given on the command line of
+`git push --push-option=...` can be read from the environment
+variable `GIT_PUSH_OPTION_COUNT`, and the options themselves are
+found in `GIT_PUSH_OPTION_0`, `GIT_PUSH_OPTION_1`,...
+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'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.
+
+Hooks executed during 'pre-receive' will not be parallelized.
+
+[[update]]
+update
+~~~~~~
+
+This hook is invoked by linkgit:git-receive-pack[1] 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.
+
+The hook executes once for each ref to be updated, and takes
+three parameters:
+
+ - the name of the ref being updated,
+ - the old object name stored in the ref,
+ - and the new object name 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`
+from updating that ref.
+
+This hook 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.
+That is, to enforce a "fast-forward only" policy.
+
+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
+<<post-receive,'post-receive'>> hook is more suited to that.
+
+In an environment that restricts the users' 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 linkgit:git-shell[1] for how you might use the login
+shell to restrict the user's access to only git commands.
+
+Both standard output and standard error output are forwarded to
+`git send-pack` on the other end, so you can simply `echo` messages
+for the user.
+
+The default 'update' hook, when enabled--and with
+`hooks.allowunannotated` config option unset or set to false--prevents
+unannotated tags to be pushed.
+
+Hooks executed during 'update' are run in parallel, unless hook.jobs is
+configured to 1.
+
+[[proc-receive]]
+proc-receive
+~~~~~~~~~~~~
+
+This hook is invoked by linkgit:git-receive-pack[1].  If the server has
+set the multi-valued config variable `receive.procReceiveRefs`, and the
+commands sent to 'receive-pack' have matching reference names, these
+commands will be executed by this hook, instead of by the internal
+`execute_commands()` function.  This hook is responsible for updating
+the relevant references and reporting the results back to 'receive-pack'.
+
+This hook executes once for the receive operation.  It takes no
+arguments, but uses a pkt-line format protocol to communicate with
+'receive-pack' to read commands, push-options and send results.  In the
+following example for the protocol, the letter 'S' stands for
+'receive-pack' and the letter 'H' stands for this hook.
+
+    # Version and features negotiation.
+    S: PKT-LINE(version=1\0push-options atomic...)
+    S: flush-pkt
+    H: PKT-LINE(version=1\0push-options...)
+    H: flush-pkt
+
+    # Send commands from server to the hook.
+    S: PKT-LINE(<old-oid> <new-oid> <ref>)
+    S: ... ...
+    S: flush-pkt
+    # Send push-options only if the 'push-options' feature is enabled.
+    S: PKT-LINE(push-option)
+    S: ... ...
+    S: flush-pkt
+
+    # Receive result from the hook.
+    # OK, run this command successfully.
+    H: PKT-LINE(ok <ref>)
+    # NO, I reject it.
+    H: PKT-LINE(ng <ref> <reason>)
+    # Fall through, let 'receive-pack' to execute it.
+    H: PKT-LINE(ok <ref>)
+    H: PKT-LINE(option fall-through)
+    # OK, but has an alternate reference.  The alternate reference name
+    # and other status can be given in option directives.
+    H: PKT-LINE(ok <ref>)
+    H: PKT-LINE(option refname <refname>)
+    H: PKT-LINE(option old-oid <old-oid>)
+    H: PKT-LINE(option new-oid <new-oid>)
+    H: PKT-LINE(option forced-update)
+    H: ... ...
+    H: flush-pkt
+
+Each command for the 'proc-receive' hook may point to a pseudo-reference
+and always has a zero-old as its old-oid, while the 'proc-receive' hook
+may update an alternate reference and the alternate reference may exist
+already with a non-zero old-oid.  For this case, this hook will use
+"option" directives to report extended attributes for the reference given
+by the leading "ok" directive.
+
+The report of the commands of this hook should have the same order as
+the input.  The exit status of the 'proc-receive' hook only determines
+the success or failure of the group of commands sent to it, unless
+atomic push is in use.
+
+It is forbidden to specify more than one hook for 'proc-receive'. If a
+globally-configured 'proc-receive' must be overridden, use
+'hookcmd.<global-hook>.skip = true' to ignore it.
+
+[[post-receive]]
+post-receive
+~~~~~~~~~~~~
+
+This hook is invoked by linkgit:git-receive-pack[1] 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.
+
+This hook executes once for the receive operation.  It takes no
+arguments, but gets the same information as the
+<<pre-receive,'pre-receive'>>
+hook does on its standard input.
+
+This hook does not affect the outcome of `git receive-pack`, as it
+is called after the real work is done.
+
+This supersedes the <<post-update,'post-update'>> hook in that it gets
+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
+for the user.
+
+The default 'post-receive' hook is empty, but there is
+a sample script `post-receive-email` provided in the `contrib/hooks`
+directory in Git distribution, which implements sending commit
+emails.
+
+The number of push options given on the command line of
+`git push --push-option=...` can be read from the environment
+variable `GIT_PUSH_OPTION_COUNT`, and the options themselves are
+found in `GIT_PUSH_OPTION_0`, `GIT_PUSH_OPTION_1`,...
+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't transmit any, the count variable
+will be set to zero, `GIT_PUSH_OPTION_COUNT=0`.
+
+Hooks executed during 'post-receive' are run in parallel, unless hook.jobs is
+configured to 1.
+
+[[post-update]]
+post-update
+~~~~~~~~~~~
+
+This hook is invoked by linkgit:git-receive-pack[1] 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.
+
+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 'post-update' 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
+<<post-receive,'post-receive'>> hook does get both original and
+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
+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
+for the user.
+
+Hooks run during 'post-update' will be run in parallel, unless hook.jobs is
+configured to 1.
+
+reference-transaction
+~~~~~~~~~~~~~~~~~~~~~
+
+This hook is invoked by any Git command that performs reference
+updates. It executes whenever a reference transaction is prepared,
+committed or aborted and may thus get called multiple times.
+
+The hook takes exactly one argument, which is the current state the
+given reference transaction is in:
+
+    - "prepared": All reference updates have been queued to the
+      transaction and references were locked on disk.
+
+    - "committed": The reference transaction was committed and all
+      references now have their respective new value.
+
+    - "aborted": The reference transaction was aborted, no changes
+      were performed and the locks have been released.
+
+For each reference update that was added to the transaction, the hook
+receives on standard input a line of the format:
+
+  <old-value> SP <new-value> SP <ref-name> LF
+
+The exit status of the hook is ignored for any state except for the
+"prepared" state. In the "prepared" state, a non-zero exit status will
+cause the transaction to be aborted. The hook will not be called with
+"aborted" state in that case.
+
+Hooks run during 'reference-transaction' will be run in parallel, unless
+hook.jobs is configured to 1.
+
+push-to-checkout
+~~~~~~~~~~~~~~~~
+
+This hook is invoked by linkgit:git-receive-pack[1] 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
+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.
+
+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.
+
+For example, the hook can simply run `git read-tree -u -m HEAD "$1"`
+in order to emulate `git fetch` that is run in the reverse direction
+with `git push`, as the two-tree form of `git read-tree -u -m` is
+essentially the same as `git switch` or `git checkout`
+that switches branches while
+keeping the local changes in the working tree that do not interfere
+with the difference between the branches.
+
+Hooks executed during 'push-to-checkout' will not be parallelized.
+
+pre-auto-gc
+~~~~~~~~~~~
+
+This hook is invoked by `git gc --auto` (see linkgit:git-gc[1]). It
+takes no parameter, and exiting with non-zero status from this script
+causes the `git gc --auto` to abort.
+
+Hooks run during 'pre-auto-gc' will be run in parallel, unless hook.jobs is
+configured to 1.
+
+post-rewrite
+~~~~~~~~~~~~
+
+This hook is invoked by commands that rewrite commits
+(linkgit:git-commit[1] when called with `--amend` and
+linkgit:git-rebase[1]; however, full-history (re)writing tools like
+linkgit:git-fast-import[1] or
+https://github.com/newren/git-filter-repo[git-filter-repo] typically
+do not call it!).  Its first argument denotes the command it was
+invoked by: currently one of `amend` or `rebase`.  Further
+command-dependent arguments may be passed in the future.
+
+The hook receives a list of the rewritten commits on stdin, in the
+format
+
+  <old-sha1> SP <new-sha1> [ SP <extra-info> ] LF
+
+The 'extra-info' is again command-dependent.  If it is empty, the
+preceding SP is also omitted.  Currently, no commands pass any
+'extra-info'.
+
+The hook always runs after the automatic note copying (see
+"notes.rewrite.<command>" in linkgit:git-config[1]) has happened, and
+thus has access to these notes.
+
+Hooks run during 'post-rewrite' will be run in parallel, unless hook.jobs is
+configured to 1.
+
+The following command-specific comments apply:
+
+rebase::
+	For the 'squash' and 'fixup' 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
+	'new-sha1'.
++
+The commits are guaranteed to be listed in the order that they were
+processed by rebase.
+
+sendemail-validate
+~~~~~~~~~~~~~~~~~~
+
+This hook is invoked by linkgit:git-send-email[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 `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` or `.git/hooks/fsmonitor-watchmanv2`
+depending on the version of the hook to use.
+
+Version 1 takes two arguments, a version (1) and the time in elapsed
+nanoseconds since midnight, January 1, 1970.
+
+Version 2 takes two arguments, a version (2) and a token that is used
+for identifying changes since the token. For watchman this would be
+a clock id. This version must output to stdout the new token followed
+by a NUL before the list of files.
+
+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.
+
+p4-changelist
+~~~~~~~~~~~~~
+
+This hook is invoked by `git-p4 submit`.
+
+The `p4-changelist` hook is executed after the changelist
+message has been edited by the user. It can be bypassed with the
+`--no-verify` option. It takes a single parameter, the name
+of the file that holds the proposed changelist text. Exiting
+with a non-zero status causes the command to abort.
+
+The hook is allowed to edit the changelist file and can be used
+to normalize the text into some project standard format. It can
+also be used to refuse the Submit after inspect the message file.
+
+Run `git-p4 submit --help` for details.
+
+p4-prepare-changelist
+~~~~~~~~~~~~~~~~~~~~~
+
+This hook is invoked by `git-p4 submit`.
+
+The `p4-prepare-changelist` hook is executed right after preparing
+the default changelist message and before the editor is started.
+It takes one parameter, the name of the file that contains the
+changelist text. Exiting with a non-zero status from the script
+will abort the process.
+
+The purpose of the hook is to edit the message file in place,
+and it is not suppressed by the `--no-verify` option. This hook
+is called even if `--prepare-p4-only` is set.
+
+Run `git-p4 submit --help` for details.
+
+p4-post-changelist
+~~~~~~~~~~~~~~~~~~
+
+This hook is invoked by `git-p4 submit`.
+
+The `p4-post-changelist` hook is invoked after the submit has
+successfully occurred in P4. It takes no parameters and is meant
+primarily for notification and cannot affect the outcome of the
+git p4 submit action.
+
+Run `git-p4 submit --help` for details.
+
+p4-pre-submit
+~~~~~~~~~~~~~
+
+This hook is invoked by `git-p4 submit`. It takes no parameters and nothing
+from standard input. Exiting with non-zero status from this script prevent
+`git-p4 submit` from launching. It can be bypassed with the `--no-verify`
+command line option. Run `git-p4 submit --help` for details.
+
+
+
+post-index-change
+~~~~~~~~~~~~~~~~~
+
+This hook is invoked when the index is written in read-cache.c
+do_write_locked_index.
+
+The first parameter passed to the hook is the indicator for the
+working directory being updated.  "1" meaning working directory
+was updated or "0" when the working directory was not updated.
+
+The second parameter passed to the hook is the indicator for whether
+or not the index was updated and the skip-worktree bit could have
+changed.  "1" meaning skip-worktree bits could have been updated
+and "0" meaning they were not.
+
+Only one parameter should be set to "1" when the hook runs.  The hook
+running passing "1", "1" should not be possible.
+
+Hooks run during 'post-index-change' will be run in parallel, unless hook.jobs
+is configured to 1.
+
-- 
2.31.0.rc2.261.g7f71774620-goog
Previous: Emily ShafferNext: Ævar Arnfjörð Bjarmason
Message 103 of 479 in “config-based hooks”
  1. 00/37 config-based hooksEmily Shaffer, Mar 11, 2021
  2. 04/37 hook: include hookdir hook in listEmily Shaffer, Mar 11, 2021
  3. Ævar Arnfjörð BjarmasonMar 12, 2021
  4. Emily ShafferMar 24, 2021
  5. Junio C HamanoMar 24, 2021
  6. Eric SunshineMar 24, 2021
  7. Emily ShafferMar 24, 2021
  8. 01/37 doc: propose hooks managed by the configEmily Shaffer, Mar 11, 2021
  9. 05/37 hook: teach hook.runHookDirEmily Shaffer, Mar 11, 2021
  10. Ævar Arnfjörð BjarmasonMar 12, 2021
  11. Emily ShafferMar 24, 2021
  12. Ævar Arnfjörð BjarmasonMar 24, 2021
  13. 07/37 parse-options: parse into strvecEmily Shaffer, Mar 11, 2021
  14. Ævar Arnfjörð BjarmasonMar 12, 2021
  15. Emily ShafferMar 24, 2021
  16. 09/37 hook: introduce hook_exists()Emily Shaffer, Mar 11, 2021
  17. 11/37 run-command: allow stdin for run_processes_parallelEmily Shaffer, Mar 11, 2021
  18. 02/37 hook: scaffolding for git-hook subcommandEmily Shaffer, Mar 11, 2021
  19. 08/37 hook: add 'run' subcommandEmily Shaffer, Mar 11, 2021
  20. Ævar Arnfjörð BjarmasonMar 12, 2021
  21. Emily ShafferMar 24, 2021
  22. Junio C HamanoMar 12, 2021
  23. 10/37 hook: support passing stdin to hooksEmily Shaffer, Mar 11, 2021
  24. Ævar Arnfjörð BjarmasonMar 12, 2021
  25. Junio C HamanoMar 12, 2021
  26. 03/37 hook: add list commandEmily Shaffer, Mar 11, 2021
  27. Ævar Arnfjörð BjarmasonMar 12, 2021
  28. Emily ShafferMar 24, 2021
  29. Ævar Arnfjörð BjarmasonMar 25, 2021
  30. 13/37 hook: allow specifying working directory for hooksEmily Shaffer, Mar 11, 2021
  31. 06/37 hook: implement hookcmd.<name>.skipEmily Shaffer, Mar 11, 2021
  32. Ævar Arnfjörð BjarmasonMar 12, 2021
  33. 14/37 run-command: add stdin callback for parallelizationEmily Shaffer, Mar 11, 2021
  34. 18/37 commit: use config-based hooksEmily Shaffer, Mar 11, 2021
  35. Junio C HamanoMar 12, 2021
  36. 12/37 hook: allow parallel hook executionEmily Shaffer, Mar 11, 2021
  37. 15/37 hook: provide stdin by string_list or callbackEmily Shaffer, Mar 11, 2021
  38. 17/37 hooks: allow callers to capture outputEmily Shaffer, Mar 11, 2021
  39. Ævar Arnfjörð BjarmasonMar 12, 2021
  40. Emily ShafferMar 24, 2021
  41. 21/37 gc: use hook library for pre-auto-gc hookEmily Shaffer, Mar 11, 2021
  42. 19/37 am: convert applypatch hooks to use configEmily Shaffer, Mar 11, 2021
  43. Junio C HamanoMar 12, 2021
  44. Emily ShafferMar 29, 2021
  45. 20/37 merge: use config-based hooks for post-merge hookEmily Shaffer, Mar 11, 2021
  46. 16/37 run-command: allow capturing of collated outputEmily Shaffer, Mar 11, 2021
  47. 22/37 rebase: teach pre-rebase to use hook.hEmily Shaffer, Mar 11, 2021
  48. Junio C HamanoMar 12, 2021
  49. 26/37 hooks: convert 'post-checkout' hook to hook libraryEmily Shaffer, Mar 11, 2021
  50. 23/37 read-cache: convert post-index-change hook to use configEmily Shaffer, Mar 11, 2021
  51. Junio C HamanoMar 12, 2021
  52. Emily ShafferMar 29, 2021
  53. 29/37 reference-transaction: look for hooks in configEmily Shaffer, Mar 11, 2021
  54. 28/37 transport: convert pre-push hook to use configEmily Shaffer, Mar 11, 2021
  55. 27/37 hook: convert 'post-rewrite' hook to configEmily Shaffer, Mar 11, 2021
  56. 30/37 receive-pack: convert 'update' hook to hook.hEmily Shaffer, Mar 11, 2021
  57. 24/37 receive-pack: convert push-to-checkout hook to hook.hEmily Shaffer, Mar 11, 2021
  58. Junio C HamanoMar 12, 2021
  59. Emily ShafferMar 29, 2021
  60. Junio C HamanoMar 30, 2021
  61. 25/37 git-p4: use 'git hook' to run hooksEmily Shaffer, Mar 11, 2021
  62. 32/37 post-update: use hook.h libraryEmily Shaffer, Mar 11, 2021
  63. Ævar Arnfjörð BjarmasonMar 12, 2021
  64. Emily ShafferMar 30, 2021
  65. 31/37 proc-receive: acquire hook list from hook.hEmily Shaffer, Mar 11, 2021
  66. 34/37 bugreport: use hook_exists instead of find_hookEmily Shaffer, Mar 11, 2021
  67. 33/37 receive-pack: convert receive hooks to hook.hEmily Shaffer, Mar 11, 2021
  68. 35/37 git-send-email: use 'git hook run' for 'sendemail-validate'Emily Shaffer, Mar 11, 2021
  69. Ævar Arnfjörð BjarmasonMar 12, 2021
  70. Emily ShafferMar 30, 2021
  71. Emily ShafferMar 31, 2021
  72. Junio C HamanoMar 31, 2021
  73. Emily ShafferApr 1, 2021
  74. Junio C HamanoApr 1, 2021
  75. 0/2 git-send-email: refactor duplicate $? checks into a functionÆvar Arnfjörð Bjarmason, Apr 2, 2021
  76. 2/2 git-send-email: refactor duplicate $? checks into a functionÆvar Arnfjörð Bjarmason, Apr 2, 2021
  77. Junio C HamanoApr 2, 2021
  78. 1/2 git-send-email: replace "map" in void context with "for"Ævar Arnfjörð Bjarmason, Apr 2, 2021
  79. Junio C HamanoApr 2, 2021
  80. Emily ShafferApr 2, 2021
  81. 0/4 refactor duplicate $? checks into a function + improve errorsÆvar Arnfjörð Bjarmason, Apr 4, 2021
  82. 1/4 git-send-email: replace "map" in void context with "for"Ævar Arnfjörð Bjarmason, Apr 4, 2021
  83. 3/4 git-send-email: test full --validate outputÆvar Arnfjörð Bjarmason, Apr 4, 2021
  84. 4/4 git-send-email: improve --validate error outputÆvar Arnfjörð Bjarmason, Apr 4, 2021
  85. Junio C HamanoApr 5, 2021
  86. 2/4 git-send-email: refactor duplicate $? checks into a functionÆvar Arnfjörð Bjarmason, Apr 4, 2021
  87. Junio C HamanoApr 5, 2021
  88. Junio C HamanoApr 5, 2021
  89. Junio C HamanoApr 8, 2021
  90. Junio C HamanoApr 8, 2021
  91. Ævar Arnfjörð BjarmasonApr 8, 2021
  92. Junio C HamanoApr 9, 2021
  93. Emily ShafferMay 3, 2021
  94. 0/3 refactor duplicate $? checks into a function + improve errorsÆvar Arnfjörð Bjarmason, Apr 6, 2021
  95. 1/3 git-send-email: test full --validate outputÆvar Arnfjörð Bjarmason, Apr 6, 2021
  96. 2/3 git-send-email: refactor duplicate $? checks into a functionÆvar Arnfjörð Bjarmason, Apr 6, 2021
  97. 3/3 git-send-email: improve --validate error outputÆvar Arnfjörð Bjarmason, Apr 6, 2021
  98. Junio C HamanoApr 6, 2021
  99. Emily ShafferMar 12, 2021
  100. 36/37 run-command: stop thinking about hooksEmily Shaffer, Mar 11, 2021
  101. Ævar Arnfjörð BjarmasonMar 12, 2021
  102. Emily ShafferMar 30, 2021
  103. 37/37 docs: unify githooks and git-hook manpagesEmily Shaffer, Mar 11, 2021
  104. Ævar Arnfjörð BjarmasonMar 12, 2021
  105. Emily ShafferMar 30, 2021
  106. Junio C HamanoApr 7, 2021
  107. Jeff HostetlerApr 8, 2021
  108. Junio C HamanoApr 8, 2021
  109. Emily ShafferApr 8, 2021
  110. Junio C HamanoApr 9, 2021
  111. Junio C HamanoMar 11, 2021
  112. Emily ShafferMar 12, 2021
  113. Ævar Arnfjörð BjarmasonMar 12, 2021
  114. Emily ShafferMar 17, 2021
  115. Emily ShafferMar 17, 2021
  116. Ævar Arnfjörð BjarmasonMar 12, 2021
  117. Ævar Arnfjörð BjarmasonMar 25, 2021
  118. 00/37 propose config-based hooksEmily Shaffer, May 27, 2021
  119. 01/37 doc: propose hooks managed by the configEmily Shaffer, May 27, 2021
  120. 02/37 hook: introduce git-hook subcommandEmily Shaffer, May 27, 2021
  121. Junio C HamanoMay 27, 2021
  122. 03/37 hook: include hookdir hook in listEmily Shaffer, May 27, 2021
  123. 04/37 hook: teach hook.runHookDirEmily Shaffer, May 27, 2021
  124. 05/37 hook: implement hookcmd.<name>.skipEmily Shaffer, May 27, 2021
  125. 06/37 parse-options: parse into strvecEmily Shaffer, May 27, 2021
  126. 08/37 hook: introduce hook_exists()Emily Shaffer, May 27, 2021
  127. 07/37 hook: add 'run' subcommandEmily Shaffer, May 27, 2021
  128. Ævar Arnfjörð BjarmasonJun 3, 2021
  129. Junio C HamanoJun 3, 2021
  130. 09/37 hook: support passing stdin to hooksEmily Shaffer, May 27, 2021
  131. 10/37 run-command: allow stdin for run_processes_parallelEmily Shaffer, May 27, 2021
  132. 11/37 hook: allow parallel hook executionEmily Shaffer, May 27, 2021
  133. 12/37 hook: allow specifying working directory for hooksEmily Shaffer, May 27, 2021
  134. 13/37 run-command: add stdin callback for parallelizationEmily Shaffer, May 27, 2021
  135. 14/37 hook: provide stdin by string_list or callbackEmily Shaffer, May 27, 2021
  136. 15/37 run-command: allow capturing of collated outputEmily Shaffer, May 27, 2021
  137. 16/37 hooks: allow callers to capture outputEmily Shaffer, May 27, 2021
  138. 17/37 commit: use config-based hooksEmily Shaffer, May 27, 2021
  139. 18/37 am: convert applypatch hooks to use configEmily Shaffer, May 27, 2021
  140. 19/37 merge: use config-based hooks for post-merge hookEmily Shaffer, May 27, 2021
  141. 20/37 gc: use hook library for pre-auto-gc hookEmily Shaffer, May 27, 2021
  142. 21/37 rebase: teach pre-rebase to use hook.hEmily Shaffer, May 27, 2021
  143. 22/37 read-cache: convert post-index-change hook to use configEmily Shaffer, May 27, 2021
  144. Ævar Arnfjörð BjarmasonMay 27, 2021
  145. Taylor BlauMay 28, 2021
  146. Felipe ContrerasMay 31, 2021
  147. 23/37 receive-pack: convert push-to-checkout hook to hook.hEmily Shaffer, May 27, 2021
  148. 24/37 git-p4: use 'git hook' to run hooksEmily Shaffer, May 27, 2021
  149. 25/37 hooks: convert 'post-checkout' hook to hook libraryEmily Shaffer, May 27, 2021
  150. 26/37 hook: convert 'post-rewrite' hook to configEmily Shaffer, May 27, 2021
  151. 27/37 transport: convert pre-push hook to use configEmily Shaffer, May 27, 2021
  152. 28/37 reference-transaction: look for hooks in configEmily Shaffer, May 27, 2021
  153. 29/37 receive-pack: convert 'update' hook to hook.hEmily Shaffer, May 27, 2021
  154. 30/37 proc-receive: acquire hook list from hook.hEmily Shaffer, May 27, 2021
  155. 31/37 post-update: use hook.h libraryEmily Shaffer, May 27, 2021
  156. Ævar Arnfjörð BjarmasonJun 14, 2021
  157. 32/37 receive-pack: convert receive hooks to hook.hEmily Shaffer, May 27, 2021
  158. 33/37 bugreport: use hook_exists instead of find_hookEmily Shaffer, May 27, 2021
  159. 34/37 git-send-email: use 'git hook run' for 'sendemail-validate'Emily Shaffer, May 27, 2021
  160. Ævar Arnfjörð BjarmasonMay 27, 2021
  161. 35/37 run-command: stop thinking about hooksEmily Shaffer, May 27, 2021
  162. 36/37 doc: clarify fsmonitor-watchman specificationEmily Shaffer, May 27, 2021
  163. 37/37 docs: link githooks and git-hook manpagesEmily Shaffer, May 27, 2021
  164. Ævar Arnfjörð BjarmasonJun 3, 2021
  165. Ævar Arnfjörð BjarmasonMay 27, 2021
  166. Ævar Arnfjörð BjarmasonMay 27, 2021
  167. Felipe ContrerasMay 27, 2021
  168. 00/31 minimal restart of "config-based-hooks"Ævar Arnfjörð Bjarmason, May 28, 2021
  169. 01/31 hooks tests: don't leave "actual" nonexisting on failureÆvar Arnfjörð Bjarmason, May 28, 2021
  170. 02/31 gc tests: add a test for the "pre-auto-gc" hookÆvar Arnfjörð Bjarmason, May 28, 2021
  171. 03/31 hook: add 'run' subcommandÆvar Arnfjörð Bjarmason, May 28, 2021
  172. 04/31 run-command.h: move find_hook() to hook.hÆvar Arnfjörð Bjarmason, May 28, 2021
  173. 05/31 hook.c: add a hook_exists() wrapper and use it in bugreport.cÆvar Arnfjörð Bjarmason, May 28, 2021
  174. 06/31 gc: use hook library for pre-auto-gc hookÆvar Arnfjörð Bjarmason, May 28, 2021
  175. 08/31 am: convert applypatch hooks to use configÆvar Arnfjörð Bjarmason, May 28, 2021
  176. 07/31 rebase: teach pre-rebase to use hook.hÆvar Arnfjörð Bjarmason, May 28, 2021
  177. 09/31 hooks: convert 'post-checkout' hook to hook libraryÆvar Arnfjörð Bjarmason, May 28, 2021
  178. 10/31 merge: use config-based hooks for post-merge hookÆvar Arnfjörð Bjarmason, May 28, 2021
  179. 11/31 git hook run: add an --ignore-missing flagÆvar Arnfjörð Bjarmason, May 28, 2021
  180. 12/31 send-email: use 'git hook run' for 'sendemail-validate'Ævar Arnfjörð Bjarmason, May 28, 2021
  181. 13/31 git-p4: use 'git hook' to run hooksÆvar Arnfjörð Bjarmason, May 28, 2021
  182. 14/31 commit: use hook.h to execute hooksÆvar Arnfjörð Bjarmason, May 28, 2021
  183. 15/31 read-cache: convert post-index-change hook to use configÆvar Arnfjörð Bjarmason, May 28, 2021
  184. 16/31 receive-pack: convert push-to-checkout hook to hook.hÆvar Arnfjörð Bjarmason, May 28, 2021
  185. Felipe ContrerasJun 2, 2021
  186. 19/31 am: convert 'post-rewrite' hook to hook.hÆvar Arnfjörð Bjarmason, May 28, 2021
  187. 17/31 run-command: allow stdin for run_processes_parallelÆvar Arnfjörð Bjarmason, May 28, 2021
  188. 18/31 hook: support passing stdin to hooksÆvar Arnfjörð Bjarmason, May 28, 2021
  189. 20/31 run-command: add stdin callback for parallelizationÆvar Arnfjörð Bjarmason, May 28, 2021
  190. 21/31 hook: provide stdin by string_list or callbackÆvar Arnfjörð Bjarmason, May 28, 2021
  191. Felipe ContrerasJun 2, 2021
  192. 22/31 hook: convert 'post-rewrite' hook in sequencer.c to hook.hÆvar Arnfjörð Bjarmason, May 28, 2021
  193. 23/31 transport: convert pre-push hook to use configÆvar Arnfjörð Bjarmason, May 28, 2021
  194. 24/31 reference-transaction: use hook.h to run hooksÆvar Arnfjörð Bjarmason, May 28, 2021
  195. 25/31 run-command: allow capturing of collated outputÆvar Arnfjörð Bjarmason, May 28, 2021
  196. 26/31 hooks: allow callers to capture outputÆvar Arnfjörð Bjarmason, May 28, 2021
  197. 28/31 post-update: use hook.h libraryÆvar Arnfjörð Bjarmason, May 28, 2021
  198. 27/31 receive-pack: convert 'update' hook to hook.hÆvar Arnfjörð Bjarmason, May 28, 2021
  199. Felipe ContrerasJun 2, 2021
  200. 29/31 receive-pack: convert receive hooks to hook.hÆvar Arnfjörð Bjarmason, May 28, 2021
  201. 30/31 hooks: fix a TOCTOU in "did we run a hook?" heuristicÆvar Arnfjörð Bjarmason, May 28, 2021
  202. Bagas SanjayaMay 28, 2021
  203. Ævar Arnfjörð BjarmasonMay 28, 2021
  204. 31/31 hook-list.h: add a generated list of hooks, like config-list.hÆvar Arnfjörð Bjarmason, May 28, 2021
  205. Ævar Arnfjörð BjarmasonJun 1, 2021
  206. Emily ShafferJun 1, 2021
  207. Derrick StoleeJun 1, 2021
  208. Felipe ContrerasJun 2, 2021
  209. Ævar Arnfjörð BjarmasonJun 2, 2021
  210. Ævar Arnfjörð BjarmasonJun 2, 2021
  211. Felipe ContrerasJun 2, 2021
  212. Ævar Arnfjörð BjarmasonJun 2, 2021
  213. Ævar Arnfjörð BjarmasonJun 2, 2021
  214. Felipe ContrerasJun 25, 2021
  215. 00/30 Minimal restart of "config-based-hooks"Ævar Arnfjörð Bjarmason, Jun 14, 2021
  216. 03/30 hook.c: add a hook_exists() wrapper and use it in bugreport.cÆvar Arnfjörð Bjarmason, Jun 14, 2021
  217. 01/30 hook: add 'run' subcommandÆvar Arnfjörð Bjarmason, Jun 14, 2021
  218. Emily ShafferJun 14, 2021
  219. Ævar Arnfjörð BjarmasonJun 15, 2021
  220. Emily ShafferJun 18, 2021
  221. Ævar Arnfjörð BjarmasonJun 20, 2021
  222. Junio C HamanoJun 21, 2021
  223. Emily ShafferJun 22, 2021
  224. Junio C HamanoJun 29, 2021
  225. Felipe ContrerasJun 25, 2021
  226. Felipe ContrerasJun 25, 2021
  227. 02/30 run-command.h: move find_hook() to hook.hÆvar Arnfjörð Bjarmason, Jun 14, 2021
  228. 12/30 commit: use hook.h to execute hooksÆvar Arnfjörð Bjarmason, Jun 14, 2021
  229. 13/30 read-cache: convert post-index-change hook to use configÆvar Arnfjörð Bjarmason, Jun 14, 2021
  230. Felipe ContrerasJun 25, 2021
  231. 09/30 git hook run: add an --ignore-missing flagÆvar Arnfjörð Bjarmason, Jun 14, 2021
  232. 07/30 hooks: convert 'post-checkout' hook to hook libraryÆvar Arnfjörð Bjarmason, Jun 14, 2021
  233. 06/30 am: convert applypatch hooks to use configÆvar Arnfjörð Bjarmason, Jun 14, 2021
  234. 05/30 rebase: teach pre-rebase to use hook.hÆvar Arnfjörð Bjarmason, Jun 14, 2021
  235. 04/30 gc: use hook library for pre-auto-gc hookÆvar Arnfjörð Bjarmason, Jun 14, 2021
  236. Emily ShafferJun 14, 2021
  237. 08/30 merge: use config-based hooks for post-merge hookÆvar Arnfjörð Bjarmason, Jun 14, 2021
  238. 11/30 git-p4: use 'git hook' to run hooksÆvar Arnfjörð Bjarmason, Jun 14, 2021
  239. 16/30 run-command: allow stdin for run_processes_parallelÆvar Arnfjörð Bjarmason, Jun 14, 2021
  240. 17/30 hook: support passing stdin to hooksÆvar Arnfjörð Bjarmason, Jun 14, 2021
  241. 10/30 send-email: use 'git hook run' for 'sendemail-validate'Ævar Arnfjörð Bjarmason, Jun 14, 2021
  242. 26/30 receive-pack: convert 'update' hook to hook.hÆvar Arnfjörð Bjarmason, Jun 14, 2021
  243. 15/30 run-command: remove old run_hook_{le,ve}() hook APIÆvar Arnfjörð Bjarmason, Jun 14, 2021
  244. Felipe ContrerasJun 25, 2021
  245. 29/30 hooks: fix a TOCTOU in "did we run a hook?" heuristicÆvar Arnfjörð Bjarmason, Jun 14, 2021
  246. 14/30 receive-pack: convert push-to-checkout hook to hook.hÆvar Arnfjörð Bjarmason, Jun 14, 2021
  247. 18/30 am: convert 'post-rewrite' hook to hook.hÆvar Arnfjörð Bjarmason, Jun 14, 2021
  248. 23/30 reference-transaction: use hook.h to run hooksÆvar Arnfjörð Bjarmason, Jun 14, 2021
  249. 20/30 hook: provide stdin by string_list or callbackÆvar Arnfjörð Bjarmason, Jun 14, 2021
  250. 22/30 transport: convert pre-push hook to use configÆvar Arnfjörð Bjarmason, Jun 14, 2021
  251. 19/30 run-command: add stdin callback for parallelizationÆvar Arnfjörð Bjarmason, Jun 14, 2021
  252. 21/30 hook: convert 'post-rewrite' hook in sequencer.c to hook.hÆvar Arnfjörð Bjarmason, Jun 14, 2021
  253. 30/30 hook-list.h: add a generated list of hooks, like config-list.hÆvar Arnfjörð Bjarmason, Jun 14, 2021
  254. Ævar Arnfjörð BjarmasonJun 15, 2021
  255. 27/30 post-update: use hook.h libraryÆvar Arnfjörð Bjarmason, Jun 14, 2021
  256. 25/30 hooks: allow callers to capture outputÆvar Arnfjörð Bjarmason, Jun 14, 2021
  257. 24/30 run-command: allow capturing of collated outputÆvar Arnfjörð Bjarmason, Jun 14, 2021
  258. 28/30 receive-pack: convert receive hooks to hook.hÆvar Arnfjörð Bjarmason, Jun 14, 2021
  259. Emily ShafferJun 14, 2021
  260. Junio C HamanoJun 16, 2021
  261. 00/27 Base for "config-based-hooks"Ævar Arnfjörð Bjarmason, Jun 17, 2021
  262. 01/27 hook: add 'run' subcommandÆvar Arnfjörð Bjarmason, Jun 17, 2021
  263. 04/27 am: convert applypatch hooks to use configÆvar Arnfjörð Bjarmason, Jun 17, 2021
  264. 06/27 merge: use config-based hooks for post-merge hookÆvar Arnfjörð Bjarmason, Jun 17, 2021
  265. 02/27 gc: use hook library for pre-auto-gc hookÆvar Arnfjörð Bjarmason, Jun 17, 2021
  266. Emily ShafferJul 22, 2021
  267. 03/27 rebase: teach pre-rebase to use hook.hÆvar Arnfjörð Bjarmason, Jun 17, 2021
  268. 05/27 hooks: convert 'post-checkout' hook to hook libraryÆvar Arnfjörð Bjarmason, Jun 17, 2021
  269. 09/27 git-p4: use 'git hook' to run hooksÆvar Arnfjörð Bjarmason, Jun 17, 2021
  270. 07/27 git hook run: add an --ignore-missing flagÆvar Arnfjörð Bjarmason, Jun 17, 2021
  271. Emily ShafferJul 2, 2021
  272. 08/27 send-email: use 'git hook run' for 'sendemail-validate'Ævar Arnfjörð Bjarmason, Jun 17, 2021
  273. 10/27 commit: use hook.h to execute hooksÆvar Arnfjörð Bjarmason, Jun 17, 2021
  274. 12/27 receive-pack: convert push-to-checkout hook to hook.hÆvar Arnfjörð Bjarmason, Jun 17, 2021
  275. 13/27 run-command: remove old run_hook_{le,ve}() hook APIÆvar Arnfjörð Bjarmason, Jun 17, 2021
  276. 14/27 run-command: allow stdin for run_processes_parallelÆvar Arnfjörð Bjarmason, Jun 17, 2021
  277. 15/27 hook: support passing stdin to hooksÆvar Arnfjörð Bjarmason, Jun 17, 2021
  278. 11/27 read-cache: convert post-index-change hook to use configÆvar Arnfjörð Bjarmason, Jun 17, 2021
  279. 16/27 am: convert 'post-rewrite' hook to hook.hÆvar Arnfjörð Bjarmason, Jun 17, 2021
  280. 17/27 run-command: add stdin callback for parallelizationÆvar Arnfjörð Bjarmason, Jun 17, 2021
  281. 18/27 hook: provide stdin by string_list or callbackÆvar Arnfjörð Bjarmason, Jun 17, 2021
  282. 19/27 hook: convert 'post-rewrite' hook in sequencer.c to hook.hÆvar Arnfjörð Bjarmason, Jun 17, 2021
  283. 20/27 transport: convert pre-push hook to use configÆvar Arnfjörð Bjarmason, Jun 17, 2021
  284. 22/27 run-command: allow capturing of collated outputÆvar Arnfjörð Bjarmason, Jun 17, 2021
  285. 21/27 reference-transaction: use hook.h to run hooksÆvar Arnfjörð Bjarmason, Jun 17, 2021
  286. 23/27 hooks: allow callers to capture outputÆvar Arnfjörð Bjarmason, Jun 17, 2021
  287. 24/27 receive-pack: convert 'update' hook to hook.hÆvar Arnfjörð Bjarmason, Jun 17, 2021
  288. 25/27 post-update: use hook.h libraryÆvar Arnfjörð Bjarmason, Jun 17, 2021
  289. 26/27 receive-pack: convert receive hooks to hook.hÆvar Arnfjörð Bjarmason, Jun 17, 2021
  290. 27/27 hooks: fix a TOCTOU in "did we run a hook?" heuristicÆvar Arnfjörð Bjarmason, Jun 17, 2021
  291. Emily ShafferJun 18, 2021
  292. 0/9 config-based hooks restartedEmily Shaffer, Jul 15, 2021
  293. 1/9 hook: run a list of hooks insteadEmily Shaffer, Jul 15, 2021
  294. 2/9 hook: allow parallel hook executionEmily Shaffer, Jul 15, 2021
  295. Ævar Arnfjörð BjarmasonJul 16, 2021
  296. Emily ShafferJul 22, 2021
  297. Ævar Arnfjörð BjarmasonJul 23, 2021
  298. 5/9 hook: allow running non-native hooksEmily Shaffer, Jul 15, 2021
  299. 4/9 hook: treat hookdir hook speciallyEmily Shaffer, Jul 15, 2021
  300. Ævar Arnfjörð BjarmasonJul 16, 2021
  301. Emily ShafferJul 22, 2021
  302. Ævar Arnfjörð BjarmasonJul 23, 2021
  303. Felipe ContrerasJul 23, 2021
  304. Eric SunshineJul 23, 2021
  305. Felipe ContrerasJul 23, 2021
  306. 3/9 hook: introduce "git hook list"Emily Shaffer, Jul 15, 2021
  307. Ævar Arnfjörð BjarmasonJul 16, 2021
  308. Emily ShafferJul 22, 2021
  309. Ævar Arnfjörð BjarmasonJul 23, 2021
  310. 6/9 hook: include hooks from the configEmily Shaffer, Jul 15, 2021
  311. Ævar Arnfjörð BjarmasonJul 16, 2021
  312. Emily ShafferJul 22, 2021
  313. Ævar Arnfjörð BjarmasonJul 23, 2021
  314. 8/9 hook: teach 'hookcmd' config to alias hook scriptsEmily Shaffer, Jul 15, 2021
  315. Ævar Arnfjörð BjarmasonJul 16, 2021
  316. Emily ShafferJul 22, 2021
  317. Ævar Arnfjörð BjarmasonJul 23, 2021
  318. Emily ShafferAug 4, 2021
  319. Ævar Arnfjörð BjarmasonAug 5, 2021
  320. Emily ShafferAug 5, 2021
  321. Ævar Arnfjörð BjarmasonAug 5, 2021
  322. Emily ShafferAug 6, 2021
  323. Jonathan TanAug 4, 2021
  324. 7/9 hook: allow out-of-repo 'git hook' invocationsEmily Shaffer, Jul 15, 2021
  325. Ævar Arnfjörð BjarmasonJul 16, 2021
  326. Emily ShafferJul 22, 2021
  327. Ævar Arnfjörð BjarmasonJul 23, 2021
  328. 9/9 hook: implement hookcmd.<name>.skipEmily Shaffer, Jul 15, 2021
  329. Emily ShafferJul 28, 2021
  330. 00/36 Run hooks via "git run hook" & hook libraryÆvar Arnfjörð Bjarmason, Aug 3, 2021
  331. 01/36 Makefile: mark "check" target as .PHONYÆvar Arnfjörð Bjarmason, Aug 3, 2021
  332. Emily ShafferAug 20, 2021
  333. 02/36 Makefile: stop hardcoding {command,config}-list.hÆvar Arnfjörð Bjarmason, Aug 3, 2021
  334. Emily ShafferAug 20, 2021
  335. Ævar Arnfjörð BjarmasonAug 24, 2021
  336. 03/36 Makefile: remove an out-of-date commentÆvar Arnfjörð Bjarmason, Aug 3, 2021
  337. Emily ShafferAug 20, 2021
  338. 04/36 hook.[ch]: move find_hook() to this new libraryÆvar Arnfjörð Bjarmason, Aug 3, 2021
  339. Emily ShafferAug 20, 2021
  340. 05/36 hook.c: add a hook_exists() wrapper and use it in bugreport.cÆvar Arnfjörð Bjarmason, Aug 3, 2021
  341. Emily ShafferAug 20, 2021
  342. 07/36 hook-list.h: add a generated list of hooks, like config-list.hÆvar Arnfjörð Bjarmason, Aug 3, 2021
  343. 06/36 hook.c users: use "hook_exists()" insted of "find_hook()"Ævar Arnfjörð Bjarmason, Aug 3, 2021
  344. Emily ShafferAug 20, 2021
  345. 08/36 hook: add 'run' subcommandÆvar Arnfjörð Bjarmason, Aug 3, 2021
  346. Ævar Arnfjörð BjarmasonAug 4, 2021
  347. 12/36 hooks: convert 'post-checkout' hook to hook libraryÆvar Arnfjörð Bjarmason, Aug 3, 2021
  348. 09/36 gc: use hook library for pre-auto-gc hookÆvar Arnfjörð Bjarmason, Aug 3, 2021
  349. 10/36 rebase: convert pre-rebase to use hook.hÆvar Arnfjörð Bjarmason, Aug 3, 2021
  350. 11/36 am: convert applypatch to use hook.hÆvar Arnfjörð Bjarmason, Aug 3, 2021
  351. 13/36 merge: convert post-merge to use hook.hÆvar Arnfjörð Bjarmason, Aug 3, 2021
  352. 14/36 git hook run: add an --ignore-missing flagÆvar Arnfjörð Bjarmason, Aug 3, 2021
  353. 15/36 send-email: use 'git hook run' for 'sendemail-validate'Ævar Arnfjörð Bjarmason, Aug 3, 2021
  354. 16/36 git-p4: use 'git hook' to run hooksÆvar Arnfjörð Bjarmason, Aug 3, 2021
  355. 17/36 commit: convert {pre-commit,prepare-commit-msg} hook to hook.hÆvar Arnfjörð Bjarmason, Aug 3, 2021
  356. 18/36 read-cache: convert post-index-change to use hook.hÆvar Arnfjörð Bjarmason, Aug 3, 2021
  357. 19/36 receive-pack: convert push-to-checkout hook to hook.hÆvar Arnfjörð Bjarmason, Aug 3, 2021
  358. 20/36 run-command: remove old run_hook_{le,ve}() hook APIÆvar Arnfjörð Bjarmason, Aug 3, 2021
  359. 21/36 run-command: allow stdin for run_processes_parallelÆvar Arnfjörð Bjarmason, Aug 3, 2021
  360. 22/36 hook: support passing stdin to hooksÆvar Arnfjörð Bjarmason, Aug 3, 2021
  361. 24/36 run-command: add stdin callback for parallelizationÆvar Arnfjörð Bjarmason, Aug 3, 2021
  362. 23/36 am: convert 'post-rewrite' hook to hook.hÆvar Arnfjörð Bjarmason, Aug 3, 2021
  363. 26/36 hook: convert 'post-rewrite' hook in sequencer.c to hook.hÆvar Arnfjörð Bjarmason, Aug 3, 2021
  364. 25/36 hook: provide stdin by string_list or callbackÆvar Arnfjörð Bjarmason, Aug 3, 2021
  365. 27/36 transport: convert pre-push hook to hook.hÆvar Arnfjörð Bjarmason, Aug 3, 2021
  366. 28/36 hook tests: test for exact "pre-push" hook inputÆvar Arnfjörð Bjarmason, Aug 3, 2021
  367. Emily ShafferAug 20, 2021
  368. 29/36 hook tests: use a modern style for "pre-push" testsÆvar Arnfjörð Bjarmason, Aug 3, 2021
  369. Emily ShafferAug 20, 2021
  370. 30/36 reference-transaction: use hook.h to run hooksÆvar Arnfjörð Bjarmason, Aug 3, 2021
  371. 32/36 hooks: allow callers to capture outputÆvar Arnfjörð Bjarmason, Aug 3, 2021
  372. 31/36 run-command: allow capturing of collated outputÆvar Arnfjörð Bjarmason, Aug 3, 2021
  373. 33/36 receive-pack: convert 'update' hook to hook.hÆvar Arnfjörð Bjarmason, Aug 3, 2021
  374. 36/36 hooks: fix a TOCTOU in "did we run a hook?" heuristicÆvar Arnfjörð Bjarmason, Aug 3, 2021
  375. 34/36 post-update: use hook.h libraryÆvar Arnfjörð Bjarmason, Aug 3, 2021
  376. 35/36 receive-pack: convert receive hooks to hook.hÆvar Arnfjörð Bjarmason, Aug 3, 2021
  377. 0/6 config-based hooks restartedEmily Shaffer, Aug 12, 2021
  378. 1/6 hook: run a list of hooks insteadEmily Shaffer, Aug 12, 2021
  379. Junio C HamanoAug 12, 2021
  380. Emily ShafferAug 16, 2021
  381. 2/6 hook: allow parallel hook executionEmily Shaffer, Aug 12, 2021
  382. Junio C HamanoAug 12, 2021
  383. Emily ShafferAug 16, 2021
  384. 3/6 hook: introduce "git hook list"Emily Shaffer, Aug 12, 2021
  385. Junio C HamanoAug 12, 2021
  386. Emily ShafferAug 17, 2021
  387. 4/6 hook: allow running non-native hooksEmily Shaffer, Aug 12, 2021
  388. Junio C HamanoAug 12, 2021
  389. Emily ShafferAug 18, 2021
  390. Emily ShafferAug 18, 2021
  391. Junio C HamanoAug 18, 2021
  392. 5/6 hook: include hooks from the configEmily Shaffer, Aug 12, 2021
  393. Junio C HamanoAug 12, 2021
  394. Emily ShafferAug 19, 2021
  395. 6/6 hook: allow out-of-repo 'git hook' invocationsEmily Shaffer, Aug 12, 2021
  396. Junio C HamanoAug 12, 2021
  397. Junio C HamanoAug 12, 2021
  398. Emily ShafferAug 16, 2021
  399. 0/6 config-based hooks restartedEmily Shaffer, Aug 19, 2021
  400. 1/6 hook: run a list of hooks insteadEmily Shaffer, Aug 19, 2021
  401. Ævar Arnfjörð BjarmasonAug 24, 2021
  402. Emily ShafferAug 26, 2021
  403. Ævar Arnfjörð BjarmasonAug 27, 2021
  404. 2/6 hook: allow parallel hook executionEmily Shaffer, Aug 19, 2021
  405. Ævar Arnfjörð BjarmasonAug 24, 2021
  406. Eric SunshineAug 24, 2021
  407. Emily ShafferAug 26, 2021
  408. 3/6 hook: introduce "git hook list"Emily Shaffer, Aug 19, 2021
  409. Ævar Arnfjörð BjarmasonAug 24, 2021
  410. Emily ShafferAug 26, 2021
  411. Ævar Arnfjörð BjarmasonAug 24, 2021
  412. Emily ShafferAug 26, 2021
  413. 4/6 hook: allow running non-native hooksEmily Shaffer, Aug 19, 2021
  414. Ævar Arnfjörð BjarmasonAug 24, 2021
  415. Emily ShafferAug 26, 2021
  416. Junio C HamanoAug 27, 2021
  417. 5/6 hook: include hooks from the configEmily Shaffer, Aug 19, 2021
  418. Junio C HamanoAug 19, 2021
  419. Emily ShafferAug 19, 2021
  420. Junio C HamanoAug 19, 2021
  421. Ævar Arnfjörð BjarmasonAug 24, 2021
  422. Emily ShafferAug 31, 2021
  423. 6/6 hook: allow out-of-repo 'git hook' invocationsEmily Shaffer, Aug 19, 2021
  424. Ævar Arnfjörð BjarmasonAug 24, 2021
  425. Randall S. BeckerAug 24, 2021
  426. Ævar Arnfjörð BjarmasonAug 24, 2021
  427. Emily ShafferAug 31, 2021
  428. Ævar Arnfjörð BjarmasonAug 24, 2021
  429. Emily ShafferSep 2, 2021
  430. 0/5 config-based hooks restartedÆvar Arnfjörð Bjarmason, Sep 9, 2021
  431. 1/5 hook: run a list of hooks insteadÆvar Arnfjörð Bjarmason, Sep 9, 2021
  432. fixup! hook: run a list of hooks insteadÆvar Arnfjörð Bjarmason, Sep 9, 2021
  433. 2/5 hook: allow parallel hook executionÆvar Arnfjörð Bjarmason, Sep 9, 2021
  434. 3/5 hook: introduce "git hook list"Ævar Arnfjörð Bjarmason, Sep 9, 2021
  435. 5/5 hook: allow out-of-repo 'git hook' invocationsÆvar Arnfjörð Bjarmason, Sep 9, 2021
  436. 4/5 hook: include hooks from the configÆvar Arnfjörð Bjarmason, Sep 9, 2021
  437. Emily ShafferAug 19, 2021
  438. Emily ShafferAug 19, 2021
  439. Ævar Arnfjörð BjarmasonSep 2, 2021
  440. 00/36 Run hooks via "git run hook" & hook libraryÆvar Arnfjörð Bjarmason, Sep 2, 2021
  441. 01/36 Makefile: mark "check" target as .PHONYÆvar Arnfjörð Bjarmason, Sep 2, 2021
  442. 02/36 Makefile: stop hardcoding {command,config}-list.hÆvar Arnfjörð Bjarmason, Sep 2, 2021
  443. 03/36 Makefile: remove an out-of-date commentÆvar Arnfjörð Bjarmason, Sep 2, 2021
  444. 04/36 hook.[ch]: move find_hook() from run-command.c to hook.cÆvar Arnfjörð Bjarmason, Sep 2, 2021
  445. 05/36 hook.c: add a hook_exists() wrapper and use it in bugreport.cÆvar Arnfjörð Bjarmason, Sep 2, 2021
  446. 06/36 hook.c users: use "hook_exists()" instead of "find_hook()"Ævar Arnfjörð Bjarmason, Sep 2, 2021
  447. 07/36 hook-list.h: add a generated list of hooks, like config-list.hÆvar Arnfjörð Bjarmason, Sep 2, 2021
  448. 08/36 hook: add 'run' subcommandÆvar Arnfjörð Bjarmason, Sep 2, 2021
  449. 09/36 gc: use hook library for pre-auto-gc hookÆvar Arnfjörð Bjarmason, Sep 2, 2021
  450. 10/36 rebase: convert pre-rebase to use hook.hÆvar Arnfjörð Bjarmason, Sep 2, 2021
  451. 11/36 am: convert applypatch to use hook.hÆvar Arnfjörð Bjarmason, Sep 2, 2021
  452. 12/36 hooks: convert 'post-checkout' hook to hook libraryÆvar Arnfjörð Bjarmason, Sep 2, 2021
  453. 13/36 merge: convert post-merge to use hook.hÆvar Arnfjörð Bjarmason, Sep 2, 2021
  454. 14/36 git hook run: add an --ignore-missing flagÆvar Arnfjörð Bjarmason, Sep 2, 2021
  455. 15/36 send-email: use 'git hook run' for 'sendemail-validate'Ævar Arnfjörð Bjarmason, Sep 2, 2021
  456. 16/36 git-p4: use 'git hook' to run hooksÆvar Arnfjörð Bjarmason, Sep 2, 2021
  457. 17/36 commit: convert {pre-commit,prepare-commit-msg} hook to hook.hÆvar Arnfjörð Bjarmason, Sep 2, 2021
  458. 18/36 read-cache: convert post-index-change to use hook.hÆvar Arnfjörð Bjarmason, Sep 2, 2021
  459. 19/36 receive-pack: convert push-to-checkout hook to hook.hÆvar Arnfjörð Bjarmason, Sep 2, 2021
  460. 20/36 run-command: remove old run_hook_{le,ve}() hook APIÆvar Arnfjörð Bjarmason, Sep 2, 2021
  461. 21/36 run-command: allow stdin for run_processes_parallelÆvar Arnfjörð Bjarmason, Sep 2, 2021
  462. 22/36 hook: support passing stdin to hooksÆvar Arnfjörð Bjarmason, Sep 2, 2021
  463. 23/36 am: convert 'post-rewrite' hook to hook.hÆvar Arnfjörð Bjarmason, Sep 2, 2021
  464. 24/36 run-command: add stdin callback for parallelizationÆvar Arnfjörð Bjarmason, Sep 2, 2021
  465. ab/config-based-hooks-N status (was Re: [PATCH v5 24/36] run-command: add stdin callback for parallelization)Ævar Arnfjörð Bjarmason, Oct 6, 2021
  466. Ævar Arnfjörð BjarmasonOct 12, 2021
  467. 25/36 hook: provide stdin by string_list or callbackÆvar Arnfjörð Bjarmason, Sep 2, 2021
  468. 26/36 hook: convert 'post-rewrite' hook in sequencer.c to hook.hÆvar Arnfjörð Bjarmason, Sep 2, 2021
  469. 28/36 hook tests: test for exact "pre-push" hook inputÆvar Arnfjörð Bjarmason, Sep 2, 2021
  470. 27/36 transport: convert pre-push hook to hook.hÆvar Arnfjörð Bjarmason, Sep 2, 2021
  471. 31/36 run-command: allow capturing of collated outputÆvar Arnfjörð Bjarmason, Sep 2, 2021
  472. 32/36 hooks: allow callers to capture outputÆvar Arnfjörð Bjarmason, Sep 2, 2021
  473. 30/36 reference-transaction: use hook.h to run hooksÆvar Arnfjörð Bjarmason, Sep 2, 2021
  474. 29/36 hook tests: use a modern style for "pre-push" testsÆvar Arnfjörð Bjarmason, Sep 2, 2021
  475. 33/36 receive-pack: convert 'update' hook to hook.hÆvar Arnfjörð Bjarmason, Sep 2, 2021
  476. 34/36 post-update: use hook.h libraryÆvar Arnfjörð Bjarmason, Sep 2, 2021
  477. 35/36 receive-pack: convert receive hooks to hook.hÆvar Arnfjörð Bjarmason, Sep 2, 2021
  478. 36/36 hooks: fix a TOCTOU in "did we run a hook?" heuristicÆvar Arnfjörð Bjarmason, Sep 2, 2021
  479. Felipe ContrerasJun 25, 2021

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.