From: Patrick Steinhardt <ps@pks.im>
To: Junio C Hamano <gitster@pobox.com>
Cc: Jeff King <peff@peff.net>, Justin Tobler <jltobler@gmail.com>,
git@vger.kernel.org, christian.couder@gmail.com
Subject: Re: [PATCH 0/4] rev-list: introduce NUL-delimited output mode
Date: Thu, 13 Mar 2025 08:46:11 +0100 [thread overview]
Message-ID: <Z9KNQ8XliWrrYgAT@pks.im> (raw)
In-Reply-To: <xmqqfrji1bvy.fsf@gitster.g>
On Wed, Mar 12, 2025 at 08:56:01AM -0700, Junio C Hamano wrote:
> Patrick Steinhardt <ps@pks.im> writes:
>
> > On Tue, Mar 11, 2025 at 07:57:20PM -0400, Jeff King wrote:
> >> On Mon, Mar 10, 2025 at 02:28:25PM -0500, Justin Tobler wrote:
> >>
> >> > To make machine parsing easier, this series introduces a NUL-delimited
> >> > output mode for git-rev-list(1) via a `-z` option following a suggestion
> >> > from Junio in a previous thread[1]. In this mode, instead of LF, each
> >> > object is delimited with two NUL bytes and any object metadata is
> >> > separated with a single NUL byte. Examples:
> >> >
> >> > <oid> NUL NUL
> >> > <oid> [NUL <path>] NUL NUL
> >> > ?<oid> [NUL <token>=<value>]... NUL NUL
> >> >
> >> > In this mode, path and value info are printed as-is without any special
> >> > encoding or truncation.
> >>
> >> I think this is a good direction, but I have two compatibility
> >> questions:
> >>
> >> 1. What should "git rev-list -z --stdin" do? In most other programs
> >> with a "-z" option it affects both input and output. I don't
> >> particularly care about this case myself, but it will be hard to
> >> change later. So we probably want to decide now.
> >
> > I would lean into the direction of making "-z" change the format both
> > for stdin and stdout. That's what we do in most cases, and in those
> > cases where we didn't we came to regret it (git-cat-file(1)).
>
> I've seen "-Z", in addition to "-z", used to differentiate between
> input and output in some commands. If we are not going to do that,
> I agree that making "-z" to affect both input and output is less
> surprising than having to remember which side is still text.
Yeah, "-Z" is what I meant with git-cat-file(1) above. I just think it's
safer to always use NUL as delimiter in machine parsing -- and while one
often thinks initially that it may not be needed either in stdin or
stdout, my learning is that eventually you always find an edge case
where you do need NUL termination in both. So I'd rather want to push
application developers into the right direction and make "-z" adjust
both streams.
Patrick
next prev parent reply other threads:[~2025-03-13 7:46 UTC|newest]
Thread overview: 60+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-03-10 19:28 [PATCH 0/4] rev-list: introduce NUL-delimited output mode Justin Tobler
2025-03-10 19:28 ` [PATCH 1/4] rev-list: inline `show_object_with_name()` in `show_object()` Justin Tobler
2025-03-10 20:51 ` Junio C Hamano
2025-03-10 19:28 ` [PATCH 2/4] rev-list: refactor early option parsing Justin Tobler
2025-03-10 20:54 ` Junio C Hamano
2025-03-12 21:39 ` Justin Tobler
2025-03-10 19:28 ` [PATCH 3/4] rev-list: support delimiting objects with NUL bytes Justin Tobler
2025-03-10 20:59 ` Junio C Hamano
2025-03-12 21:39 ` Justin Tobler
2025-03-12 7:50 ` Patrick Steinhardt
2025-03-12 21:41 ` Justin Tobler
2025-03-10 19:28 ` [PATCH 4/4] rev-list: support NUL-delimited --missing option Justin Tobler
2025-03-10 20:37 ` [PATCH 0/4] rev-list: introduce NUL-delimited output mode Junio C Hamano
2025-03-10 21:08 ` Junio C Hamano
2025-03-11 23:24 ` Justin Tobler
2025-03-11 23:19 ` Justin Tobler
2025-03-11 23:44 ` Junio C Hamano
2025-03-12 7:37 ` Patrick Steinhardt
2025-03-12 21:45 ` Justin Tobler
2025-03-10 22:38 ` D. Ben Knoble
2025-03-11 22:59 ` Justin Tobler
2025-03-11 23:57 ` Jeff King
2025-03-12 7:42 ` Patrick Steinhardt
2025-03-12 15:56 ` Junio C Hamano
2025-03-13 7:46 ` Patrick Steinhardt [this message]
2025-03-12 22:09 ` Justin Tobler
2025-03-13 5:33 ` Jeff King
2025-03-13 16:41 ` Justin Tobler
2025-03-14 2:49 ` Jeff King
2025-03-14 17:02 ` Junio C Hamano
2025-03-14 18:59 ` Jeff King
2025-03-14 19:53 ` Justin Tobler
2025-03-14 21:16 ` Junio C Hamano
2025-03-19 15:58 ` Justin Tobler
2025-03-13 0:17 ` [PATCH v2 0/6] " Justin Tobler
2025-03-13 0:17 ` [PATCH v2 1/6] rev-list: inline `show_object_with_name()` in `show_object()` Justin Tobler
2025-03-13 0:17 ` [PATCH v2 2/6] rev-list: refactor early option parsing Justin Tobler
2025-03-13 0:17 ` [PATCH v2 3/6] revision: support NUL-delimited --stdin mode Justin Tobler
2025-03-13 0:17 ` [PATCH v2 4/6] rev-list: support delimiting objects with NUL bytes Justin Tobler
2025-03-13 12:55 ` Patrick Steinhardt
2025-03-13 14:44 ` Justin Tobler
2025-03-13 0:17 ` [PATCH v2 5/6] rev-list: support NUL-delimited --boundary option Justin Tobler
2025-03-13 0:17 ` [PATCH v2 6/6] rev-list: support NUL-delimited --missing option Justin Tobler
2025-03-13 12:55 ` Patrick Steinhardt
2025-03-13 14:51 ` Justin Tobler
2025-03-13 23:57 ` [PATCH v3 0/6] rev-list: introduce NUL-delimited output mode Justin Tobler
2025-03-13 23:57 ` [PATCH v3 1/6] rev-list: inline `show_object_with_name()` in `show_object()` Justin Tobler
2025-03-13 23:57 ` [PATCH v3 2/6] rev-list: refactor early option parsing Justin Tobler
2025-03-13 23:57 ` [PATCH v3 3/6] revision: support NUL-delimited --stdin mode Justin Tobler
2025-03-13 23:57 ` [PATCH v3 4/6] rev-list: support delimiting objects with NUL bytes Justin Tobler
2025-03-19 12:35 ` Christian Couder
2025-03-19 16:02 ` Justin Tobler
2025-03-13 23:57 ` [PATCH v3 5/6] rev-list: support NUL-delimited --boundary option Justin Tobler
2025-03-13 23:57 ` [PATCH v3 6/6] rev-list: support NUL-delimited --missing option Justin Tobler
2025-03-19 18:34 ` [PATCH v4 0/5] rev-list: introduce NUL-delimited output mode Justin Tobler
2025-03-19 18:34 ` [PATCH v4 1/5] rev-list: inline `show_object_with_name()` in `show_object()` Justin Tobler
2025-03-19 18:34 ` [PATCH v4 2/5] rev-list: refactor early option parsing Justin Tobler
2025-03-19 18:34 ` [PATCH v4 3/5] rev-list: support delimiting objects with NUL bytes Justin Tobler
2025-03-19 18:34 ` [PATCH v4 4/5] rev-list: support NUL-delimited --boundary option Justin Tobler
2025-03-19 18:34 ` [PATCH v4 5/5] rev-list: support NUL-delimited --missing option Justin Tobler
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=Z9KNQ8XliWrrYgAT@pks.im \
--to=ps@pks.im \
--cc=christian.couder@gmail.com \
--cc=git@vger.kernel.org \
--cc=gitster@pobox.com \
--cc=jltobler@gmail.com \
--cc=peff@peff.net \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).