From: Jeff King <peff@peff.net>
To: git@vger.kernel.org
Subject: Re: [PATCH/RFC] Pro-Git thanks, Control-flow bug report
Date: Mon, 25 Jul 2011 10:25:49 -0600 [thread overview]
Message-ID: <20110725162548.GA7071@sigill.intra.peff.net> (raw)
In-Reply-To: <20110725125037.GA24198@sherwood.local>
On Mon, Jul 25, 2011 at 02:50:38PM +0200, Steffen Daode Nurpmeso wrote:
> So while exploring git(1) i recently tried out colours (it's oh
> so coloured for a two, since 2011 three colors vim(1) user -
> fascinating) and found a control flow bug:
>
> ?0%0[steffen@sherwood git.git]$ ./git --version
> git version 1.7.6.233.gd79bc.dirty
> ?0%0[steffen@sherwood git.git]$ ./git -c color.ui=auto -c color.pager=false diff 2> AU; cat AU
> git_config_colorbool(color.ui,auto,-1)
> [pager_in_use(): spawned:0, GIT_PAGER_IN_USE:0]
> auto_color:1
> color acc. 2 getenv(TERM)
> git_default_config(color.pager,false): 0
>
> So the pager is spawned after the color config setting has been
> queried (and the latter is never updated).
Hmm. What's old is new again, I guess. I posted a patch to fix this
almost exactly 3 years ago:
http://article.gmane.org/gmane.comp.version-control.git/90427
The patch is kind of an ugly special-case, and nobody else brought it up
in the past 3 years, so it just got dropped. Maybe it's worth taking it
now.
> I'm not aware of the codebase, and so i can't offer a patch,
> unfortunately. I tried the following change in color.c first,
> but that's not a solution for the real problem:
>
> jauto_color:
> if (pager_in_use())
> stdout_is_tty = pager_use_color;
> else if (stdout_is_tty < 0)
> stdout_is_tty = isatty(1);
> if (stdout_is_tty) {
> ...
You can't fix it strictly through color.c. The problem is that diff asks
the color code about using colors, _then_ starts a pager. So the color
code doesn't have enough information at the time it is asked to make the
right decision.
A more elegant solution would be to push the query to color.c to happen
at the time of color use, instead of during the startup sequence.
-Peff
next prev parent reply other threads:[~2011-07-25 16:25 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-07-25 12:50 [PATCH/RFC] Pro-Git thanks, Control-flow bug report Steffen Daode Nurpmeso
2011-07-25 16:25 ` Jeff King [this message]
2011-07-25 19:39 ` Steffen Daode Nurpmeso
2011-07-25 19:49 ` Jeff King
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=20110725162548.GA7071@sigill.intra.peff.net \
--to=peff@peff.net \
--cc=git@vger.kernel.org \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).