Possible BUG in 'git log -z' last commit is not '\0' terminated
From: Marco Costalba <hidden>
Date: 2016-06-15 22:43:17
It seems '-z' option is not honoured by the last revision printed that is just '\n' terminated. Thanks Marco
3 messages, 2 authors, 2016-06-15 · open the first message on its own page
From: Marco Costalba <hidden>
Date: 2016-06-15 22:43:17
It seems '-z' option is not honoured by the last revision printed that is just '\n' terminated. Thanks Marco
From: Linus Torvalds <torvalds@linux-foundation.org>
Date: 2016-06-15 22:43:17
On Fri, 22 Jun 2007, Marco Costalba wrote:
It seems '-z' option is not honoured by the last revision printed that is just '\n' terminated.
It's not a bug - it's by design. What the -z option does is to replace the normal "\n" that delineates commits from each other with a "\0". And we only put that delimeter in *between* commits, not *after* commits. The reason? It's prettier. Do a git log -1 to get a single commit, and notice how we do *not* add an empty line at the end (or beginning), and compare that to git log -2 that shows two commits, and has an empty line in *between*. Now, add the "-z" flag, and notice how that empty line is now replaced by a "\0" character instead. So you should think of the "\0" as being a delimeter that goes between commits, not something that "ends" the commit. It's not a "end of record" thing, it's a "between records" thing. Linus
From: Marco Costalba <hidden>
Date: 2016-06-15 22:43:17
On 6/22/07, Linus Torvalds [off-list ref] wrote:
So you should think of the "\0" as being a delimeter that goes between commits, not something that "ends" the commit. It's not a "end of record" thing, it's a "between records" thing.
Thanks for explanation. Interesting enough git-dif-tree with -z, documented as "-z \0 line termination on output" has a different behaviour, with and without -p option: git diff-tree -z HEAD ---> a '\0' is printed at the end git diff-tree -z -p HEAD --> No '\0' is printed. I suppose 'git log' passes '-z' to 'git diff-tree' because no documentation exsists in 'git log' man page. Thanks Marco BTW git-rev-list --header uses '\0' differently (appends to each record), but that's another story.