fetch-pack: do not check links for partial fetch
When doing a partial clone or fetch with transfer.fsckobjects=1, use the --fsck-objects instead of the --strict flag when invoking index-pack so that links are not checked, only objects. This is because incomplete links are expected when doing a partial clone or fetch. Signed-off-by: Jonathan Tan <jonathantanmy@google.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
parent
ffb2c0fe5c
commit
98a2ea46c2
13
fetch-pack.c
13
fetch-pack.c
@ -886,8 +886,17 @@ static int get_pack(struct fetch_pack_args *args,
|
|||||||
? fetch_fsck_objects
|
? fetch_fsck_objects
|
||||||
: transfer_fsck_objects >= 0
|
: transfer_fsck_objects >= 0
|
||||||
? transfer_fsck_objects
|
? transfer_fsck_objects
|
||||||
: 0)
|
: 0) {
|
||||||
argv_array_push(&cmd.args, "--strict");
|
if (args->from_promisor)
|
||||||
|
/*
|
||||||
|
* We cannot use --strict in index-pack because it
|
||||||
|
* checks both broken objects and links, but we only
|
||||||
|
* want to check for broken objects.
|
||||||
|
*/
|
||||||
|
argv_array_push(&cmd.args, "--fsck-objects");
|
||||||
|
else
|
||||||
|
argv_array_push(&cmd.args, "--strict");
|
||||||
|
}
|
||||||
|
|
||||||
cmd.in = demux.out;
|
cmd.in = demux.out;
|
||||||
cmd.git_cmd = 1;
|
cmd.git_cmd = 1;
|
||||||
|
@ -143,4 +143,15 @@ test_expect_success 'manual prefetch of missing objects' '
|
|||||||
test_line_count = 0 observed.oids
|
test_line_count = 0 observed.oids
|
||||||
'
|
'
|
||||||
|
|
||||||
|
test_expect_success 'partial clone with transfer.fsckobjects=1 uses index-pack --fsck-objects' '
|
||||||
|
git init src &&
|
||||||
|
test_commit -C src x &&
|
||||||
|
test_config -C src uploadpack.allowfilter 1 &&
|
||||||
|
test_config -C src uploadpack.allowanysha1inwant 1 &&
|
||||||
|
|
||||||
|
GIT_TRACE="$(pwd)/trace" git -c transfer.fsckobjects=1 \
|
||||||
|
clone --filter="blob:none" "file://$(pwd)/src" dst &&
|
||||||
|
grep "git index-pack.*--fsck-objects" trace
|
||||||
|
'
|
||||||
|
|
||||||
test_done
|
test_done
|
||||||
|
Loading…
Reference in New Issue
Block a user