upload-pack: delegate rev walking in shallow fetch to pack-objects
commitcdab485853b405d6454d4974bdc3825134d85249
authorNguyễn Thái Ngọc Duy <pclouds@gmail.com>
Fri, 16 Aug 2013 09:52:05 +0000 (16 16:52 +0700)
committerJunio C Hamano <gitster@pobox.com>
Wed, 28 Aug 2013 18:52:11 +0000 (28 11:52 -0700)
tree085f603e214a31e9cb4d3c19b19263cf42a76ceb
parent08ea65ad13faaf24f57732cdc8af3d830d4b367f
upload-pack: delegate rev walking in shallow fetch to pack-objects

upload-pack has a special revision walking code for shallow
recipients. It works almost like the similar code in pack-objects
except:

1. in upload-pack, graft points could be added for deepening;

2. also when the repository is deepened, the shallow point will be
   moved further away from the tip, but the old shallow point will be
   marked as edge to produce more efficient packs. See 6523078 (make
   shallow repository deepening more network efficient - 2009-09-03).

Pass the file to pack-objects via --shallow-file. This will override
$GIT_DIR/shallow and give pack-objects the exact repository shape
that upload-pack has.

mark edge commits by revision command arguments. Even if old shallow
points are passed as "--not" revisions as in this patch, they will not
be picked up by mark_edges_uninteresting() because this function looks
up to parents for edges, while in this case the edge is the children,
in the opposite direction. This will be fixed in an later patch when
all given uninteresting commits are marked as edges.

Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
t/t5530-upload-pack-error.sh
upload-pack.c