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"
注意:需要将 -e
与 echo
结合使用 - 它指定解释特殊字符,例如颜色和换行符。 (http://ss64.com/bash/echo.html)
我的预提交挂钩 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"
注意:需要将 -e
与 echo
结合使用 - 它指定解释特殊字符,例如颜色和换行符。 (http://ss64.com/bash/echo.html)