{"thread":{"id":"54269","subject":"[PATCH 0/2] Fix overriding of partial clone filter when lazy-fetching","startedAt":"2020-09-22T03:04:03Z","lastAt":"2020-09-28T23:43:51Z","messageCount":11,"participants":["Jonathan Tan","Junio C Hamano","Derrick Stolee"],"isPatch":true,"patchVersion":1,"patchTotal":2},"messages":[{"id":"406104","messageId":"cover.1600743698.git.jonathantanmy@google.com","threadId":"54269","inReplyTo":null,"subject":"[PATCH 0/2] Fix overriding of partial clone filter when lazy-fetching","fromName":"Jonathan Tan","fromEmail":"jonathantanmy@google.com","sentAt":"2020-09-22T03:03:55Z","receivedAt":"2020-09-22T03:04:03Z","isPatch":true,"sender":{"key":"jonathantanmy@fastmail.com","avatar":null},"body":"This was noticed at $DAYJOB when in a partial clone with a filter other\nthan blob:none. The 1st patch is a code cleanup (so that the 2nd patch\ndoes not need to take into account the unused variable), and the 2nd\npatch contains the bug fix.\n\nJonathan Tan (2):\n  promisor-remote: remove unused variable\n  fetch: do not override partial clone filter\n\n builtin/fetch.c               |  2 +-\n list-objects-filter-options.c | 10 +++++++++-\n promisor-remote.c             |  5 -----\n promisor-remote.h             |  2 +-\n t/t5601-clone.sh              |  5 +++++\n 5 files changed, 16 insertions(+), 8 deletions(-)\n\n-- \n2.28.0.681.g6f77f65b4e-goog\n\n"},{"id":"406105","messageId":"070a717aabbac31ae44567dbe54a325029f9931f.1600743698.git.jonathantanmy@google.com","threadId":"54269","inReplyTo":"cover.1600743698.git.jonathantanmy@google.com","subject":"[PATCH 2/2] fetch: do not override partial clone filter","fromName":"Jonathan Tan","fromEmail":"jonathantanmy@google.com","sentAt":"2020-09-22T03:03:57Z","receivedAt":"2020-09-22T03:04:06Z","isPatch":true,"sender":{"key":"jonathantanmy@fastmail.com","avatar":null},"body":"When a fetch with the --filter argument is made, the configured default\nfilter is set even if one already exists. This change was made in\n5e46139376 (\"builtin/fetch: remove unique promisor remote limitation\",\n2019-06-25) - in particular, changing from:\n\n * If this is the FIRST partial-fetch request, we enable partial\n * on this repo and remember the given filter-spec as the default\n * for subsequent fetches to this remote.\n\nto:\n\n * If this is a partial-fetch request, we enable partial on\n * this repo if not already enabled and remember the given\n * filter-spec as the default for subsequent fetches to this\n * remote.\n\n(The given filter-spec is \"remembered\" even if there is already an\nexisting one.)\n\nThis is problematic whenever a lazy fetch is made, because lazy fetches\nare made using \"git fetch --filter=blob:none\", but this will also happen\nif the user invokes \"git fetch --filter=<filter>\" manually. Therefore,\nrestore the behavior prior to 5e46139376, which writes a filter-spec\nonly if the current fetch request is the first partial-fetch one (for\nthat remote).\n\nSigned-off-by: Jonathan Tan <jonathantanmy@google.com>\n---\n builtin/fetch.c               |  2 +-\n list-objects-filter-options.c | 10 +++++++++-\n t/t5601-clone.sh              |  5 +++++\n 3 files changed, 15 insertions(+), 2 deletions(-)\n\ndiff --git a/builtin/fetch.c b/builtin/fetch.c\nindex a6d3268661..752148eec5 100644\n--- a/builtin/fetch.c\n+++ b/builtin/fetch.c\n@@ -1677,7 +1677,7 @@ static inline void fetch_one_setup_partial(struct remote *remote)\n \t * If this is a partial-fetch request, we enable partial on\n \t * this repo if not already enabled and remember the given\n \t * filter-spec as the default for subsequent fetches to this\n-\t * remote.\n+\t * remote if there is currently no default filter-spec.\n \t */\n \tif (filter_options.choice) {\n \t\tpartial_clone_register(remote->name, &filter_options);\ndiff --git a/list-objects-filter-options.c b/list-objects-filter-options.c\nindex b66314560a..defd3dfd10 100644\n--- a/list-objects-filter-options.c\n+++ b/list-objects-filter-options.c\n@@ -344,11 +344,19 @@ void partial_clone_register(\n \tconst char *remote,\n \tstruct list_objects_filter_options *filter_options)\n {\n+\tstruct promisor_remote *promisor_remote;\n \tchar *cfg_name;\n \tchar *filter_name;\n \n \t/* Check if it is already registered */\n-\tif (!promisor_remote_find(remote)) {\n+\tif ((promisor_remote = promisor_remote_find(remote))) {\n+\t\tif (promisor_remote->partial_clone_filter)\n+\t\t\t/*\n+\t\t\t * Remote is already registered and a filter is already\n+\t\t\t * set, so we don't need to do anything here.\n+\t\t\t */\n+\t\t\treturn;\n+\t} else {\n \t\tif (upgrade_repository_format(1) < 0)\n \t\t\tdie(_(\"unable to upgrade repository format to support partial clone\"));\n \ndiff --git a/t/t5601-clone.sh b/t/t5601-clone.sh\nindex 15fb64c18d..7c5cf5a2ec 100755\n--- a/t/t5601-clone.sh\n+++ b/t/t5601-clone.sh\n@@ -672,6 +672,11 @@ test_expect_success 'partial clone with -o' '\n \tgit clone -o blah --filter=blob:limit=0 \"file://$(pwd)/server\" client\n '\n \n+test_expect_success 'ensure that filter is written to config' '\n+\tFILTER=$(git -C client config --get remote.blah.partialclonefilter) &&\n+\ttest \"$FILTER\" == \"blob:limit=0\"\n+'\n+\n test_expect_success 'partial clone: warn if server does not support object filtering' '\n \trm -rf server client &&\n \ttest_create_repo server &&\n-- \n2.28.0.681.g6f77f65b4e-goog\n\n"},{"id":"406106","messageId":"c67a12635d5d0095fdd83cb94d522a2bb311a84c.1600743698.git.jonathantanmy@google.com","threadId":"54269","inReplyTo":"cover.1600743698.git.jonathantanmy@google.com","subject":"[PATCH 1/2] promisor-remote: remove unused variable","fromName":"Jonathan Tan","fromEmail":"jonathantanmy@google.com","sentAt":"2020-09-22T03:03:56Z","receivedAt":"2020-09-22T03:04:07Z","isPatch":true,"sender":{"key":"jonathantanmy@fastmail.com","avatar":null},"body":"The variable core_partial_clone_filter_default has been unused since\nfa3d1b63e8 (\"promisor-remote: parse remote.*.partialclonefilter\",\n2019-06-25), when Git was changed to refer to\nremote.*.partialclonefilter as the default filter when fetching in a\npartial clone, but (perhaps inadvertently) there was no fallback to\ncore.partialclonefilter.\n\nOne alternative is to add the fallback, but the aforementioned change\nwas made more than a year ago and I have not heard of any complaints\nregarding this matter. In addition, there is currently no mention of\ncore.partialclonefilter in the user documentation. So it seems best to\nreaffirm that Git will only support remote.*.partialclonefilter.\n\nSigned-off-by: Jonathan Tan <jonathantanmy@google.com>\n---\n promisor-remote.c | 5 -----\n promisor-remote.h | 2 +-\n 2 files changed, 1 insertion(+), 6 deletions(-)\n\ndiff --git a/promisor-remote.c b/promisor-remote.c\nindex 6530e26f98..3c572b1c81 100644\n--- a/promisor-remote.c\n+++ b/promisor-remote.c\n@@ -6,7 +6,6 @@\n #include \"strvec.h\"\n \n static char *repository_format_partial_clone;\n-static const char *core_partial_clone_filter_default;\n \n void set_repository_format_partial_clone(char *partial_clone)\n {\n@@ -100,10 +99,6 @@ static int promisor_remote_config(const char *var, const char *value, void *data\n \tsize_t namelen;\n \tconst char *subkey;\n \n-\tif (!strcmp(var, \"core.partialclonefilter\"))\n-\t\treturn git_config_string(&core_partial_clone_filter_default,\n-\t\t\t\t\t var, value);\n-\n \tif (parse_config_key(var, \"remote\", &name, &namelen, &subkey) < 0)\n \t\treturn 0;\n \ndiff --git a/promisor-remote.h b/promisor-remote.h\nindex 6343c47d18..c7a14063c5 100644\n--- a/promisor-remote.h\n+++ b/promisor-remote.h\n@@ -9,7 +9,7 @@ struct object_id;\n  * Promisor remote linked list\n  *\n  * Information in its fields come from remote.XXX config entries or\n- * from extensions.partialclone or core.partialclonefilter.\n+ * from extensions.partialclone.\n  */\n struct promisor_remote {\n \tstruct promisor_remote *next;\n-- \n2.28.0.681.g6f77f65b4e-goog\n\n"},{"id":"406112","messageId":"xmqq7dsmcqkp.fsf@gitster.c.googlers.com","threadId":"54269","inReplyTo":"cover.1600743698.git.jonathantanmy@google.com","subject":"Re: [PATCH 0/2] Fix overriding of partial clone filter when lazy-fetching","fromName":"Junio C Hamano","fromEmail":"gitster@pobox.com","sentAt":"2020-09-22T05:45:26Z","receivedAt":"2020-09-22T05:45:31Z","isPatch":true,"sender":{"key":"gitster@pobox.com","avatar":"https://avatars.githubusercontent.com/u/54884?v=4"},"body":"Jonathan Tan <jonathantanmy@google.com> writes:\n\n> This was noticed at $DAYJOB when in a partial clone with a filter other\n> than blob:none. The 1st patch is a code cleanup (so that the 2nd patch\n> does not need to take into account the unused variable), and the 2nd\n> patch contains the bug fix.\n\nWhat is \"this\" is not clear at all.  This is one of those cover\nletters unfriendly to readers who do not know what the author did\nbefore being told X-<.  We got a vague \"we found some unspecified\nbug and fixed it, and we need to read them through if we want to\nfind out what it is\".\n\n>\n> Jonathan Tan (2):\n>   promisor-remote: remove unused variable\n>   fetch: do not override partial clone filter\n>\n>  builtin/fetch.c               |  2 +-\n>  list-objects-filter-options.c | 10 +++++++++-\n>  promisor-remote.c             |  5 -----\n>  promisor-remote.h             |  2 +-\n>  t/t5601-clone.sh              |  5 +++++\n>  5 files changed, 16 insertions(+), 8 deletions(-)\n"},{"id":"406113","messageId":"xmqq363acqj9.fsf@gitster.c.googlers.com","threadId":"54269","inReplyTo":"070a717aabbac31ae44567dbe54a325029f9931f.1600743698.git.jonathantanmy@google.com","subject":"Re: [PATCH 2/2] fetch: do not override partial clone filter","fromName":"Junio C Hamano","fromEmail":"gitster@pobox.com","sentAt":"2020-09-22T05:46:18Z","receivedAt":"2020-09-22T05:46:25Z","isPatch":true,"sender":{"key":"gitster@pobox.com","avatar":"https://avatars.githubusercontent.com/u/54884?v=4"},"body":"Jonathan Tan <jonathantanmy@google.com> writes:\n\n> +test_expect_success 'ensure that filter is written to config' '\n> +\tFILTER=$(git -C client config --get remote.blah.partialclonefilter) &&\n> +\ttest \"$FILTER\" == \"blob:limit=0\"\n\nI'll do s/==/=/ locally because otherwise the test-lint-shell-syntax\nwill choke on this line.  No need to resend only this line.\n\nThanks.\n\n> +'\n> +\n>  test_expect_success 'partial clone: warn if server does not support object filtering' '\n>  \trm -rf server client &&\n>  \ttest_create_repo server &&\n"},{"id":"406122","messageId":"b59f00b6-2787-261e-a295-35eb4a6f442b@gmail.com","threadId":"54269","inReplyTo":"xmqq363acqj9.fsf@gitster.c.googlers.com","subject":"Re: [PATCH 2/2] fetch: do not override partial clone filter","fromName":"Derrick Stolee","fromEmail":"stolee@gmail.com","sentAt":"2020-09-22T11:35:12Z","receivedAt":"2020-09-22T11:35:18Z","isPatch":true,"sender":{"key":"stolee@gmail.com","avatar":"https://avatars.githubusercontent.com/u/570044?v=4"},"body":"On 9/22/2020 1:46 AM, Junio C Hamano wrote:\n> Jonathan Tan <jonathantanmy@google.com> writes:\n> \n>> +test_expect_success 'ensure that filter is written to config' '\n>> +\tFILTER=$(git -C client config --get remote.blah.partialclonefilter) &&\n>> +\ttest \"$FILTER\" == \"blob:limit=0\"\n> \n> I'll do s/==/=/ locally because otherwise the test-lint-shell-syntax\n> will choke on this line.  No need to resend only this line.\n\nWouldn't \"test_cmp_config\" be a better here? It seems like\nthis is testing the \"git clone\" behavior of the previous test,\nso it could be added to that test instead.\n\nThanks,\n-Stolee\n"},{"id":"406129","messageId":"xmqqk0wllshb.fsf@gitster.c.googlers.com","threadId":"54269","inReplyTo":"b59f00b6-2787-261e-a295-35eb4a6f442b@gmail.com","subject":"Re: [PATCH 2/2] fetch: do not override partial clone filter","fromName":"Junio C Hamano","fromEmail":"gitster@pobox.com","sentAt":"2020-09-22T15:51:44Z","receivedAt":"2020-09-22T15:51:52Z","isPatch":true,"sender":{"key":"gitster@pobox.com","avatar":"https://avatars.githubusercontent.com/u/54884?v=4"},"body":"Derrick Stolee <stolee@gmail.com> writes:\n\n> On 9/22/2020 1:46 AM, Junio C Hamano wrote:\n>> Jonathan Tan <jonathantanmy@google.com> writes:\n>> \n>>> +test_expect_success 'ensure that filter is written to config' '\n>>> +\tFILTER=$(git -C client config --get remote.blah.partialclonefilter) &&\n>>> +\ttest \"$FILTER\" == \"blob:limit=0\"\n>> \n>> I'll do s/==/=/ locally because otherwise the test-lint-shell-syntax\n>> will choke on this line.  No need to resend only this line.\n>\n> Wouldn't \"test_cmp_config\" be a better here? It seems like\n> this is testing the \"git clone\" behavior of the previous test,\n> so it could be added to that test instead.\n\nTIL that one ;-) \"git config --get\" gives only a single instance,\nbut in this particular case, shouldn't we be verifying not just that\nthe expected one is found, but it is the only one, with \"--get-all\"?\n\nFWIW, many uses of that test helper may want to be tightened the\nsame way.  In short, unless we are testing the last-one-wins\nbehaviour, and especially when we are interested in what changes our\ntested operation makes to the config file's contents, we should be\nusing \"--get-all\" instead of the default \"--get\", I suspect.\n\nThanks.\n"},{"id":"406594","messageId":"xmqq1riljwmq.fsf@gitster.c.googlers.com","threadId":"54269","inReplyTo":"c3ced598751ae8fe7b7b6e787474331cf8219802.1601331788.git.jonathantanmy@google.com","subject":"Re: [PATCH v2 2/2] fetch: do not override partial clone filter","fromName":"Junio C Hamano","fromEmail":"gitster@pobox.com","sentAt":"2020-09-28T23:43:09Z","receivedAt":"2020-09-28T23:43:15Z","isPatch":true,"sender":{"key":"gitster@pobox.com","avatar":"https://avatars.githubusercontent.com/u/54884?v=4"},"body":"Jonathan Tan <jonathantanmy@google.com> writes:\n\n>  test_expect_success 'partial clone with -o' '\n>  \tpartial_clone_server server &&\n> -\tgit clone -o blah --filter=blob:limit=0 \"file://$(pwd)/server\" client\n> +\tgit clone -o blah --filter=blob:limit=0 \"file://$(pwd)/server\" client &&\n> +\ttest_cmp_config -C client \"blob:limit=0\" --get-all remote.blah.partialclonefilter\n>  '\n\nMakes sense to piggyback on this existing test.  It also makes sense\nto ensure that the original one is all and the only filter that is\nbeing configured.\n\nWill queue.  Let's merge them to 'next'.\n\n"},{"id":"406595","messageId":"c3ced598751ae8fe7b7b6e787474331cf8219802.1601331788.git.jonathantanmy@google.com","threadId":"54269","inReplyTo":"cover.1601331788.git.jonathantanmy@google.com","subject":"[PATCH v2 2/2] fetch: do not override partial clone filter","fromName":"Jonathan Tan","fromEmail":"jonathantanmy@google.com","sentAt":"2020-09-28T22:26:38Z","receivedAt":"2020-09-28T23:43:47Z","isPatch":true,"sender":{"key":"jonathantanmy@fastmail.com","avatar":null},"body":"When a fetch with the --filter argument is made, the configured default\nfilter is set even if one already exists. This change was made in\n5e46139376 (\"builtin/fetch: remove unique promisor remote limitation\",\n2019-06-25) - in particular, changing from:\n\n * If this is the FIRST partial-fetch request, we enable partial\n * on this repo and remember the given filter-spec as the default\n * for subsequent fetches to this remote.\n\nto:\n\n * If this is a partial-fetch request, we enable partial on\n * this repo if not already enabled and remember the given\n * filter-spec as the default for subsequent fetches to this\n * remote.\n\n(The given filter-spec is \"remembered\" even if there is already an\nexisting one.)\n\nThis is problematic whenever a lazy fetch is made, because lazy fetches\nare made using \"git fetch --filter=blob:none\", but this will also happen\nif the user invokes \"git fetch --filter=<filter>\" manually. Therefore,\nrestore the behavior prior to 5e46139376, which writes a filter-spec\nonly if the current fetch request is the first partial-fetch one (for\nthat remote).\n\nSigned-off-by: Jonathan Tan <jonathantanmy@google.com>\nSigned-off-by: Junio C Hamano <gitster@pobox.com>\n---\n builtin/fetch.c               |  2 +-\n list-objects-filter-options.c | 10 +++++++++-\n t/t5601-clone.sh              |  3 ++-\n 3 files changed, 12 insertions(+), 3 deletions(-)\n\ndiff --git a/builtin/fetch.c b/builtin/fetch.c\nindex c555836937..97930f8201 100644\n--- a/builtin/fetch.c\n+++ b/builtin/fetch.c\n@@ -1677,7 +1677,7 @@ static inline void fetch_one_setup_partial(struct remote *remote)\n \t * If this is a partial-fetch request, we enable partial on\n \t * this repo if not already enabled and remember the given\n \t * filter-spec as the default for subsequent fetches to this\n-\t * remote.\n+\t * remote if there is currently no default filter-spec.\n \t */\n \tif (filter_options.choice) {\n \t\tpartial_clone_register(remote->name, &filter_options);\ndiff --git a/list-objects-filter-options.c b/list-objects-filter-options.c\nindex b66314560a..defd3dfd10 100644\n--- a/list-objects-filter-options.c\n+++ b/list-objects-filter-options.c\n@@ -344,11 +344,19 @@ void partial_clone_register(\n \tconst char *remote,\n \tstruct list_objects_filter_options *filter_options)\n {\n+\tstruct promisor_remote *promisor_remote;\n \tchar *cfg_name;\n \tchar *filter_name;\n \n \t/* Check if it is already registered */\n-\tif (!promisor_remote_find(remote)) {\n+\tif ((promisor_remote = promisor_remote_find(remote))) {\n+\t\tif (promisor_remote->partial_clone_filter)\n+\t\t\t/*\n+\t\t\t * Remote is already registered and a filter is already\n+\t\t\t * set, so we don't need to do anything here.\n+\t\t\t */\n+\t\t\treturn;\n+\t} else {\n \t\tif (upgrade_repository_format(1) < 0)\n \t\t\tdie(_(\"unable to upgrade repository format to support partial clone\"));\n \ndiff --git a/t/t5601-clone.sh b/t/t5601-clone.sh\nindex 15fb64c18d..4631f019fe 100755\n--- a/t/t5601-clone.sh\n+++ b/t/t5601-clone.sh\n@@ -669,7 +669,8 @@ test_expect_success 'partial clone' '\n \n test_expect_success 'partial clone with -o' '\n \tpartial_clone_server server &&\n-\tgit clone -o blah --filter=blob:limit=0 \"file://$(pwd)/server\" client\n+\tgit clone -o blah --filter=blob:limit=0 \"file://$(pwd)/server\" client &&\n+\ttest_cmp_config -C client \"blob:limit=0\" --get-all remote.blah.partialclonefilter\n '\n \n test_expect_success 'partial clone: warn if server does not support object filtering' '\n-- \n2.28.0.709.gb0816b6eb0-goog\n\n"},{"id":"406596","messageId":"625e7f148e46c7e09f817ce6ab25f14d4e753f1e.1601331788.git.jonathantanmy@google.com","threadId":"54269","inReplyTo":"cover.1601331788.git.jonathantanmy@google.com","subject":"[PATCH v2 1/2] promisor-remote: remove unused variable","fromName":"Jonathan Tan","fromEmail":"jonathantanmy@google.com","sentAt":"2020-09-28T22:26:37Z","receivedAt":"2020-09-28T23:43:50Z","isPatch":true,"sender":{"key":"jonathantanmy@fastmail.com","avatar":null},"body":"The variable core_partial_clone_filter_default has been unused since\nfa3d1b63e8 (\"promisor-remote: parse remote.*.partialclonefilter\",\n2019-06-25), when Git was changed to refer to\nremote.*.partialclonefilter as the default filter when fetching in a\npartial clone, but (perhaps inadvertently) there was no fallback to\ncore.partialclonefilter.\n\nOne alternative is to add the fallback, but the aforementioned change\nwas made more than a year ago and I have not heard of any complaints\nregarding this matter. In addition, there is currently no mention of\ncore.partialclonefilter in the user documentation. So it seems best to\nreaffirm that Git will only support remote.*.partialclonefilter.\n\nSigned-off-by: Jonathan Tan <jonathantanmy@google.com>\nSigned-off-by: Junio C Hamano <gitster@pobox.com>\n---\n promisor-remote.c | 5 -----\n promisor-remote.h | 2 +-\n 2 files changed, 1 insertion(+), 6 deletions(-)\n\ndiff --git a/promisor-remote.c b/promisor-remote.c\nindex 6530e26f98..3c572b1c81 100644\n--- a/promisor-remote.c\n+++ b/promisor-remote.c\n@@ -6,7 +6,6 @@\n #include \"strvec.h\"\n \n static char *repository_format_partial_clone;\n-static const char *core_partial_clone_filter_default;\n \n void set_repository_format_partial_clone(char *partial_clone)\n {\n@@ -100,10 +99,6 @@ static int promisor_remote_config(const char *var, const char *value, void *data\n \tsize_t namelen;\n \tconst char *subkey;\n \n-\tif (!strcmp(var, \"core.partialclonefilter\"))\n-\t\treturn git_config_string(&core_partial_clone_filter_default,\n-\t\t\t\t\t var, value);\n-\n \tif (parse_config_key(var, \"remote\", &name, &namelen, &subkey) < 0)\n \t\treturn 0;\n \ndiff --git a/promisor-remote.h b/promisor-remote.h\nindex 6343c47d18..c7a14063c5 100644\n--- a/promisor-remote.h\n+++ b/promisor-remote.h\n@@ -9,7 +9,7 @@ struct object_id;\n  * Promisor remote linked list\n  *\n  * Information in its fields come from remote.XXX config entries or\n- * from extensions.partialclone or core.partialclonefilter.\n+ * from extensions.partialclone.\n  */\n struct promisor_remote {\n \tstruct promisor_remote *next;\n-- \n2.28.0.709.gb0816b6eb0-goog\n\n"},{"id":"406597","messageId":"cover.1601331788.git.jonathantanmy@google.com","threadId":"54269","inReplyTo":"cover.1600743698.git.jonathantanmy@google.com","subject":"[PATCH v2 0/2] Fix overriding of partial clone filter when lazy-fetching","fromName":"Jonathan Tan","fromEmail":"jonathantanmy@google.com","sentAt":"2020-09-28T22:26:36Z","receivedAt":"2020-09-28T23:43:51Z","isPatch":true,"sender":{"key":"jonathantanmy@fastmail.com","avatar":null},"body":"Thanks everyone for your comments. Patch 1 is exactly the same, and in\npatch 2, I've changed the config check to use test_cmp_config with\n\"--get-all\", as requested.\n\nComment noted about saying \"this\" without informing the reader what\nit's referring to - in this case, it was about the issue in patch 2.\n\nJonathan Tan (2):\n  promisor-remote: remove unused variable\n  fetch: do not override partial clone filter\n\n builtin/fetch.c               |  2 +-\n list-objects-filter-options.c | 10 +++++++++-\n promisor-remote.c             |  5 -----\n promisor-remote.h             |  2 +-\n t/t5601-clone.sh              |  3 ++-\n 5 files changed, 13 insertions(+), 9 deletions(-)\n\nRange-diff against v1:\n-:  ---------- > 1:  625e7f148e promisor-remote: remove unused variable\n1:  af960f33b6 ! 2:  c3ced59875 fetch: do not override partial clone filter\n    @@ list-objects-filter-options.c: void partial_clone_register(\n      \n     \n      ## t/t5601-clone.sh ##\n    -@@ t/t5601-clone.sh: test_expect_success 'partial clone with -o' '\n    - \tgit clone -o blah --filter=blob:limit=0 \"file://$(pwd)/server\" client\n    +@@ t/t5601-clone.sh: test_expect_success 'partial clone' '\n    + \n    + test_expect_success 'partial clone with -o' '\n    + \tpartial_clone_server server &&\n    +-\tgit clone -o blah --filter=blob:limit=0 \"file://$(pwd)/server\" client\n    ++\tgit clone -o blah --filter=blob:limit=0 \"file://$(pwd)/server\" client &&\n    ++\ttest_cmp_config -C client \"blob:limit=0\" --get-all remote.blah.partialclonefilter\n      '\n      \n    -+test_expect_success 'ensure that filter is written to config' '\n    -+\tFILTER=$(git -C client config --get remote.blah.partialclonefilter) &&\n    -+\ttest \"$FILTER\" = \"blob:limit=0\"\n    -+'\n    -+\n      test_expect_success 'partial clone: warn if server does not support object filtering' '\n    - \trm -rf server client &&\n    - \ttest_create_repo server &&\n-- \n2.28.0.709.gb0816b6eb0-goog\n\n"}]}