Shawn O. Pearce 05ef58ec1f Teach receive-pack to run pre-receive/post-receive hooks
Bill Lear pointed out that it is easy to send out notifications of
changes with the update hook, but successful execution of the update
hook does not necessarily mean that the ref was actually updated.
Lock contention on the ref or being unable to append to the reflog
may prevent the ref from being changed.  Sending out notifications
prior to the ref actually changing is very misleading.

To help this situation I am introducing two new hooks to the
receive-pack flow: pre-receive and post-receive.  These new hooks
are invoked only once per receive-pack execution and are passed
three arguments per ref (refname, old-sha1, new-sha1).

The new post-receive hook is ideal for sending out notifications,
as it has the complete list of all refnames that were successfully
updated as well as the old and new SHA-1 values.  This allows more
interesting notifications to be sent.  Multiple ref updates could
be easily summarized into one email, for example.

The new pre-receive hook is ideal for logging update attempts, as it
is run only once for the entire receive-pack operation.  It can also
be used to verify multiple updates happen at once, e.g. an update
to the `maint` head must also be accompained by a new annotated tag.

Lots of documentation improvements for receive-pack are included
in this change, as we want to make sure the new hooks are clearly
explained.

Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
Signed-off-by: Junio C Hamano <junkio@cox.net>
2007-03-07 15:03:33 -08:00
2007-02-03 21:49:54 -08:00
2007-03-02 16:57:53 -08:00
2007-02-28 14:38:36 -08:00
2007-03-03 19:47:46 -08:00
2007-02-27 22:15:42 -08:00
2007-02-25 11:08:47 -08:00
2007-02-18 15:58:08 -08:00
2007-02-24 01:42:06 -08:00
2007-02-28 14:38:36 -08:00
2006-05-01 22:29:16 -07:00
2007-03-07 10:47:10 -08:00
2007-03-02 00:37:12 -08:00
2007-03-07 11:15:26 -08:00
2006-11-21 20:55:39 -08:00
2007-02-18 15:57:36 -08:00
2007-02-14 11:19:28 -08:00
2005-12-27 10:49:25 -08:00
2005-08-09 22:28:19 -07:00
2005-10-14 17:17:27 -07:00
2006-05-15 12:32:13 -07:00
2007-03-04 17:31:09 -08:00
2007-03-07 11:15:26 -08:00
2007-03-07 11:15:26 -08:00
2006-12-29 11:01:31 -08:00
2007-03-07 10:47:10 -08:00
2006-03-05 02:47:29 -08:00
2007-03-05 23:11:54 -08:00
2007-02-28 14:18:57 -08:00
2007-03-03 12:11:22 -08:00
2006-02-06 21:43:27 -08:00
2007-02-03 21:49:54 -08:00
2007-02-03 21:49:54 -08:00
2007-02-08 15:23:52 -08:00
2005-09-07 17:45:20 -07:00
2007-01-18 14:22:24 -08:00
2007-01-30 21:03:11 -08:00
2007-03-04 17:20:38 -08:00
2007-03-03 19:47:46 -08:00
2006-09-27 23:59:09 -07:00
2007-03-02 00:31:51 -08:00
2007-03-07 10:47:10 -08:00
2007-03-07 10:47:10 -08:00
2007-03-07 10:47:10 -08:00
2006-06-26 14:58:41 -07:00
2007-02-27 01:34:21 -08:00
2007-02-27 01:34:21 -08:00
2007-03-07 10:47:10 -08:00
2007-01-17 12:03:50 -08:00
2007-02-08 17:48:22 -08:00
2007-03-07 11:15:26 -08:00
2007-02-03 11:57:18 -08:00
2007-02-28 14:38:36 -08:00
2007-03-07 11:15:26 -08:00
2006-10-20 16:50:36 -07:00
2007-02-27 01:34:21 -08:00
2005-11-02 16:50:58 -08:00
2006-03-25 16:35:43 -08:00
2007-03-03 19:47:46 -08:00

////////////////////////////////////////////////////////////////

	GIT - the stupid content tracker

////////////////////////////////////////////////////////////////

"git" can mean anything, depending on your mood.

 - random three-letter combination that is pronounceable, and not
   actually used by any common UNIX command.  The fact that it is a
   mispronunciation of "get" may or may not be relevant.
 - stupid. contemptible and despicable. simple. Take your pick from the
   dictionary of slang.
 - "global information tracker": you're in a good mood, and it actually
   works for you. Angels sing, and a light suddenly fills the room.
 - "goddamn idiotic truckload of sh*t": when it breaks

Git is a fast, scalable, distributed revision control system with an
unusually rich command set that provides both high-level operations
and full access to internals.

Git is an Open Source project covered by the GNU General Public License.
It was originally written by Linus Torvalds with help of a group of
hackers around the net. It is currently maintained by Junio C Hamano.

Please read the file INSTALL for installation instructions.
See Documentation/tutorial.txt to get started, then see
Documentation/everyday.txt for a useful minimum set of commands,
and "man git-commandname" for documentation of each command.
CVS users may also want to read Documentation/cvs-migration.txt.

Many Git online resources are accessible from http://git.or.cz/
including full documentation and Git related tools.

The user discussion and development of Git take place on the Git
mailing list -- everyone is welcome to post bug reports, feature
requests, comments and patches to git@vger.kernel.org. To subscribe
to the list, send an email with just "subscribe git" in the body to
majordomo@vger.kernel.org. The mailing list archives are available at
http://marc.theaimsgroup.com/?l=git and other archival sites.
Description
No description provided
Readme 279 MiB
Languages
C 50.5%
Shell 38.7%
Perl 4.5%
Tcl 3.2%
Python 0.8%
Other 2.1%