threads / discuss / 39652

'git status -z' missing separators on OSX

Subject: 'git status -z' missing separators on OSX

## tl;dr

3 messages between Jun 16, 2015 and Jun 17, 2015.

replies: 2people: 3as markdown or json

Tad Hardesty· Jun 16, 2015, 23:21 UTC · lore

I have been experiencing a problem where git on OSX prints incorrect output to the `git status -z` command, where instead of NUL separators records are simply not separated. This is causing problems with IDE integration. While I have a workaround involving manually replacing \n with \0, it would be nice to identify and fix the root issue.

Here's a terminal session showing the problem: ~$ mkdir test && cd test ~/test$ git init Initialized empty Git repository in /Users/thardesty/test/.git/ ~/test (master #)$ touch a b ~/test (master #)$ ls a b ~/test (master #)$ git status -z | hexdump -C 00000000 3f 3f 20 61 3f 3f 20 62 |?? a?? b| 00000008 ~/test (master #)$ git add a b ~/test (master #)$ git status -z | hexdump -C 00000000 41 20 20 61 41 20 20 62 |A aA b| 00000008 ~/test (master #)$ git status --porcelain | hexdump -C 00000000 41 20 20 61 0a 41 20 20 62 0a |A a.A b.| 0000000a ~/test (master #)$ git --version git version 2.4.3 ~/test (master #)$ uname -a Darwin HA002070 14.3.0 Darwin Kernel Version 14.3.0: Mon Mar 23 11:59:05 PDT 2015; root:xnu-2782.20.48~5/RELEASE_X86_64 x86_64

As shown, --porcelain prints a newline but -z yields no separator at all.

The Mac is running OS X Yosemite 10.10.3. I have tried git 2.3.2 from Apple, git 2.4.2 from brew, and git 2.4.3 from brew, git-scm.org, and self-compiled, and these all exhibit the problem. Some helpful folks on the #git IRC tried the commands for me and didn't see any problems, but I temporarily blanked all my configuration files and that didn't help. I double-checked and git on Linux has the correct behavior.

Thanks for any help.
Jeff King· Jun 17, 2015, 03:32 UTC · re: Tad Hardesty · lore

Re: 'git status -z' missing separators on OSX

On Tue, Jun 16, 2015 at 06:21:56PM -0500, Tad Hardesty wrote:
> ~/test (master #)$ git status -z | hexdump -C
> 00000000  41 20 20 61 41 20 20 62                           |A  aA  b|
> 00000008

That's really weird. I don't have a Yosemite box available, but I can't reproduce on the Mavericks box I have access to. Still, I'd suspect something weird in your config (e.g., something that is inserting itself on the output pipe of "git status").

You said you blanked your config, but can you do "git config --list" to double-check? Also, try running with GIT_TRACE=1, which would show if git is starting a pager between your processes which might be eating the NUL.

Can you also double-check that you have no aliases for "git" (try "type git"). We have sometimes seen weird behavior when people have aliased "git" to "hub".

Is it only "git status" that is affected? Does "git log --oneline -1 -z" end in a NUL (it should)?

-Peff
Eric Sunshine· Jun 17, 2015, 21:32 UTC · re: Jeff King · lore

Re: 'git status -z' missing separators on OSX

On Tue, Jun 16, 2015 at 11:32 PM, Jeff King <peff@peff.net> wrote:
Show 9 quoted lines
> On Tue, Jun 16, 2015 at 06:21:56PM -0500, Tad Hardesty wrote:
>> ~/test (master #)$ git status -z | hexdump -C
>> 00000000  41 20 20 61 41 20 20 62                           |A  aA  b|
>> 00000008
>
> That's really weird. I don't have a Yosemite box available, but I can't
> reproduce on the Mavericks box I have access to. Still, I'd suspect
> something weird in your config (e.g., something that is inserting itself
> on the output pipe of "git status").

I also am unable to reproduce this behavior (using Yosemite). 

← back to recent threads