Re: [PATCH v2 4/6] rev-list: support delimiting objects with NUL bytes
From: Patrick Steinhardt <hidden>
Date: 2025-03-13 12:55:43
On Wed, Mar 12, 2025 at 07:17:04PM -0500, Justin Tobler wrote:
quoted hunk ↗ jump to hunk
diff --git a/Documentation/rev-list-options.adoc b/Documentation/rev-list-options.adoc index 785c0786e0..166d3cd19e 100644 --- a/Documentation/rev-list-options.adoc +++ b/Documentation/rev-list-options.adoc@@ -361,6 +361,29 @@ ifdef::git-rev-list[] --progress=<header>:: Show progress reports on stderr as objects are considered. The `<header>` text will be printed with each progress update. + +-z:: + Instead of being newline-delimited, each outputted object and its + accompanying metadata is delimited using NUL bytes in the following + form: ++ +----------------------------------------------------------------------- +<OID> NUL [<token>=<value> NUL]... +----------------------------------------------------------------------- ++ +Additional object metadata, such as object paths, is printed using the +`<token>=<value>` form. Token values are printed as-is without any +encoding/truncation. An OID entry never contains a '=' character and thus +is used to signal the start of a new object record. Examples: ++ +----------------------------------------------------------------------- +<OID> NUL +<OID> NUL path=<path> NUL +----------------------------------------------------------------------- ++ +This mode is only compatible with the `--objects` output option. Also, revision +and pathspec argument parsing on stdin with the `--stdin` option is NUL byte +delimited instead of using newlines while in this mode. endif::git-rev-list[] History Simplification
I feel like this last paragraph, where we talk about `--stdin` being NUL-delimited, should already be mentioned in the first paragraph. Patrick