upload-pack: feed "kind [clone|fetch]" to post-upload-pack hook
authorJunio C Hamano <gitster@pobox.com>
Sat, 29 Aug 2009 05:19:45 +0000 (22:19 -0700)
committerJunio C Hamano <gitster@pobox.com>
Sat, 29 Aug 2009 05:39:24 +0000 (22:39 -0700)
commit11cae066b2433fcec807810b45f317f8203df358
tree562555f95cfa2532a04123be4ca4971e1ac27bdc
parenta8563ec8515d87259590a7aad182922def8e2cf2
upload-pack: feed "kind [clone|fetch]" to post-upload-pack hook

A request to clone the repository does not give any "have" but asks for
all the refs we offer with "want".  When a request does not ask to clone
the repository fully, but asks to fetch some refs into an empty
repository, it will not give any "have" but its "want" won't ask for all
the refs we offer.

If we suppose (and I would say this is a rather big if) that it makes
sense to distinguish these two cases, a hook cannot reliably do this
alone.  The hook can detect lack of "have" and bunch of "want", but there
is no direct way to tell if the other end asked for all refs we offered,
or merely most of them.

Between the time we talked with the other end and the time the hook got
called, we may have acquired more refs or lost some refs in the repository
by concurrent operations.  Given that we plan to introduce selective
advertisement of refs with a protocol extension, it would become even more
difficult for hooks to guess between these two cases.

This adds "kind [clone|fetch]" to hook's input, as a stable interface to
allow the hooks to tell these cases apart.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
Documentation/githooks.txt
t/t5501-post-upload-pack.sh
upload-pack.c