Subject: Re: [PATCH 5/5] cat-file: Introduce new option to delimit output with NUL characters

From: Junio C Hamano <[email-masked]>
Date: Tue, 06 Jun 2023 08:54:16 +0900

Phillip Wood <[email-masked]> writes:

>> Instead, introduce a new option `-Z` that switches to NUL-delimited
>> input and output. The old `-z` option is marked as deprecated with a
>> hint that its output may become unparsable.
>
> The commit message explains the problem well, I agree adding a new
> option is the cleanest solution.
>
>...
>>   @@ -246,6 +246,12 @@ respectively print:
>>   -z::
>>   	Only meaningful with `--batch`, `--batch-check`, or
>>   	`--batch-command`; input is NUL-delimited instead of
>> +	newline-delimited. This option is deprecated in favor of
>> +	`-Z` as the output can otherwise be ambiguous.
>> +
>> +-Z::
>> +	Only meaningful with `--batch`, `--batch-check`, or
>> +	`--batch-command`; input and output is NUL-delimited instead of
>>   	newline-delimited.
>
> The documentation changes look good. I wonder if we should put the
> documentation for "-Z" above "-z" so users see the preferred option
> first.

Hmph, I expected "-z" and "-Z" to be orthogonal, the former
controlling how input records are delimited, the latter controlling
how output records are delimited, as it usually is a good idea to
keep things that could be orthogonal to be orthogonal to avoid
unnecessarily robbing users flexibility.  "-Z is a new way that is
preferred over -z" was something I did not expect, actually.

I am not outright rejecting such a deliberately limiting design, but
I'll have to think about it a bit.