git/list[1] front-page[2] threads[3] people[4] search[5] about
 

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
Previous: Lucas Seiki OshiroNext: Lucas Seiki Oshiro
Message 7 of 15 in “repo: add -z as an alias for --format=nul to git-repo-structure”
  1. repo: add -z as an alias for --format=nul to git-repo-structureLucas Seiki Oshiro, Nov 30, 2025
  2. Junio C HamanoDec 1, 2025
  3. Patrick SteinhardtDec 1, 2025
  4. Lucas Seiki OshiroDec 1, 2025
  5. Junio C HamanoDec 2, 2025
  6. Lucas Seiki OshiroDec 2, 2025
  7. Justin ToblerDec 1, 2025
  8. Lucas Seiki OshiroDec 2, 2025
  9. 0/3 repo: add -z as an alias for --format=nul to git-repo-structureLucas Seiki Oshiro, Dec 4, 2025
  10. 1/3 repo: remove blank line from Documentation/git-repo.adocLucas Seiki Oshiro, Dec 4, 2025
  11. 2/3 repo: use [--format=... | -z] instead of [-z] in git-repo-info synopsisLucas Seiki Oshiro, Dec 4, 2025
  12. 3/3 repo: add -z as an alias for --format=nul to git-repo-structureLucas Seiki Oshiro, Dec 4, 2025
  13. Junio C HamanoDec 11, 2025
  14. Lucas Seiki OshiroDec 18, 2025
  15. Patrick SteinhardtDec 5, 2025

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.