我试图找到我的git仓库的顶层,但如果我目前不在git仓库中,它会默默地失败。这段代码将从另一个脚本中调用,我可以在其中使用git顶层或命令行选项。比如说
gpath = `git rev-parse --show-toplevel --quiet`
if (gpath == null) && (options.path == null)
puts help
end
如果我只尝试git code@a shell提示符,我会得到"fatal:不是git仓库"。我尝试添加--verify开关,结果相同。有人知道怎么做吗?
2条答案
按热度按时间2vuwiymt1#
2>/dev/null
将致命错误消息从标准错误(stderr)重定向到/dev/null(nowhere)。在这种情况下,git rev-parse
将以失败状态退出,您可以使用上面的if
语句进行检查。xe55xuns2#
注意,确保使用Git 2。41+(2023年第二季度)
“
git rev-parse --quiet foo@{u}
”(man)",或者任何要求@{u}
使用GET_OID_QUIETLY
选项解析的东西,都不会悄悄地失败,这已经在Git 2中得到了纠正。41(2023年第二季度)。参见commit dfbfdc5(2023年3月16日),作者Felipe Contreras (
felipec
)。(由Junio C Hamano --
gitster
--合并于commit 8069aa0,2023年3月28日)object-name
:修复quiet @{u}解析签字人:费利佩·孔特雷拉斯
当前,当上行未配置时,
git
rev-parse--quiet
@``(man){u}`实际上不是安静的:就这么办吧。
在您的案例中,您并不依赖于
@{u}
,但您知道git rev-parse --quiet
并不总是安静的。