• J
    log --decorate: do not leak "commit" color into the next item · 5ee87585
    Junio C Hamano 提交于
    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.
    
    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.  This is because the code
    forgets to reset the color after printing the "prefix" in its own
    color.
    
    It theoretically is possible that some people were expecting and
    relying on that the attribute set as the "diff.commit" color, which
    is used to draw these opening parenthesis and inter-item comma, is
    inherited by the drawing of branch names, but it is not how the
    coloring works everywhere else.
    Signed-off-by: NJunio C Hamano <gitster@pobox.com>
    5ee87585
log-tree.c 22.1 KB