]> git.ipfire.org Git - thirdparty/git.git/commit
fetch-pack: wire up and enable auto filter logic
authorChristian Couder <christian.couder@gmail.com>
Mon, 16 Feb 2026 13:23:15 +0000 (14:23 +0100)
committerJunio C Hamano <gitster@pobox.com>
Tue, 17 Feb 2026 19:46:41 +0000 (11:46 -0800)
commitef2f1845ec4b683df791bfd956f551b096a38009
treed5565cf702f336b7e4d591b6ef7b82fac5744f53
parente15a6b2f8b9f62206e9d0b2a57a81da19cdcf3de
fetch-pack: wire up and enable auto filter logic

Previous commits have set up an infrastructure for `--filter=auto` to
automatically prepare a partial clone filter based on what the server
advertised and the client accepted.

Using that infrastructure, let's now enable the `--filter=auto` option
in `git clone` and `git fetch` by setting `allow_auto_filter` to 1.

Note that these small changes mean that when `git clone --filter=auto`
or `git fetch --filter=auto` are used, "auto" is automatically saved
as the partial clone filter for the server on the client. Therefore
subsequent calls to `git fetch` on the client will automatically use
this "auto" mode even without `--filter=auto`.

Let's also set `allow_auto_filter` to 1 in `transport.c`, as the
transport layer must be able to accept the "auto" filter spec even if
the invoking command hasn't fully parsed it yet.

When an "auto" filter is requested, let's have the "fetch-pack.c" code
in `do_fetch_pack_v2()` compute a filter and send it to the server.

In `do_fetch_pack_v2()` the logic also needs to check for the
"promisor-remote" capability and call `promisor_remote_reply()` to
parse advertised remotes and populate the list of those accepted (and
their filters).

Signed-off-by: Christian Couder <chriscool@tuxfamily.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Documentation/fetch-options.adoc
Documentation/git-clone.adoc
Documentation/gitprotocol-v2.adoc
builtin/clone.c
builtin/fetch.c
fetch-pack.c
t/t5710-promisor-remote-capability.sh
transport.c