如何解决如何从Process.ExitCode检查git pull是否成功
我正在使用git pull
呼叫ProcessInfo
我正在检查ExitCode
中是否有所有成功的命令。
因此,如果ExitCode
为0,则如果没有错误,则命令成功运行。
一切正常,尝试执行git pull
并且存储库已更新时,会出现问题。
在那种情况下,git认为它是失败的,因此返回ExitCode=1
,但对我而言,这是成功的,只是没有什么可拉的。
有什么方法可以检查pull命令的成功吗?
我想到一种方法,如果我可以某种方式运行命令以检查是否有任何要拉的东西,如果该命令返回true,那么我将进行拉动,否则不会
此帖子提供了检查是否有任何东西要拉的选项 Check if pull needed in Git
如果有直接方法可以单独处理拉动,或者在拉动前我应该检查什么,有人可以帮忙吗?
解决方法
请勿在脚本中使用git pull
。
Git通常将其命令分为管道命令(意在脚本中使用)和瓷器命令(意在脚本中使用)。由人类经营。管道命令以可预测的方式运行,并具有可靠的退出代码,并且在适当时产生或具有产生机器可读输出的选项。瓷器命令没有。某些命令,例如git status
可以以任何一种方式进行操作:git status --porcelain=v2
以“管道方式”运行git status
。 1 瓷器命令通常也服从特定用户配置控件,因此不能保证运行同一命令的两个不同用户具有相同的行为。
git pull
命令严格来说是瓷器,而不是管道。
此处要使用的基础管道命令为git fetch
。运行git fetch
(可能还有其他选项)后,您可以分析其输出,该输出相当可靠,或者使用git rev-parse
(另一个管道命令)查看各种引用的新值。
如果您的脚本确实需要调用git merge
或git rebase
,则可以在这一点上执行此操作,但是请注意,这些命令是瓷器,可以“停在中间”(通过合并)用户必须解决的冲突)。但是至少解码这些情况下发生的事情要简单得多,因为git merge
和git rebase
的确具有可靠的退出状态。
1 总是让我感到困惑的是,为什么将此选项拼写为--porcelain
而不是--plumbing
。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。