Skip to content

Commit 0b6069f

Browse files
jonathantanmygitster
authored andcommitted
fetch-pack: test support excluding large blobs
Created tests to verify fetch-pack and upload-pack support for excluding large blobs using --filter=blobs:limit=<n> parameter. Signed-off-by: Jonathan Tan <[email protected]> Signed-off-by: Jeff Hostetler <[email protected]> Signed-off-by: Junio C Hamano <[email protected]>
1 parent bc2d0c3 commit 0b6069f

File tree

2 files changed

+36
-4
lines changed

2 files changed

+36
-4
lines changed

t/t5500-fetch-pack.sh

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -755,4 +755,31 @@ test_expect_success 'fetching deepen' '
755755
)
756756
'
757757

758+
test_expect_success 'filtering by size' '
759+
rm -rf server client &&
760+
test_create_repo server &&
761+
test_commit -C server one &&
762+
test_config -C server uploadpack.allowfilter 1 &&
763+
764+
test_create_repo client &&
765+
git -C client fetch-pack --filter=blob:limit=0 ../server HEAD &&
766+
767+
# Ensure that object is not inadvertently fetched
768+
test_must_fail git -C client cat-file -e $(git hash-object server/one.t)
769+
'
770+
771+
test_expect_success 'filtering by size has no effect if support for it is not advertised' '
772+
rm -rf server client &&
773+
test_create_repo server &&
774+
test_commit -C server one &&
775+
776+
test_create_repo client &&
777+
git -C client fetch-pack --filter=blob:limit=0 ../server HEAD 2> err &&
778+
779+
# Ensure that object is fetched
780+
git -C client cat-file -e $(git hash-object server/one.t) &&
781+
782+
test_i18ngrep "filtering not recognized by server" err
783+
'
784+
758785
test_done

upload-pack.c

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -139,10 +139,15 @@ static void create_pack_file(void)
139139
if (use_include_tag)
140140
argv_array_push(&pack_objects.args, "--include-tag");
141141
if (filter_options.filter_spec) {
142-
struct strbuf buf = STRBUF_INIT;
143-
sq_quote_buf(&buf, filter_options.filter_spec);
144-
argv_array_pushf(&pack_objects.args, "--filter=%s", buf.buf);
145-
strbuf_release(&buf);
142+
if (pack_objects.use_shell) {
143+
struct strbuf buf = STRBUF_INIT;
144+
sq_quote_buf(&buf, filter_options.filter_spec);
145+
argv_array_pushf(&pack_objects.args, "--filter=%s", buf.buf);
146+
strbuf_release(&buf);
147+
} else {
148+
argv_array_pushf(&pack_objects.args, "--filter=%s",
149+
filter_options.filter_spec);
150+
}
146151
}
147152

148153
pack_objects.in = -1;

0 commit comments

Comments
 (0)