Git - 预提交钩子错误颜色

时间:2015-08-13 15:33:24

标签: git stdout stderr pre-commit-hook

我的预提交钩子压缩/编译css / js文件。发生错误时,我只需使用echo输出错误,然后exit 1。但是,写入控制台的文字是​​ WHITE ,因此在发生错误时不容易看到。

是否有其他方法可以写入控制台(errOut?),使文字 RED

2 个答案:

答案 0 :(得分:8)

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

class HttpInterceptor {
  constructor() {
    ['request', 'requestError', 'response', 'responseError']
        .forEach((method) => {
          if(this[method]) {
            this[method] = this[method].bind(this);
          }
        });
  }
}

class AuthenticationInterceptor extends HttpInterceptor {

    /* ngInject */
    constructor($q, $window) {
        super();
        this.$q = $q;
        this.$window = $window;
    }

    responseError(rejection) {
        var authToken = rejection.config.headers.Authorization;
        if (rejection.status === 401 && !authToken) {
            let authentication_url = rejection.data.errors[0].data.authenticationUrl;
            this.$window.location.replace(authentication_url);
            return this.$q.defer(rejection);
        }
        return this.$q.reject(rejections);
    }
}

注意:需要使用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" -e - 它指定解释特殊字符,如颜色和新行。 (http://ss64.com/bash/echo.html

答案 1 :(得分: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 ;) $

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

该示例来自here

行动中: 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