2

私はこの質問をしている男と同じ問題を抱えています: How to git commit nothing without an error? 基本的に、リポジトリに変更がある場合にのみ、hg commit を実行する必要があります。ファブリックを使用してコミットを実行しているため、変更がない場合は厄介なエラーが出力されます。

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 でそれを行う方法がわかりません。

4

2 に答える 2

2

koopajah と Kent がコメントで提案したように、 or の出力を使用して変更があるかどうhg statushg diffを確認できます。Fabric では、capture=Trueフラグを付けて出力を読み取ることができます。

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

かなり簡単です。

于 2013-02-07T10:56:24.120 に答える
0

質問でリンクしたページのTylerEavesの回答から(Fabricを知らずに)、次のことを実行できますか?

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

コミットがある場合は静かになるため、コミットされたファイルがない場合は報告されません。コミットされたファイルがあるかどうかも報告されませんが、これはあなたが望むものではないかもしれませ:)

于 2013-02-06T17:42:34.513 に答える