зеркало из https://github.com/microsoft/git.git
doc: add documentation for the proc-receive hook
"git receive-pack" that accepts requests by "git push" learned to outsource some of the ref updates to the new "proc-receive" hook. Signed-off-by: Jiang Xin <zhiyou.jx@alibaba-inc.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
Родитель
1702ae6f61
Коммит
d6edc189f6
|
@ -333,6 +333,68 @@ The default 'update' hook, when enabled--and with
|
||||||
`hooks.allowunannotated` config option unset or set to false--prevents
|
`hooks.allowunannotated` config option unset or set to false--prevents
|
||||||
unannotated tags to be pushed.
|
unannotated tags to be pushed.
|
||||||
|
|
||||||
|
[[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.
|
||||||
|
|
||||||
[[post-receive]]
|
[[post-receive]]
|
||||||
post-receive
|
post-receive
|
||||||
~~~~~~~~~~~~
|
~~~~~~~~~~~~
|
||||||
|
|
Загрузка…
Ссылка в новой задаче