* [Question] git cat-file --batch cannot handle irregular path
@ 2021-04-20 3:48 lilinchao
2021-04-20 4:23 ` Junio C Hamano
0 siblings, 1 reply; 3+ messages in thread
From: lilinchao @ 2021-04-20 3:48 UTC (permalink / raw)
To: git
Hi, all
When I use "git cat-file --batch" command, with the form
<tree-ish>:path, here path is the working tree in my repository,
but it is irregular, such as "法律\(Law\)/民法\(civil\ law$'\n'\)\",
this kind of path is unintentionally created.
The process cannot correctly handle this kind of case:
$ git cat-file --batch
d071ea971fb93ebc937517736c2a63d64ddbe0d9:法律(Law)/民法(civil law)
d071ea971fb93ebc937517736c2a63d64ddbe0d9:法律(Law)/民法(civil law) missing
How can I deal with this case when irregular paths cannot be avoided?
Thanks in advance.
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [Question] git cat-file --batch cannot handle irregular path
2021-04-20 3:48 [Question] git cat-file --batch cannot handle irregular path lilinchao
@ 2021-04-20 4:23 ` Junio C Hamano
2021-04-23 13:07 ` Jeff King
0 siblings, 1 reply; 3+ messages in thread
From: Junio C Hamano @ 2021-04-20 4:23 UTC (permalink / raw)
To: lilinchao; +Cc: git
"lilinchao@oschina.cn" <lilinchao@oschina.cn> writes:
> but it is irregular, such as "法律\(Law\)/民法\(civil\ law$'\n'\)\",
> ...
> d071ea971fb93ebc937517736c2a63d64ddbe0d9:法律(Law)/民法(civil law)
> d071ea971fb93ebc937517736c2a63d64ddbe0d9:法律(Law)/民法(civil law) missing
I may be misreading what you wrote, but if you mean that there is a
LF in the pathname, I do not think cat-file --batch is prepared to
handle it; as we can see in builtin/cat-cile.c:
static int batch_objects(struct batch_options *opt)
{
...
while (strbuf_getline(&input, stdin) != EOF) {
if (data.split_on_whitespace) {
...
}
batch_one_object(input.buf, &output, opt, &data);
}
it always treats what strbuf_getline() returns as a single record.
If properly designed, it would have
- supported "-z" to take NUL-delimited input, and
- when "-z" is not in effect, after reading a single line of input,
we would have called quote API to un-cquote the string, so that
we can express LF and other special characters in the pathname.
but those who worked on "cat-file --batch" didn't.
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [Question] git cat-file --batch cannot handle irregular path
2021-04-20 4:23 ` Junio C Hamano
@ 2021-04-23 13:07 ` Jeff King
0 siblings, 0 replies; 3+ messages in thread
From: Jeff King @ 2021-04-23 13:07 UTC (permalink / raw)
To: Junio C Hamano; +Cc: lilinchao, git
On Mon, Apr 19, 2021 at 09:23:31PM -0700, Junio C Hamano wrote:
> If properly designed, it would have
>
> - supported "-z" to take NUL-delimited input, and
>
> - when "-z" is not in effect, after reading a single line of input,
> we would have called quote API to un-cquote the string, so that
> we can express LF and other special characters in the pathname.
>
> but those who worked on "cat-file --batch" didn't.
Yeah, this has been a long-standing pain.
It would be easy to add "-z" now, and probably worth doing.
It is too late to do the unquoting thing by default now. We could add an
option to enable it, but once "-z" exists, it hardly seems worth it.
-Peff
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2021-04-23 13:07 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-04-20 3:48 [Question] git cat-file --batch cannot handle irregular path lilinchao
2021-04-20 4:23 ` Junio C Hamano
2021-04-23 13:07 ` Jeff King
Code repositories for project(s) associated with this public inbox
https://80x24.org/mirrors/git.git
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 read-only IMAP folder(s) and NNTP newsgroup(s).