From: Junio C Hamano <gitster@pobox.com>
To: Jeff King <peff@peff.net>
Cc: Nazri Ramliy <ayiehere@gmail.com>,
Jonathan Nieder <jrnieder@gmail.com>,
Git Mailing List <git@vger.kernel.org>
Subject: Re: What happened to "git status --color=(always|auto|never)"?
Date: Tue, 10 Oct 2017 21:51:38 +0900 [thread overview]
Message-ID: <xmqqfuarp3mt.fsf@gitster.mtv.corp.google.com> (raw)
In-Reply-To: <20171010102509.e7ucbyon6ka6722l@sigill.intra.peff.net> (Jeff King's message of "Tue, 10 Oct 2017 06:25:10 -0400")
Jeff King <peff@peff.net> writes:
> :( I was worried that this might hit some third-party scripts.
> ...
> All that said, should we revisit the decision from 6be4595edb? The two
> code changes we could make are:
>
> 1. Adding a "--color" option to "git status". Commit 0c88bf5050
> (provide --color option for all ref-filter users, 2017-10-03) from
> that same series shows some prior art.
>
> This is a clean solution, but it does mean that scripts have to
> adapt (and would potentially need to care about which Git version
> they're relying on).
If we view that "always" issue is a regression, then this is not a
"solution". It is a part of an ideal world where we never allowed
"always" as a value for color.ui, which is not the world we live in.
> 2. Re-allow "color.always" config from the command-line. It's actually
> on-disk config that we want to downgrade, but I wanted to avoid
> making complicated rules about how the config would behave in
> different scopes. The patch for this would look something like the
> one below.
Yuck, ugly. The code is simple (thanks to the "who ordered it?"
thing), but the behaviour is rather embarrassing to explain.
> 3. Revert the original series, and revisit the original "respect
> color.ui via porcelain" commit which broke add--interactive in
> v2.14.2 (136c8c8b8fa).
Which one do you mean is "the original series"? The one that made
plumbing to pay attention to the color config? I think it would be
the cleanest "solution" in the world we live in, but the series (and
the follow-on changes that started assuming that config_default
reads the color config) have a rather large footprint and it will be
quite painful to vet the result.
I think the right fix to the original problem (you cannot remove
auto-color from the plumbing) is to stop paying attention to color
configuration from the default config. I wonder if something like
this would work?
- Initialize color.c::git_use_color_default to GIT_COLOR_UNKNOWN;
- When git_color_config() is called, and if git_use_color_default
is still GIT_COLOR_UNKNOWN, set it to GIT_COLOR_AUTO (regardless
of the variable git_color_config() is called for).
- In color.c::want_color(), when git_use_color_default is used,
notice if it is GIT_COLOR_UNKNOWN and behave as if it is
GIT_COLOR_NEVER.
Then we make sure that git_color_config() is never called by any
plumbing command. The fact it is (ever) called can be taken as a
clue that we are running a Porcelain (hence we transition from
UNKNOWN to AUTO), so we'd get the desirable "no default color for
plumbing, auto color for Porcelain", I would think.
next prev parent reply other threads:[~2017-10-10 12:51 UTC|newest]
Thread overview: 42+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-10-09 23:58 What happened to "git status --color=(always|auto|never)"? Nazri Ramliy
2017-10-10 0:16 ` Jonathan Nieder
2017-10-10 0:43 ` Nazri Ramliy
2017-10-10 0:59 ` Jonathan Nieder
2017-10-10 4:42 ` Nazri Ramliy
2017-10-10 10:25 ` Jeff King
2017-10-10 12:51 ` Junio C Hamano [this message]
2017-10-10 13:06 ` Jeff King
2017-10-10 19:03 ` Jonathan Nieder
2017-10-10 19:37 ` Jeff King
2017-10-11 2:05 ` Junio C Hamano
2017-10-12 2:10 ` [PATCH 0/2] Piling more kludge on top of color.ui Junio C Hamano
2017-10-12 2:10 ` [PATCH 1/2] color: downgrade "always" to "auto" only for on-disk configuration Junio C Hamano
2017-10-12 4:47 ` Jonathan Nieder
2017-10-12 5:05 ` Junio C Hamano
2017-10-12 5:40 ` Jonathan Nieder
2017-10-12 6:15 ` Junio C Hamano
2017-10-12 6:58 ` Junio C Hamano
2017-10-12 13:06 ` Jeff King
2017-10-12 15:12 ` Jeff King
2017-10-12 12:31 ` Jeff King
2017-10-13 0:09 ` Junio C Hamano
2017-10-13 1:47 ` Jeff King
2017-10-13 3:37 ` Junio C Hamano
2017-10-13 13:06 ` Jeff King
2017-10-13 17:20 ` [PATCH 0/4] peeling back color.ui=always hacks Jeff King
2017-10-13 17:23 ` [PATCH 1/4] Revert "color: make "always" the same as "auto" in config" Jeff King
2017-10-13 17:23 ` [PATCH 2/4] Revert "t6006: drop "always" color config tests" Jeff King
2017-10-13 17:24 ` [PATCH 3/4] Revert "color: check color.ui in git_default_config()" Jeff King
2017-10-13 17:26 ` [PATCH 4/4] tag: respect color.ui config Jeff King
2017-10-14 3:01 ` [PATCH 1/2] color: downgrade "always" to "auto" only for on-disk configuration Junio C Hamano
2017-10-16 21:53 ` Jeff King
2017-10-17 1:06 ` Junio C Hamano
2017-10-17 6:26 ` Junio C Hamano
2017-10-18 5:28 ` Jeff King
2017-10-18 5:57 ` Junio C Hamano
2017-10-17 6:51 ` Jonathan Nieder
2017-10-18 5:34 ` Jeff King
2017-10-12 2:10 ` [PATCH 2/2] color: discourage use of ui.color=always Junio C Hamano
2017-10-12 4:48 ` Jonathan Nieder
2017-10-12 15:08 ` Jeff King
2017-10-13 0:02 ` Junio C Hamano
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=xmqqfuarp3mt.fsf@gitster.mtv.corp.google.com \
--to=gitster@pobox.com \
--cc=ayiehere@gmail.com \
--cc=git@vger.kernel.org \
--cc=jrnieder@gmail.com \
--cc=peff@peff.net \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.