git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: [PATCH] log --decorate: do not leak "commit" color into the next item

From
Jeff King <peff@peff.net>
Date
Feb 18, 2015, 23:07 UTC
Message-ID
<20150218230728.GA17302@peff.net>
In-Reply-To
<xmqqpp9628tl.fsf@gitster.dls.corp.google.com>
On Wed, Feb 18, 2015 at 01:44:54PM -0800, Junio C Hamano wrote:
Show 29 quoted lines
> If you wanted to paint the HEAD and local branch name in the same
> color as the body text (perhaps because cyan and green are too faint
> on a black-on-white terminal to be readable), you would not want to
> have to say
> 
>     [color "decorate"]
>         head = black
>         branch = black
> 
> because that you would not be able to reuse same configuration on a
> white-on-black terminal.  You would naively expect
> 
>     [color "decorate"]
>         head = normal
> 	branch = normal
> 
> to work, but unfortunately it does not.  It paints the string "HEAD"
> and the branch name in the same color as the opening parenthesis or
> comma between the decoration elements when showing output like this:
> 
>     $ git show -s --decorate
>     commit f3f407747c1cce420ae4b4857c4a6806efe38680 (HEAD, master)
>     ...
> 
> This is because the code forgets to reset the color after printing
> the "prefix" in its own color.
> 
> Signed-off-by: Junio C Hamano <gitster@pobox.com>
> ---

Yeah, I think this is a good fix. I had a vague feeling that we may have done this on purpose to let the decoration color "inherit" from the existing colors for backwards compatibility, but I don't think that could ever have worked (since color.decorate.* never defaulted to "normal"). And I couldn't find anything on the list. I think I am probably thinking of color.diff.func, which faced a similar issue.

Also, for your amusement:
  http://thread.gmane.org/gmane.comp.version-control.git/191102/focus=191118

Believe it or not, this was actually an item on my todo list, which is perhaps a commentary on how sad and unrealistic my todo list is. But I'm crossing it off anyway. Task accomplished!

-Peff
Previous: Junio C HamanoNext: Junio C Hamano
Message 3 of 16 in “[Q] should "color.*.<slot> = normal" emit nothing?”
  1. Junio C HamanoFeb 18, 2015
  2. log --decorate: do not leak "commit" color into the next itemJunio C Hamano, Feb 18, 2015
  3. Jeff KingFeb 18, 2015
  4. Junio C HamanoFeb 19, 2015
  5. Jeff KingFeb 20, 2015
  6. Junio C HamanoFeb 20, 2015
  7. Jeff KingFeb 21, 2015
  8. Junio C HamanoFeb 21, 2015
  9. 0/7 Fix leak of color/attributes in "git log --decorate"Junio C Hamano, Mar 4, 2015
  10. 1/7 Documentation/config.txt: avoid unnecessary negationJunio C Hamano, Mar 4, 2015
  11. 2/7 Documentation/config.txt: explain multi-valued variables onceJunio C Hamano, Mar 4, 2015
  12. 3/7 Documentation/config.txt: describe the structure first and then meaningJunio C Hamano, Mar 4, 2015
  13. 4/7 Documentation/config.txt: have a separate "Values" sectionJunio C Hamano, Mar 4, 2015
  14. 5/7 Documentation/config.txt: describe 'color' value type in the "Values" sectionJunio C Hamano, Mar 4, 2015
  15. 6/7 Documentation/config.txt: simplify boolean description in the syntax sectionJunio C Hamano, Mar 4, 2015
  16. 7/7 log --decorate: do not leak "commit" color into the next itemJunio C Hamano, Mar 4, 2015

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.