Re: [PATCH] repo: add -z as an alias for --format=nul to git-repo-structure
- From
Justin Tobler <jltobler@gmail.com>
- Date
- Dec 1, 2025, 15:11 UTC
- Message-ID
- <3hzpywampwjfsckljdqhyabhkupqmrzbcsc7fhrkg2cl4rjzzm@mygtkda7soxj>
- In-Reply-To
- <20251130203456.28437-1-lucasseikioshiro@gmail.com>
On 25/11/30 04:59PM, Lucas Seiki Oshiro wrote:
Show 16 quoted lines
> Other Git commands that have nul-terminated output, such as git-config, > git-status, git-ls-files, and git-repo-info have a flag `-z` for using > the null character as the record separator. > > Add the `-z` flag to git-repo-structure as an alias for `--format=nul`, > making it consistent with the behavior of the other commands. > > Signed-off-by: Lucas Seiki Oshiro <lucasseikioshiro@gmail.com> > --- > > Hello, again! > > Since git-repo-info and git-repo-structure share the same format parser, this > could be done by only copying the OPT_CALLBACK_F from repo_info. > > I'm cc'ing Justin here, as he was the author of git-repo-structure.
Thanks Lucas, looks like you beat me to this change. :)
> This patch is based on top of master b31ab939fe (The fourth batch, 2025-11-26) > with lo/repo-info-all merged.
Any reason this isn't just based on master? It looks like this patch should apply just fine as I don't see any dependencies.
Show 32 quoted lines
> Documentation/git-repo.adoc | 5 +++-- > builtin/repo.c | 6 +++++- > t/t1901-repo-structure.sh | 6 ++++++ > 3 files changed, 14 insertions(+), 3 deletions(-) > > diff --git a/Documentation/git-repo.adoc b/Documentation/git-repo.adoc > index 70f0a6d2e4..8820954f7e 100644 > --- a/Documentation/git-repo.adoc > +++ b/Documentation/git-repo.adoc > @@ -9,7 +9,7 @@ SYNOPSIS > -------- > [synopsis] > git repo info [--format=(keyvalue|nul)] [-z] [--all | <key>...] > -git repo structure [--format=(table|keyvalue|nul)] > +git repo structure [--format=(table|keyvalue|nul)] [-z] > > DESCRIPTION > ----------- > @@ -44,7 +44,7 @@ supported: > + > `-z` is an alias for `--format=nul`. > > -`structure [--format=(table|keyvalue|nul)]`:: > +`structure [--format=(table|keyvalue|nul)] [-z]`:: > Retrieve statistics about the current repository structure. The > following kinds of information are reported: > + > @@ -72,6 +72,7 @@ supported: > the delimiter between the key and value instead of '='. Unlike the > `keyvalue` format, values containing "unusual" characters are never > quoted. > +`-z` is an alias for `--format=nul`.
If we want to match the format in the section prior, we should add a '+' character on the prior line to separate the sections. With how it is written now, this line will just be appeneded to the previous section.
Show 23 quoted lines
> INFO KEYS
> ---------
> diff --git a/builtin/repo.c b/builtin/repo.c
> index 2a653bd3ea..1c06207a39 100644
> --- a/builtin/repo.c
> +++ b/builtin/repo.c
> @@ -16,7 +16,7 @@
>
> static const char *const repo_usage[] = {
> "git repo info [--format=(keyvalue|nul)] [-z] [--all | <key>...]",
> - "git repo structure [--format=(table|keyvalue|nul)]",
> + "git repo structure [--format=(table|keyvalue|nul)] [-z]",
> NULL
> };
>
> @@ -529,6 +529,10 @@ static int cmd_repo_structure(int argc, const char **argv, const char *prefix,
> OPT_CALLBACK_F(0, "format", &format, N_("format"),
> N_("output format"),
> PARSE_OPT_NONEG, parse_format_cb),
> + OPT_CALLBACK_F('z', NULL, &format, NULL,
> + N_("synonym for --format=nul"),
> + PARSE_OPT_NONEG | PARSE_OPT_NOARG,
> + parse_format_cb),Reusing the same `parse_format_cb()` makes sense and also matches what we do with git-repo-info. Looks good.
Show 16 quoted lines
> OPT_BOOL(0, "progress", &show_progress, N_("show progress")),
> OPT_END()
> };
> diff --git a/t/t1901-repo-structure.sh b/t/t1901-repo-structure.sh
> index 36a71a144e..5a50acf345 100755
> --- a/t/t1901-repo-structure.sh
> +++ b/t/t1901-repo-structure.sh
> @@ -101,6 +101,12 @@ test_expect_success 'keyvalue and nul format' '
> tr "\n=" "\0\n" <expect >expect_nul &&
> git repo structure --format=nul >out 2>err &&
>
> + test_cmp expect_nul out &&
> + test_line_count = 0 err &&
> +
> + # Check -z
> + git repo structure --format=nul >out 2>err &&Did you mean to use the -z option here?
-Justin