From: Junio C Hamano <gitster@pobox.com>
To: "Abhradeep Chakraborty via GitGitGadget" <gitgitgadget@gmail.com>
Cc: git@vger.kernel.org,
Abhradeep Chakraborty <chakrabortyabhradeep79@gmail.com>
Subject: Re: [PATCH] builtin/remote.c: teach `-v` to list filters for promisor remotes
Date: Sat, 30 Apr 2022 14:17:46 -0700 [thread overview]
Message-ID: <xmqqczgy6zk5.fsf@gitster.g> (raw)
In-Reply-To: <pull.1227.git.1651324796892.gitgitgadget@gmail.com> (Abhradeep Chakraborty via GitGitGadget's message of "Sat, 30 Apr 2022 13:19:56 +0000")
"Abhradeep Chakraborty via GitGitGadget" <gitgitgadget@gmail.com>
writes:
> if (remote->url_nr > 0) {
> + struct strbuf promisor_config = STRBUF_INIT;
> + const char *partial_clone_filter = NULL;
> +
> + strbuf_addf(&promisor_config, "remote.%s.partialclonefilter", remote->name);
> strbuf_addf(&url_buf, "%s (fetch)", remote->url[0]);
> + if (!git_config_get_string_tmp(promisor_config.buf, &partial_clone_filter))
> + strbuf_addf(&url_buf, " [%s]", partial_clone_filter);
> +
> + strbuf_release(&promisor_config);
> string_list_append(list, remote->name)->util =
> strbuf_detach(&url_buf, NULL);
Three comments and a half on the code:
- Is it likely that to new readers it would be obvious that what is
in the [square brackets] is the list-objects-filter used? When we
want to add new kinds of information other than the URL and the
list-objects-filter, what is our plan to add them?
- The presentation order is <remote-name> then <direction> (fetch
or push) and then optionally <list-objects-filter>.
(a) shouldn't the output format be described in the
doucmentation?
(b) does it make sense to append new information like this, or
is it more logical to keep the <direction> at the end?
- Now url_buf no longer contains the url of the remote, but it still
is called url_buf. It is merely a "temporary string" now. Is it
a good idea to either rename it, stop reusing the same thing for
different purposes, or do something else?
- By adding this unconditionally, we would break the scripts that
read the output from this command and expect there won't be extra
information after the <direction>. It may be a good thing (they
are not prepared to see the list-objects-filter, and the breakage
may serve as a reminder that they need to update these scripts
when they see breakage), or it may be an irritating regression.
But stepping back a bit.
Why do we want to give this in the "remote -v" output in the first
place? When a reader really cares, they can ask "git config" for
this extra piece of information. When you have more than one
remote, "git remote -v" that gives the URL is a good way to remind
which nickname you'd want to give to "git pull" or "git push". If
it makes sense to add the extra <list-objects-filtrer> information,
that would mean that there are probably two remote nicknames that
refer to the same URL (i.e. "remote -v" readers cannot tell them
apart without extra information), but how likely is that, I wonder?
> diff --git a/t/t5616-partial-clone.sh b/t/t5616-partial-clone.sh
> index 4a3778d04a8..bf8f3644d3c 100755
> --- a/t/t5616-partial-clone.sh
> +++ b/t/t5616-partial-clone.sh
> @@ -49,6 +49,17 @@ test_expect_success 'do partial clone 1' '
> test "$(git -C pc1 config --local remote.origin.partialclonefilter)" = "blob:none"
> '
>
> +test_expect_success 'filters for promisor remotes is listed by git remote -v' '
> + git clone --filter=blob:none "file://$(pwd)/srv.bare" pc2 &&
> + git -C pc2 remote -v >out &&
> + grep "[blob:none]" out &&
> +
> + git -C pc2 config remote.origin.partialCloneFilter object:type=commit &&
> + git -C pc2 remote -v >out &&
> + grep "[object:type=commit]" out &&
> + rm -rf pc2
> +'
> +
> test_expect_success 'verify that .promisor file contains refs fetched' '
> ls pc1/.git/objects/pack/pack-*.promisor >promisorlist &&
> test_line_count = 1 promisorlist &&
>
> base-commit: 0f828332d5ac36fc63b7d8202652efa152809856
next prev parent reply other threads:[~2022-04-30 21:17 UTC|newest]
Thread overview: 26+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-04-30 13:19 [PATCH] builtin/remote.c: teach `-v` to list filters for promisor remotes Abhradeep Chakraborty via GitGitGadget
2022-04-30 21:17 ` Junio C Hamano [this message]
2022-05-01 15:57 ` Abhradeep Chakraborty
2022-05-01 16:14 ` Junio C Hamano
2022-05-01 19:38 ` Abhradeep Chakraborty
2022-05-02 10:33 ` Philip Oakley
2022-05-02 14:56 ` Abhradeep Chakraborty
2022-05-03 15:20 ` [PATCH v2] " Abhradeep Chakraborty via GitGitGadget
2022-05-04 17:10 ` Junio C Hamano
2022-05-05 14:12 ` Abhradeep Chakraborty
2022-05-07 14:20 ` [PATCH v3] " Abhradeep Chakraborty via GitGitGadget
2022-05-08 15:33 ` Philippe Blain
2022-05-09 16:29 ` Junio C Hamano
2022-05-09 16:45 ` Philippe Blain
2022-05-08 15:44 ` Philippe Blain
2022-05-09 9:13 ` Abhradeep Chakraborty
2022-05-09 11:32 ` [PATCH v4] " Abhradeep Chakraborty via GitGitGadget
2022-05-09 15:34 ` Taylor Blau
2022-05-09 17:01 ` Philippe Blain
2022-05-09 17:52 ` Junio C Hamano
2022-05-13 13:49 ` Abhradeep Chakraborty
2022-05-13 18:37 ` Junio C Hamano
2022-05-16 15:38 ` Abhradeep Chakraborty
2022-05-09 17:21 ` Abhradeep Chakraborty
2022-05-09 22:22 ` Taylor Blau
2022-05-09 17:44 ` Abhradeep Chakraborty
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=xmqqczgy6zk5.fsf@gitster.g \
--to=gitster@pobox.com \
--cc=chakrabortyabhradeep79@gmail.com \
--cc=git@vger.kernel.org \
--cc=gitgitgadget@gmail.com \
/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.