Git - pre-commit 钩子错误颜色

4

我的pre-commit钩子压缩/编译css/js文件。当发生错误时,我只需使用echo输出错误,然后使用exit 1退出。但是,写入控制台的文本是白色,所以很难看到错误发生。

是否有另一种方式可以写入控制台(errOut?),使文本变为红色


1
将您的 pre-commit-hook 脚本添加到您的问题中。 - jub0bs
你只需要一个像这样的三行 pre-commit 钩子: #!/usr/bin/sh[NEXTLINE]>&2 echo "JS 压缩失败"[NEXTLINE]exit 1,其中 NEXTLINE 是一个新行。 - Redtopia
2个回答

16

最好的方法是给你的钩子输出上色,而不是像PS1提示符那样,就像这样:

red='\033[0;31m'
green='\033[0;32m'
yellow='\033[0;33m'
no_color='\033[0m'

echo -e "\n${yellow}Executing pre-commit hook${no_color}\n"

... do your hook stuff ...

if [[ something bad happens ]]; then
    >&2 echo -e "\n${red}ERROR - Something BAD happened!\n${no_color}"
    exit 1
fi

echo -e "${green}Git hook was SUCCESSFUL!${no_color}\n"

注意:使用echo时,需要结合-e选项以解释特殊字符,例如颜色和换行符。 (http://ss64.com/bash/echo.html)


1

可能定制您的Bash是一个好主意,就像这样:

0 ;) $ cat ~/.bashrc
PS1="\[\033[01;37m\]\$? \$(if [[ \$? == 0 ]]; then echo \"\[\033[01;32m\];)\"; else echo \"\[\033[01;31m\];(\"; fi) $(if [[ ${EUID} == 0 ]]; then echo
 '\[\033[01;31m\]\h'; else echo '\[\033[01;32m\]\u@\h'; fi)\[\033[01;34m\] \w \$\[\033[00m\] "

如果最后一个命令没有错误,它将显示一个绿色的快乐表情;), 如果失败,则显示一个红色的悲伤表情;(),例如:
0 ;) $ cat 1.sh
#!/bin/bash
exit 1
0 ;) $ ./1.sh
1 ;( $ 
0 ;( $ cat 1.sh
#!/bin/bash
exit 0
0 ;) $ ./1.sh
0 ;) $

你可以根据自己的需求自定义输出。
这个例子来自这里
实际效果如下: enter image description here 更新 对于 Windows 版本的 Git 2.5,应该是:
if ! \$?; then
  PS1="\[\e[1;32m\]Nice Work!\n\[\e[0;32m\]\u@\h \[\e[0;33m\]\w\[\e[0;37m\]\n\$ " 
else
  PS1="\[\e[1;31m\]Something is wrong!\n\[\e[0;32m\]\u@\h \[\e[0;33m\]\w\[\e[0;37m\]\n\$ "
fi 

它对我来说运行得很好 - neshkeev
你能发布一个简单的 pre-commit 钩子,它会以红色字体写入并 exit 1 吗? - Redtopia
我刚升级到 Git 2.5.3 并选择使用 mintty 终端,现在我的 PS1 不再起作用了。我收到错误消息“syntax error near unexpected token ')'”,然后它只会显示第一个回声之后的所有内容而不执行条件语句。有什么想法可以重写 Cygwin mintty 终端的表达式吗? - Redtopia
我发现了…应该是:if ! \$?; then PS1="\[\e[1;32m\]干得好!\n\[\e[0;32m\]\u@\h \[\e[0;33m\]\w\[\e[0;37m\]\n\$ " else PS1="\[\e[1;31m\]该死!\n\[\e[0;32m\]\u@\h \[\e[0;33m\]\w\[\e[0;37m\]\n\$ " fi - Redtopia
我以为这个已经可以工作了,但是 if ! \$?; then 总是返回 true,所以提示总是绿色的。我尝试了几种方法来测试是否发生错误,但是我无法弄清楚。 - Redtopia
显示剩余14条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接