From: Patrick Steinhardt <ps@pks.im>
To: Alan Braithwaite via GitGitGadget <gitgitgadget@gmail.com>
Cc: git@vger.kernel.org, christian.couder@gmail.com,
jonathantanmy@google.com, me@ttaylorr.com, gitster@pobox.com,
Jeff King <peff@peff.net>,
"brian m. carlson" <sandals@crustytoothpaste.net>,
Alan Braithwaite <alan@braithwaite.dev>
Subject: Re: [PATCH v6] clone: add clone.<url>.defaultObjectFilter config
Date: Mon, 16 Mar 2026 08:47:35 +0100 [thread overview]
Message-ID: <abe1l8ONmFIhzaxi@pks.im> (raw)
In-Reply-To: <pull.2058.v6.git.1773553022381.gitgitgadget@gmail.com>
On Sun, Mar 15, 2026 at 05:37:02AM +0000, Alan Braithwaite via GitGitGadget wrote:
> 1: fa1ea69bdb ! 1: 480453b2e7 clone: add clone.<url>.defaultObjectFilter config
> @@ t/t5616-partial-clone.sh: test_expect_success 'after fetching descendants of non
> +test_expect_success 'setup for clone.defaultObjectFilter tests' '
> + git init default-filter-src &&
> + echo "small" >default-filter-src/small.txt &&
> -+ dd if=/dev/zero of=default-filter-src/large.bin bs=1024 count=100 2>/dev/null &&
> + git -C default-filter-src add . &&
> + git -C default-filter-src commit -m "initial" &&
> +
As Junio already pointed out, this change here is a bit puzzling. Not
that I think it's a problem, but one wonders why this existed in the
first place if it seemed to not be necessary.
> diff --git a/builtin/clone.c b/builtin/clone.c
> index 45d8fa0eed..18316a7da9 100644
> --- a/builtin/clone.c
> +++ b/builtin/clone.c
> @@ -757,6 +758,51 @@ static int git_clone_config(const char *k, const char *v,
> return git_default_config(k, v, ctx, cb);
> }
>
> +static int clone_filter_collect(const char *var, const char *value,
> + const struct config_context *ctx UNUSED,
> + void *cb)
> +{
> + char **filter_spec_p = cb;
> +
> + if (!strcmp(var, "clone.defaultobjectfilter")) {
> + if (!value)
> + return config_error_nonbool(var);
> + free(*filter_spec_p);
> + *filter_spec_p = xstrdup(value);
> + }
> + return 0;
> +}
> +
> +/*
> + * Look up clone.defaultObjectFilter or clone.<url>.defaultObjectFilter
> + * using the urlmatch infrastructure. A URL-qualified entry that matches
> + * the clone URL takes precedence over the bare form, following the same
> + * rules as http.<url>.* configuration variables.
> + */
> +static char *get_default_object_filter(const char *url)
> +{
> + struct urlmatch_config config = URLMATCH_CONFIG_INIT;
> + char *filter_spec = NULL;
> + char *normalized_url;
> +
> + config.section = "clone";
> + config.key = "defaultobjectfilter";
> + config.collect_fn = clone_filter_collect;
> + config.cb = &filter_spec;
> +
> + normalized_url = url_normalize(url, &config.url);
> + if (!normalized_url) {
> + urlmatch_config_release(&config);
> + return NULL;
> + }
We haven't allocated anything, right? So in theory, we should be able to
return early without calling `urlmatch_config_release()`. This could be
stressed further by moving the error path earlier, so that it's the
first thing we do in the function.
Patrick
next prev parent reply other threads:[~2026-03-16 7:47 UTC|newest]
Thread overview: 30+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-03-01 16:44 [PATCH] fetch, clone: add fetch.blobSizeLimit config Alan Braithwaite via GitGitGadget
2026-03-02 11:53 ` Patrick Steinhardt
2026-03-02 18:28 ` Jeff King
2026-03-02 18:57 ` Junio C Hamano
2026-03-02 21:36 ` Alan Braithwaite
2026-03-03 6:30 ` Patrick Steinhardt
2026-03-03 14:00 ` Alan Braithwaite
2026-03-03 15:08 ` Patrick Steinhardt
2026-03-03 17:58 ` Junio C Hamano
2026-03-04 5:07 ` Patrick Steinhardt
2026-03-03 17:05 ` Junio C Hamano
2026-03-03 14:34 ` Jeff King
2026-03-05 0:57 ` [PATCH v2] clone: add clone.<url>.defaultObjectFilter config Alan Braithwaite via GitGitGadget
2026-03-05 19:01 ` Junio C Hamano
2026-03-05 23:11 ` Alan Braithwaite
2026-03-06 6:55 ` [PATCH v3] " Alan Braithwaite via GitGitGadget
2026-03-06 10:39 ` brian m. carlson
2026-03-06 19:33 ` Junio C Hamano
2026-03-06 21:50 ` Alan Braithwaite
2026-03-06 21:47 ` [PATCH v4] " Alan Braithwaite via GitGitGadget
2026-03-06 22:18 ` Junio C Hamano
2026-03-07 1:04 ` Alan Braithwaite
2026-03-07 1:33 ` [PATCH v5] " Alan Braithwaite via GitGitGadget
2026-03-11 7:44 ` Patrick Steinhardt
2026-03-15 1:33 ` Alan Braithwaite
2026-03-15 5:37 ` [PATCH v6] " Alan Braithwaite via GitGitGadget
2026-03-15 21:32 ` Junio C Hamano
2026-03-16 7:47 ` Patrick Steinhardt [this message]
2026-05-11 2:38 ` Junio C Hamano
2026-05-11 7:30 ` Patrick Steinhardt
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=abe1l8ONmFIhzaxi@pks.im \
--to=ps@pks.im \
--cc=alan@braithwaite.dev \
--cc=christian.couder@gmail.com \
--cc=git@vger.kernel.org \
--cc=gitgitgadget@gmail.com \
--cc=gitster@pobox.com \
--cc=jonathantanmy@google.com \
--cc=me@ttaylorr.com \
--cc=peff@peff.net \
--cc=sandals@crustytoothpaste.net \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.