Git - 预提交挂钩错误颜色

Git - pre-commit hook error color

我的预提交挂钩 compresses/compiles css/js 个文件。当出现错误时,我只是简单地使用echo输出错误然后exit 1。但是,写入控制台的文本是 WHITE,因此当发生错误时不容易看到。

是否有另一种写入控制台的方法(errOut?),这将使文本 RED?

自定义您 bash 可能是个好主意,像这样:

0 ;) $ cat ~/.bashrc
PS1="\[3[01;37m\]$? $(if [[ $? == 0 ]]; then echo \"\[3[01;32m\];)\"; else echo \"\[3[01;31m\];(\"; fi) $(if [[ ${EUID} == 0 ]]; then echo
 '\[3[01;31m\]\h'; else echo '\[3[01;32m\]\u@\h'; fi)\[3[01;34m\] \w $\[3[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 ;) $

您可以根据需要自定义输出。

例子取自here

在行动中:

更新

对于Git 2.5对于windows应该是

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 

处理此问题的最佳方法是为钩子输出着色而不是 PS1 提示,如下所示:

red='3[0;31m'
green='3[0;32m'
yellow='3[0;33m'
no_color='3[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"

注意:需要将 -eecho 结合使用 - 它指定解释特殊字符,例如颜色和换行符。 (http://ss64.com/bash/echo.html)