当指定了--no-color时,不要使用git log --pretty对refs进行着色

时间:2016-02-09 21:53:51

标签: git posh-git

我正在使用Windows 7,PowerShell和Posh-Git与Git合作。我有以下别名设置:

ls = log --pretty=tformat:"%C(yellow)%h\\ %C(green)[%ad]%C(cyan)\\ <%cn>\\ %C(reset)%s%C(auto)%d"

问题在于,当我将输出传输到clip.exe以将其复制到剪贴板时,它还会复制一些颜色的字符。一点点阅读,我发现你可以添加&#34; auto,&#34;因此,如果指定了--no-color选项,它将使用默认颜色。所以现在我有:

ls = log --pretty=tformat:"%C(auto,yellow)%h\\ %C(auto,green)[%ad]%C(auto,cyan)\\ <%cn>\\ %C(auto,reset)%s%C(auto)%d"

我现在遇到的问题是显示refs的输出的最后一位。我将颜色设置为auto,以便git将应用分支和标记的默认颜色,但无法弄清楚如何使其尊重--no-color选项。如果我将其设置为%C(自动),颜色会一直显示。我尝试了%C(自动,自动),这适用于--no-color,但没有它git抱怨:

error: invalid color value: auto
fatal: unable to parse --pretty format

1 个答案:

答案 0 :(得分:3)

  

无法弄清楚如何让它尊重--no-color选项   如果我将其设置为%C(auto),则颜色会一直显示。

这将在git 2.9.x +(2016年第3季度)

中修复

commit b15a3e0Edward Thomson (ethomson)(2016年5月27日) (由Junio C Hamano -- gitster --合并于commit 1b3d14c,2016年6月20日)

  

format_commit_messagecolor=auto

荣誉%C(auto)      

git-log(1)在指定%C(auto)格式时记录   占位符将“在下一个%placeholders打开自动着色,直到再次切换颜色。”

     

但是,当使用%C(auto)时,将实施本实施   无条件地打开颜色(即使关闭了颜色配置)   对于当前上下文 - 例如,指定了--no-color或者   颜色为auto,输出不是tty。

     

更新format_commit_one以检查格式时的当前上下文   指定了%C(auto)的字符串,这确保了我们不会   无条件地写颜色。
  这使得该行为符合%C(auto,<colorname>)的行为,并允许用户指定仅在输出为a时才显示颜色   TTY

这是你用git-for-windows 2.9.0看到的。

no-color does not work

但是使用更新的2.9.x + git版本,--no-color确实有效:

no-color does work