2

我和一个问这个问题的人有同样的问题:How to git commit nothing without a error? 基本上我需要运行 hg commit,只有当我的存储库中有任何更改时。我正在使用fabric 来运行提交,所以如果没有更改,它将输出一个令人讨厌的错误。

local() encountered an error (return code 1) while executing 'hg commit...'

这是上述线程的答案:

git add -A
git diff --quiet --exit-code --cached || git commit -m 'bla'

它适用于 git,但我使用 Merucial。我不知道如何在 Mercurial 中做到这一点。

4

2 回答 2

2

因此,正如 koopajah 和 Kent 在评论中所建议的那样,我可以使用hg statusor的输出hg diff来查看是否有任何更改。Fabric 允许我用capture=True标志读取输出。

if local('hg status', capture=True):
    local('hg commit')

很简单。

于 2013-02-07T10:56:24.120 回答
0

从您在问题中链接到的页面上的 Tyler Eaves 的回答(并且不知道 Fabric),您可以执行以下操作:

with hide('warnings'):
  with settings(warn_only=True):
    run('hg commit -q ...')

提交(如果有)将是安静的,因此如果没有提交文件,则不会报告。它也不会报告是否有文件提交,这可能不是你想要的:)

于 2013-02-06T17:42:34.513 回答