Re: Multiple consecutive null bytes with log -z --name-only

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Drew Noakes <drew@xxxxxxxxxxxxxx> writes:

> Passing -z with --name-only causes double nulls.
>
> $ git log -z --pretty=format:"%H" --name-only | grep -obUaP "\x00\x00" | wc
> -l
> 8994
> $ git log -z --pretty=format:"%H" | grep -obUaP "\x00\x00" | wc -l
> 0

With --pretty that tells you to show %H and --name-only that tells
you to show names of paths that were touched by each commit, you'd
need to be able to distinguish commit object name (or whategver you
give --pretty=format to) and each pathname, and because you are
driving "log", you also should be able to see where info for one
commit ends and the next one starts.

So I'd imagine that for a commit that touches N paths, you would get
(one pathname followed by NUL) N times, and then another NUL after
that to let you know that you read all the pathnames for that
commit.

By the way, tools should be reading from "--format=...", not from
"--pretty=format:...".  The --format=... option is for human
consumption and gives LF (or NUL when -z is used) the "separator"
semantics, i.e. when listing things A B and C, we would throw
separator in between but not before the first one (obviously) and
not after the last one.  "--format=..." which is a synonym for
"--pretty=tformat:..." is designed for tool consumption and gives LF
(or NULL when -z i used) the "terminator" semantics, i.e. each item
in the output is followed by terminator, so in addition to LF/NUL
after A and B in the example in this paragraph, you also get one
after C, which is the last item.


	



[Index of Archives]     [Linux Kernel Development]     [Gcc Help]     [IETF Annouce]     [DCCP]     [Netdev]     [Networking]     [Security]     [V4L]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]     [Fedora Users]

  Powered by Linux