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 <jonathantanmy@google.com> Signed-off-by: Jeff Hostetler <jeffhost@microsoft.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
Jonathan Tan committed
Dec 8, 2017 at 15:58 UTC
0b6069fe0a1e694d632e54a43fc6e546e83edad6
2 files changed
+36
-4
t/t5500-fetch-pack.sh
+27
@@ -755,4 +755,31 @@ test_expect_success 'fetching deepen' '
755
)
756
'
757
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
+
785
test_done
upload-pack.c
+9
-4
@@ -139,10 +139,15 @@ static void create_pack_file(void)
139
if (use_include_tag)
140
argv_array_push(&pack_objects.args, "--include-tag");
141
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
+ }
151
}
152
153
pack_objects.in = -1;