• J
    diff: do not color output when --color=auto and --output=<file> is given · afc676f2
    Johannes Schindelin 提交于
    "git diff --output=<file> --color=auto" used to show the ANSI color
    sequence in the resulting file when the standard output is connected
    to a terminal, because --color=auto check always checks the standard
    output, not the actual file that receives the output.
    
    We could correct this by using freopen(3) to redirect the standard
    output to the specified file, which is in like with how format-patch
    used to match the world order, but following the same reasoning as
    the earlier "format-patch: explicitly switch off color when writing
    to files", let's be more strict by bypassing the "auto" check when
    the --output=<file> option is in use.
    
    Strictly speaking, this is a backwards-incompatible change, but
    it is highly unlikely that any user would want to see ANSI color
    sequences in a file.
    
    The reason this was not caught earlier is most likely that either
    --output=<file> is not used, or only when stdout is redirected
    anyway.
    
    Users can still give --color=always if they want a colored diff in
    the resulting file.
    Signed-off-by: NJohannes Schindelin <johannes.schindelin@gmx.de>
    Signed-off-by: NJunio C Hamano <gitster@pobox.com>
    afc676f2
diff.c 138.6 KB