[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