Andreas Schwab <schwab@xxxxxxxxxxxxxx> writes: > merlyn@xxxxxxxxxxxxxx (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 -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html