【发布时间】:2012-02-17 19:51:23
【问题描述】:
目前我的终端提示包含git信息。
示例清理目录:michaelespinosa:~/Sites/example.com [git:master]
脏目录示例:michaelespinosa:~/Sites/example.com [git:master*]
我还想为 git 信息着色(如果干净则为绿色,如果脏了则为红色)。
我想我可以添加一个函数 (parse_git_color) 并根据是否存在星号使用 if else 语句相应地设置它的颜色。
问题在于,无论是干净目录还是脏目录,它都会一直返回绿色。我认为问题与 if 语句 parse_git_dirty == "*" 将 parse_git_dirty 的值与 "*" 进行比较有关。
function parse_git_dirty {
[[ $(git status 2> /dev/null | tail -n1) != "nothing to commit (working directory clean)" ]] && echo "*"
}
function parse_git_color {
if [ parse_git_dirty == "*" ]; then
echo '\033[0;31m\'
else
echo '\033[0;32m\'
fi
}
function parse_git_branch {
git branch --no-color 2> /dev/null | sed -e '/^[^*]/d' -e "s/* \(.*\)/$(parse_git_color)[git:\1$(parse_git_dirty)]/"
}
感谢任何帮助! 谢谢
【问题讨论】: