Merge branch 'ps/update-ref-trans-hook-doc'

Doc update.

* ps/update-ref-trans-hook-doc:
  githooks.txt: clarify documentation on reference-transaction hook
  githooks.txt: replace mentions of SHA-1 specific properties
This commit is contained in:
Junio C Hamano 2021-03-22 14:00:25 -07:00
commit 20adca9006

View File

@ -138,7 +138,7 @@ given); `template` (if a `-t` option was given or the
configuration option `commit.template` is set); `merge` (if the configuration option `commit.template` is set); `merge` (if the
commit is a merge or a `.git/MERGE_MSG` file exists); `squash` commit is a merge or a `.git/MERGE_MSG` file exists); `squash`
(if a `.git/SQUASH_MSG` file exists); or `commit`, followed by (if a `.git/SQUASH_MSG` file exists); or `commit`, followed by
a commit SHA-1 (if a `-c`, `-C` or `--amend` option was given). a commit object name (if a `-c`, `-C` or `--amend` option was given).
If the exit status is non-zero, `git commit` will abort. If the exit status is non-zero, `git commit` will abort.
@ -231,19 +231,19 @@ 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 Information about what is to be pushed is provided on the hook's standard
input with lines of the form: input with lines of the form:
<local ref> SP <local sha1> SP <remote ref> SP <remote sha1> LF <local ref> SP <local object name> SP <remote ref> SP <remote object name> LF
For instance, if the command +git push origin master:foreign+ were run the For instance, if the command +git push origin master:foreign+ were run the
hook would receive a line like the following: hook would receive a line like the following:
refs/heads/master 67890 refs/heads/foreign 12345 refs/heads/master 67890 refs/heads/foreign 12345
although the full, 40-character SHA-1s would be supplied. If the foreign ref although the full object name would be supplied. If the foreign ref does not
does not yet exist the `<remote SHA-1>` will be 40 `0`. If a ref is to be yet exist the `<remote object name>` will be the all-zeroes object name. If a
deleted, the `<local ref>` will be supplied as `(delete)` and the `<local ref is to be deleted, the `<local ref>` will be supplied as `(delete)` and the
SHA-1>` will be 40 `0`. If the local commit was specified by something other `<local object name>` will be the all-zeroes object name. If the local commit
than a name which could be expanded (such as `HEAD~`, or a SHA-1) it will be was specified by something other than a name which could be expanded (such as
supplied as it was originally given. `HEAD~`, or an object name) it will be supplied as it was originally given.
If this hook exits with a non-zero status, `git push` will abort without 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 pushing anything. Information about why the push is rejected may be sent
@ -268,7 +268,7 @@ input a line of the format:
where `<old-value>` is the old object name stored in the ref, 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 `<new-value>` is the new object name to be stored in the ref and
`<ref-name>` is the full name of the ref. `<ref-name>` is the full name of the ref.
When creating a new ref, `<old-value>` is 40 `0`. When creating a new ref, `<old-value>` is the all-zeroes object name.
If the hook exits with non-zero status, none of the refs will be 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 updated. If the hook exits with zero, updating of individual refs can
@ -473,7 +473,8 @@ reference-transaction
This hook is invoked by any Git command that performs reference This hook is invoked by any Git command that performs reference
updates. It executes whenever a reference transaction is prepared, updates. It executes whenever a reference transaction is prepared,
committed or aborted and may thus get called multiple times. committed or aborted and may thus get called multiple times. The hook
does not cover symbolic references (but that may change in the future).
The hook takes exactly one argument, which is the current state the The hook takes exactly one argument, which is the current state the
given reference transaction is in: given reference transaction is in:
@ -492,6 +493,14 @@ receives on standard input a line of the format:
<old-value> SP <new-value> SP <ref-name> LF <old-value> SP <new-value> SP <ref-name> LF
where `<old-value>` is the old object name passed into the reference
transaction, `<new-value>` is the new object name to be stored in the
ref and `<ref-name>` is the full name of the ref. When force updating
the reference regardless of its current value or when the reference is
to be created anew, `<old-value>` is the all-zeroes object name. To
distinguish these cases, you can inspect the current value of
`<ref-name>` via `git rev-parse`.
The exit status of the hook is ignored for any state except for the 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 "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 cause the transaction to be aborted. The hook will not be called with
@ -550,7 +559,7 @@ command-dependent arguments may be passed in the future.
The hook receives a list of the rewritten commits on stdin, in the The hook receives a list of the rewritten commits on stdin, in the
format format
<old-sha1> SP <new-sha1> [ SP <extra-info> ] LF <old-object-name> SP <new-object-name> [ SP <extra-info> ] LF
The 'extra-info' is again command-dependent. If it is empty, the The 'extra-info' is again command-dependent. If it is empty, the
preceding SP is also omitted. Currently, no commands pass any preceding SP is also omitted. Currently, no commands pass any
@ -566,7 +575,7 @@ rebase::
For the 'squash' and 'fixup' operation, all commits that were For the 'squash' and 'fixup' operation, all commits that were
squashed are listed as being rewritten to the squashed commit. squashed are listed as being rewritten to the squashed commit.
This means that there will be several lines sharing the same This means that there will be several lines sharing the same
'new-sha1'. 'new-object-name'.
+ +
The commits are guaranteed to be listed in the order that they were The commits are guaranteed to be listed in the order that they were
processed by rebase. processed by rebase.