git commit
を実行するファブリックスクリプトを作成しようとしています。しかし、コミットするものがなければ、gitはステータスが1
で終了します。 deployスクリプトはそれを失敗として受け取り、終了します。私は実際に失敗を検出したいので、ファブリックにブランケットにgit commit
の失敗を無視するだけでは不十分です。空のコミットの失敗を無視して、デプロイを継続できるようにするにはどうしたらよいですか? git commit
manページからgitを使ってエラーなしで何もコミットする方法はありますか?
def commit():
local("git add -p && git commit")
'git diff'は" porcelain "コマンドであり、スクリプトには使用しないでください。あなたが最も望むのは、 'git diff-index --quiet HEAD || git commit -m 'bla''。 [この回答](http://stackoverflow.com/a/2659808/659002)も参照してください。 – Holger
さらに詳しく説明すると、 'git diff --quiet --exit-code --cached'の問題は、コミットのためにステージングされていない変更されたファイルに対してのみ' 1'(false)と評価されることです)。投票されたコメントは、新しいファイルと削除を考慮に入れる最良のソリューションです。 –
'git diff-index --quiet HEAD ||に関するコメントgit commit -m 'bla''はこの質問の答えになるはずです。 –