我和一个问这个问题的人有同样的问题: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中做到这一点。
答案 0 :(得分:2)
因此,当koopajah和Kent在评论中消息时,我可以使用hg status
或hg 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 ...')
提交(如果有)将保持安静,因此如果没有提交文件,则不会报告。它不会报告是文件是否已提交,这可能不是您想要的:)