From: Patrick Steinhardt <ps@pks.im>
To: Meet Soni <meetsoni3017@gmail.com>
Cc: git@vger.kernel.org, shejialuo@gmail.com, karthik.188@gmail.com,
gitster@pobox.com, sunshine@sunshineco.com,
Taylor Blau <me@ttaylorr.com>,
Christian Couder <chriscool@tuxfamily.org>,
Victoria Dye <vdye@github.com>
Subject: Re: [GSoC][RFC PATCH v3 1/3] builtin/refs: add list subcommand
Date: Thu, 24 Jul 2025 07:58:14 +0200 [thread overview]
Message-ID: <aIHLdkhdVNy72Yf-@pks.im> (raw)
In-Reply-To: <20250723064313.29866-2-meetsoni3017@gmail.com>
On Wed, Jul 23, 2025 at 12:13:11PM +0530, Meet Soni wrote:
> diff --git a/Documentation/git-for-each-ref.adoc b/Documentation/git-for-each-ref.adoc
> index 5ef89fc0fe..f7bbc1902a 100644
> --- a/Documentation/git-for-each-ref.adoc
> +++ b/Documentation/git-for-each-ref.adoc
Tiny nit, not worth a reroll by itself: it would have been nice to move
the extraction of the common options from our docs into a separate,
preparatory commit.
> diff --git a/builtin/for-each-ref.c b/builtin/for-each-ref.c
> index 3d2207ec77..d7d8279049 100644
> --- a/builtin/for-each-ref.c
> +++ b/builtin/for-each-ref.c
> @@ -16,11 +16,27 @@ static char const * const for_each_ref_usage[] = {
> NULL
> };
>
> +#define REFS_LIST_USAGE \
> + N_("git refs list [--count=<count>] [--shell|--perl|--python|--tcl]\n" \
> + " [(--sort=<key>)...] [--format=<format>]\n" \
> + " [--include-root-refs] [ --stdin | <pattern>... ]\n" \
> + " [--points-at=<object>]\n" \
> + " [--merged[=<object>]] [--no-merged[=<object>]]\n" \
> + " [--contains[=<object>]] [--no-contains[=<object>]]\n" \
> + " [--exclude=<pattern> ...]")
> +
> +static char const * const refs_list_usage[] = {
> + REFS_LIST_USAGE,
> + NULL
> +};
Shouldn't the usage strings for git-for-each-ref(1) and git-refs-list(1)
be the same, except for the command name?
> int cmd_for_each_ref(int argc,
> const char **argv,
> const char *prefix,
> struct repository *repo)
> {
> + int cmd_is_refs_list = !strcmp(argv[0], "refs list");
> + const char *const *opt_usage = cmd_is_refs_list ? refs_list_usage : for_each_ref_usage;
> struct ref_sorting *sorting;
> struct string_list sorting_options = STRING_LIST_INIT_DUP;
> int icase = 0, include_root_refs = 0, from_stdin = 0;
This follows the same pattern we have in "builtin/blame.c". It's not
exactly pretty that git-for-each-ref(1) is aware of git-refs(1) now, but
I think it's the pragmatic thing to do.
> diff --git a/builtin/refs.c b/builtin/refs.c
> index 998d2a2c1c..41e29d1b5f 100644
> --- a/builtin/refs.c
> +++ b/builtin/refs.c
> @@ -13,6 +14,15 @@
> #define REFS_VERIFY_USAGE \
> N_("git refs verify [--strict] [--verbose]")
>
> +#define REFS_LIST_USAGE \
> + N_("git refs list [--count=<count>] [--shell|--perl|--python|--tcl]\n" \
> + " [(--sort=<key>)...] [--format=<format>]\n" \
> + " [--include-root-refs] [ --stdin | <pattern>... ]\n" \
> + " [--points-at=<object>]\n" \
> + " [--merged[=<object>]] [--no-merged[=<object>]]\n" \
> + " [--contains[=<object>]] [--no-contains[=<object>]]\n" \
> + " [--exclude=<pattern> ...]")
> +
> static int cmd_refs_migrate(int argc, const char **argv, const char *prefix,
> struct repository *repo UNUSED)
> {
Hm, this one is a bit unfortunate though, as it feels like it's just a
matter of time before the two `REFS_LIST_USAGE` defines drift apart.
Might be worth it to move them to a shared place.
Alternatively, we could pull out the logic of `cmd_for_each_ref()` into
a separate function that also receives the usage array. Not sure whether
that is worth the hassle though.
Another alternative would be to just say `git refs list [<options>]`.
This here
next prev parent reply other threads:[~2025-07-24 5:58 UTC|newest]
Thread overview: 65+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-06-27 7:49 [GSoC][RFC PATCH 0/2] Add refs list subcommand Meet Soni
2025-06-27 7:49 ` [GSoC][RFC PATCH 1/2] builtin/refs: add " Meet Soni
2025-06-27 16:27 ` Jean-Noël Avila
2025-06-27 18:13 ` Junio C Hamano
2025-06-30 4:28 ` Meet Soni
2025-06-29 11:05 ` [PATCH] doc:git-for-each-ref: fix styling and typos Jean-Noël Avila
2025-06-30 15:48 ` Junio C Hamano
2025-06-30 18:55 ` Jean-Noël AVILA
2025-06-27 7:49 ` [GSoC][RFC PATCH 2/2] t: add test for git refs list subcommand Meet Soni
2025-06-27 18:03 ` [GSoC][RFC PATCH 0/2] Add " Junio C Hamano
2025-06-28 8:05 ` shejialuo
2025-06-30 14:05 ` Junio C Hamano
2025-07-06 12:58 ` shejialuo
2025-06-30 3:53 ` Meet Soni
2025-06-30 20:10 ` Junio C Hamano
2025-07-09 13:36 ` Patrick Steinhardt
2025-07-17 7:50 ` [GSoC][RFC PATCH v2 " Meet Soni
2025-07-17 7:50 ` [GSoC][RFC PATCH v2 1/2] builtin/refs: add " Meet Soni
2025-07-17 16:48 ` Eric Sunshine
2025-07-23 5:01 ` Meet Soni
2025-07-17 7:50 ` [GSoC][RFC PATCH v2 2/2] t: add test for git refs " Meet Soni
2025-07-17 21:01 ` Junio C Hamano
2025-07-23 5:17 ` Meet Soni
2025-07-23 15:03 ` Junio C Hamano
2025-07-23 6:43 ` [GSoC][RFC PATCH v3 0/3] Add " Meet Soni
2025-07-23 6:43 ` [GSoC][RFC PATCH v3 1/3] builtin/refs: add " Meet Soni
2025-07-24 5:58 ` Patrick Steinhardt [this message]
2025-07-24 16:01 ` Junio C Hamano
2025-07-25 11:10 ` Meet Soni
2025-07-23 6:43 ` [GSoC][RFC PATCH v3 2/3] t6300: refactor tests to be shareable Meet Soni
2025-07-23 6:43 ` [GSoC][RFC PATCH v3 3/3] t: add test for git refs list subcommand Meet Soni
2025-07-31 9:00 ` [GSoC][RFC PATCH v4 0/5] Add " Meet Soni
2025-07-31 9:00 ` [GSoC][RFC PATCH v4 1/5] doc: factor out common option Meet Soni
2025-07-31 9:00 ` [GSoC][RFC PATCH v4 2/5] builtin/for-each-ref: factor out core logic into a helper Meet Soni
2025-08-01 5:54 ` Patrick Steinhardt
2025-08-04 6:34 ` Meet Soni
2025-07-31 9:00 ` [GSoC][RFC PATCH v4 3/5] builtin/refs: add list subcommand Meet Soni
2025-08-01 13:27 ` Phillip Wood
2025-08-01 14:43 ` Junio C Hamano
2025-08-01 15:49 ` Phillip Wood
2025-08-01 17:14 ` Junio C Hamano
2025-08-04 9:28 ` Phillip Wood
2025-08-04 6:32 ` Meet Soni
2025-08-04 9:27 ` Phillip Wood
2025-08-04 15:35 ` Junio C Hamano
2025-07-31 9:00 ` [GSoC][RFC PATCH v4 4/5] t6300: refactor tests to be shareable Meet Soni
2025-07-31 9:00 ` [GSoC][RFC PATCH v4 5/5] t: add test for git refs list subcommand Meet Soni
2025-08-01 5:54 ` [GSoC][RFC PATCH v4 0/5] Add " Patrick Steinhardt
2025-08-04 9:22 ` [GSoC][RFC PATCH v5 0/6] " Meet Soni
2025-08-04 9:22 ` [GSoC][RFC PATCH v5 1/6] doc: factor out common option Meet Soni
2025-08-04 18:34 ` Junio C Hamano
2025-08-04 9:22 ` [GSoC][RFC PATCH v5 2/6] builtin/for-each-ref: align usage string with the man page Meet Soni
2025-08-04 9:22 ` [GSoC][RFC PATCH v5 3/6] builtin/for-each-ref: factor out core logic into a helper Meet Soni
2025-08-04 9:22 ` [GSoC][RFC PATCH v5 4/6] builtin/refs: add list subcommand Meet Soni
2025-08-04 9:22 ` [GSoC][RFC PATCH v5 5/6] t6300: refactor tests to be shareable Meet Soni
2025-08-04 9:22 ` [GSoC][RFC PATCH v5 6/6] t: add test for git refs list subcommand Meet Soni
2025-08-05 9:27 ` [GSoC][PATCH v6 0/6] Add " Meet Soni
2025-08-05 9:27 ` [GSoC][PATCH v6 1/6] doc: factor out common option Meet Soni
2025-08-05 9:27 ` [GSoC][PATCH v6 2/6] builtin/for-each-ref: align usage string with the man page Meet Soni
2025-08-05 9:27 ` [GSoC][PATCH v6 3/6] builtin/for-each-ref: factor out core logic into a helper Meet Soni
2025-08-05 9:27 ` [GSoC][PATCH v6 4/6] builtin/refs: add list subcommand Meet Soni
2025-08-05 9:27 ` [GSoC][PATCH v6 5/6] t6300: refactor tests to be shareable Meet Soni
2025-08-05 9:27 ` [GSoC][PATCH v6 6/6] t: add test for git refs list subcommand Meet Soni
2025-08-05 13:07 ` [GSoC][PATCH v6 0/6] Add " Patrick Steinhardt
2025-08-05 16:12 ` Junio C Hamano
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=aIHLdkhdVNy72Yf-@pks.im \
--to=ps@pks.im \
--cc=chriscool@tuxfamily.org \
--cc=git@vger.kernel.org \
--cc=gitster@pobox.com \
--cc=karthik.188@gmail.com \
--cc=me@ttaylorr.com \
--cc=meetsoni3017@gmail.com \
--cc=shejialuo@gmail.com \
--cc=sunshine@sunshineco.com \
--cc=vdye@github.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.