mirror of
https://github.com/git/git.git
synced 2026-01-11 18:45:28 +00:00
apply: do not lazy fetch when applying binary
When applying a binary patch, as an optimization, "apply" checks if the postimage is already present. During this fetch, it is perfectly expected for the postimage not to be present, so there is no need to lazy-fetch missing objects. Teach "apply" not to lazy-fetch in this case. Signed-off-by: Jonathan Tan <jonathantanmy@google.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
committed by
Junio C Hamano
parent
1d8d9cb620
commit
3318238db9
2
apply.c
2
apply.c
@@ -3178,7 +3178,7 @@ static int apply_binary(struct apply_state *state,
|
||||
return 0; /* deletion patch */
|
||||
}
|
||||
|
||||
if (has_object_file(&oid)) {
|
||||
if (has_object(the_repository, &oid, 0)) {
|
||||
/* We already have the postimage */
|
||||
enum object_type type;
|
||||
unsigned long size;
|
||||
|
||||
@@ -1133,4 +1133,20 @@ test_expect_success 'am and .gitattibutes' '
|
||||
)
|
||||
'
|
||||
|
||||
test_expect_success 'apply binary blob in partial clone' '
|
||||
printf "\\000" >binary &&
|
||||
git add binary &&
|
||||
git commit -m "binary blob" &&
|
||||
git format-patch --stdout -m HEAD^ >patch &&
|
||||
|
||||
test_create_repo server &&
|
||||
test_config -C server uploadpack.allowfilter 1 &&
|
||||
test_config -C server uploadpack.allowanysha1inwant 1 &&
|
||||
git clone --filter=blob:none "file://$(pwd)/server" client &&
|
||||
test_when_finished "rm -rf client" &&
|
||||
|
||||
# Exercise to make sure that it works
|
||||
git -C client am ../patch
|
||||
'
|
||||
|
||||
test_done
|
||||
|
||||
Reference in New Issue
Block a user