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

[PATCH v2 0/7] Fix leak of color/attributes in "git log --decorate"

From
Junio C Hamano <gitster@pobox.com>
Date
Mar 4, 2015, 21:33 UTC
Message-ID
<1425504803-16039-1-git-send-email-gitster@pobox.com>
In-Reply-To
<xmqqpp9628tl.fsf@gitster.dls.corp.google.com>
In "git log --decorate", you would see the commit header like this:
    commit ... (HEAD, jc/decorate-leaky-separator-color)

where "commit ... (" is painted in color.diff.commit, "HEAD" in color.decorate.head, ", " in color.diff.commit, the branch name in color.decorate.branch and then closing ")" in color.diff.commit.

However, setting color.decorate.head to normal does not paint "HEAD" in the "normal" color you have for your terminal. It just uses the same color it used to paint the "(", i.e. color.diff.commit.

Fixing this was a simple one-liner; the code forgot to reset the terminal attributes before moving on to the next item.

It however turns out that the existing documentation was rather messy and I ended up doing some preparatory clean-up on the documentation around how configuration variables are explained before updating the documentation to clarify that 'normal' ought to work (in other words, the colors and attributes are not cumulative).

I am reasonably happy with the result, and I can go with or without [6/7].

The previous round starts at $gmane/264065 [*1*]
Junio C Hamano (7):
  Documentation/config.txt: avoid unnecessary negation
  Documentation/config.txt: explain multi-valued variables once
  Documentation/config.txt: describe the structure first and then meaning
  Documentation/config.txt: have a separate "Values" section
  Documentation/config.txt: describe 'color' value type in the "Values" section
  Documentation/config.txt: simplify boolean description in the syntax section
  log --decorate: do not leak "commit" color into the next item
 Documentation/config.txt         | 111 ++++++++++++++++++++++++---------------
 log-tree.c                       |   1 +
 t/t4207-log-decoration-colors.sh |  16 +++---
 3 files changed, 77 insertions(+), 51 deletions(-)
[Footnote]
*1* http://thread.gmane.org/gmane.comp.version-control.git/264063/focus=264065
    http://mid.gmane.org/xmqqpp9628tl.fsf@gitster.dls.corp.google.com
-- 
2.3.1-316-g7c93423
Previous: Junio C HamanoNext: Junio C Hamano
Message 9 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.