]> git.ipfire.org Git - thirdparty/git.git/commit
status: make coloring of "-z --short" consistent
authorJeff King <peff@peff.net>
Fri, 17 Oct 2025 08:44:55 +0000 (04:44 -0400)
committerJunio C Hamano <gitster@pobox.com>
Fri, 17 Oct 2025 21:30:42 +0000 (14:30 -0700)
commit50927f4f683a35ad1c76c8a02a1759a076d3f8f8
tree4f08464434e4a6a24de938b0de29f699e6606e8c
parentc44beea485f0f2feaf460e2ac87fdd5608d63cf0
status: make coloring of "-z --short" consistent

When running "git status -z --short", the marker on modified index
entries (e.g., "M") is colorized, but the "??" marker for untracked
entries is not. Let's fix the "??" entries to show color here.

At first glance you might think that neither should be colorized, as
usually one would use "-z" to get machine-readable output. But this is a
tricky and unusual case. We have two output formats, "--short" and
"--porcelain" which are substantially similar, but differ in that
"--short" is for humans who want something short and "--porcelain" is
for machines. And "-z" by itself, without any other output option, does
default to "--porcelain", so "git status -z" will not colorize anything.

But if you explicitly ask for "-z" and "--short" together, then that is
asking for the human-readable output, but separated by NULs. This is
unlikely to be useful directly, but could for example be used if the
output will be shown to a human outside of the terminal. At any rate,
the current behavior is clearly wrong (since we colorize some things but
not others), and I think colorizing everything is the least-surprising
thing we can do here.

Reported-by: Langbart <Langbart@protonmail.com>
Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
t/t7508-status.sh
wt-status.c