fetch: allow adding a filter after initial clone
authorXin Li <delphij@google.com>
Fri, 5 Jun 2020 09:10:02 +0000 (02:10 -0700)
committerJunio C Hamano <gitster@pobox.com>
Fri, 5 Jun 2020 17:13:30 +0000 (10:13 -0700)
commit01bbbbd9daaa277a95ae46e5a32f6fba026610ac
tree795bb72f2f88592db95a9aad7c86ae9e8b72500e
parent16af5f1abb2b3291f96a248698449c48c6a0ec36
fetch: allow adding a filter after initial clone

Retroactively adding a filter can be useful for existing shallow clones as
they allow users to see earlier change histories without downloading all
git objects in a regular --unshallow fetch.

Without this patch, users can make a clone partial by editing the
repository configuration to convert the remote into a promisor, like:

  git config core.repositoryFormatVersion 1
  git config extensions.partialClone origin
  git fetch --unshallow --filter=blob:none origin

Since the hard part of making this work is already in place and such
edits can be error-prone, teach Git to perform the required configuration
change automatically instead.

Note that this change does not modify the existing git behavior which
recognizes setting extensions.partialClone without changing
repositoryFormatVersion.

Signed-off-by: Xin Li <delphij@google.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
builtin/fetch.c
t/t0410-partial-clone.sh
t/t1090-sparse-checkout-scope.sh
t/t5500-fetch-pack.sh
t/t5702-protocol-v2.sh