push: Add support for pre-push hooks
authorAaron Schrab <aaron@schrab.com>
Sun, 13 Jan 2013 05:17:03 +0000 (00:17 -0500)
committerJunio C Hamano <gitster@pobox.com>
Fri, 18 Jan 2013 19:13:22 +0000 (11:13 -0800)
commitec55559f937727bcb0fa8a3dfe6af68c188e968a
treec77a367930b6be70b01348c443fd09c4a1e8e836
parent5a7da2dca166fab74f4514697e26dd80e79933f5
push: Add support for pre-push hooks

Add support for a pre-push hook which can be used to determine if the
set of refs to be pushed is suitable for the target repository.  The
hook is run with two arguments specifying the name and location of the
destination repository.

Information about what is to be pushed is provided by sending lines of
the following form to the hook's standard input:

  <local ref> SP <local sha1> SP <remote ref> SP <remote sha1> LF

If the hook exits with a non-zero status, the push will be aborted.

This will allow the script to determine if the push is acceptable based
on the target repository and branch(es), the commits which are to be
pushed, and even the source branches in some cases.

Signed-off-by: Aaron Schrab <aaron@schrab.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Documentation/githooks.txt
builtin/push.c
t/t5571-pre-push-hook.sh [new file with mode: 0755]
transport.c
transport.h