From: Jeff King Date: Sat, 10 Apr 2010 04:12:48 GMT Subject: Re: More git status --porcelain lossage Message-ID: <20100410041247.GB11977@coredump.intra.peff.net> In-Reply-To: <20100409190601.47B37475FEF@snark.thyrsus.com> On Fri, Apr 09, 2010 at 03:06:01PM -0400, Eric Raymond wrote: > A format properly designed for script parseability should use even use > whitespace as a field separator. > > Why? > > Because if you do that, front ends *will* do field analysis using a > naive split-on-whitespace operation. And then...someday...someone > will try to run one of these of these on a volume from a system where > filenames contain embedded whitespace. Like Mac OS X or Windows. Yes, that is why almost every scriptable git interface supports a "-z" variant with NUL termination. > Conclusion: As it is presently, git status --porcelain format is > irretrievably botched. You need a field separator that's musch less > likely to land in a filename, like '|' - and to warn in the documentation > that careful front ends must check for and ignore '\|'. We already quote correctly, so it is only sloppy parsers that will be in trouble. Yes, space is more common than "|", but sloppy is sloppy. Parse it right, or use "-z". -Peff