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
11
fetch-pack.c
11
fetch-pack.c
@ -886,8 +886,17 @@ static int get_pack(struct fetch_pack_args *args,
|
||||
? fetch_fsck_objects
|
||||
: transfer_fsck_objects >= 0
|
||||
? transfer_fsck_objects
|
||||
: 0)
|
||||
: 0) {
|
||||
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.git_cmd = 1;
|
||||
|
@ -143,4 +143,15 @@ test_expect_success 'manual prefetch of missing objects' '
|
||||
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
|
||||
|
Loading…
Reference in New Issue
Block a user