仅当mercurial中有任何更改时才运行commit

时间:2013-02-06 17:17:54

标签: python bash mercurial fabric

我和一个问这个问题的人有同样的问题:How to git commit nothing without an 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,但我使用的是Merucrial。我不知道如何在Mercurial中做到这一点。

2 个答案:

答案 0 :(得分:2)

因此,当koopajah和Kent在评论中消息时,我可以使用hg statushg diff的输出来查看是否有任何更改。 Fabric允许我使用capture=True标志读取输出。

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

非常简单。

答案 1 :(得分:0)

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

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

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