需要git rev-parse才能安静地失败并返回null

时间:2014-01-12 04:58:25

标签: git git-commands

我正在尝试找到我的git repo的顶级,但是如果我目前没有位于git repo中,它会无声地失败。此代码将从另一个脚本中调用,我可以在其中使用git顶级或命令行选项。例如,

gpath = `git rev-parse --show-toplevel --quiet`
if (gpath == null) && (options.path == null) 
  puts help
end

如果我尝试使用git代码@ shell提示符,我会“致命:不是git存储库”。我尝试添加--verify开关,它产生相同的结果。有谁知道如何做到这一点?

1 个答案:

答案 0 :(得分:2)

if GPATH=`git rev-parse --show-toplevel --quiet 2>/dev/null`; then
  echo "repo: $GPATH"
else
  echo "not a repo"
fi

2>/dev/null会将致命错误消息从标准错误(stderr)重定向到/ dev / null(无处)。在这种情况下,git rev-parse将以失败状态退出,您可以使用上面的if语句进行检查。