Re: git log -z still outputting newlines?
- From
Thomas Rast <trast@student.ethz.ch>
- Date
- Apr 30, 2012, 19:02 UTC
- Message-ID
- <87zk9toxes.fsf@thomas.inf.ethz.ch>
- In-Reply-To
- <m2pqaprrup.fsf@igel.home>
Andreas Schwab <schwab@linux-m68k.org> writes:
Show 16 quoted lines
> merlyn@stonehenge.com (Randal L. Schwartz) writes: > >> $ git log -z --format='%cE' -5 | od -c >> 0000000 g i t s t e r @ p o b o x . c o >> 0000020 m \n g i t s t e r @ p o b o x . >> 0000040 c o m \n g i t s t e r @ p o b o >> 0000060 x . c o m \n g i t s t e r @ p o >> 0000100 b o x . c o m \n g i t s t e r @ >> 0000120 p o b o x . c o m \n >> 0000132 >> >> Why are all those newlines in there? Bug? Misfeature? Feature? If >> feature, how do I ensure \0 in my output? If I add %x00, I get both \0 >> *and* \n in output. :( > > --format=format:%cE respects the -z option.
The underlying problem is apparently that --format=%cE triggers the format-guessing logic, which assumes you meant --pretty=tformat:%cE instead of --pretty=format:%cE.
It's probably a bug that --pretty=tformat:%cE does not use \0 here. After all the manual states
· tformat:
The tformat: format works exactly like format:, except that it
provides "terminator" semantics instead of "separator" semantics.Fixing it may be as easy as the patch below, but I haven't spent much time on it.
diff --git i/log-tree.c w/log-tree.c index 34c49e7..44f0268 100644 --- i/log-tree.c +++ w/log-tree.c @@ -682,7 +682,7 @@ void show_log(struct rev_info *opt) if (opt->use_terminator) { if (!opt->missing_newline) graph_show_padding(opt->graph); - putchar('\n'); + putchar(opt->diffopt.line_termination); } strbuf_release(&msgbuf);
--
Thomas Rast
trast@{inf,student}.ethz.ch