2017-09-11 6 views
0

私は、リリースプロセス(gitリポジトリから中央リリース領域へ)をセットアップするためのオートメーションを書いています。ローカルブランチがリモートと同じでない場合、gitコマンドが非ゼロを返す

スクリプトは作業ディレクトリ(ローカルクローン)とタグを入力として受け入れます。それは、作業ディレクトリにに移動され、引っ張られたり、押されたり、解決されたりするような変更がないことを確認します。タグを作成し、タグをリモートに押します。スクリプトの残りの部分は、リモートから宛先ディレクトリにまっすぐにタグをアーカイブするだけです。

上記の太字のステップを自動化するgitコマンドはありますか? localがリモートと絶対的に同じでない場合、その時点でスクリプトを停止することができるように、ゼロ以外のコードを返すコマンドもあります。

+0

は、多分あなたは、出力を解釈するためにSEDか何かでgitの桜を使用することができますでしょうか? – Basya

+1

私は過去に 'git status --porcelain --branch'を使用しました。現代のgitバージョンでは、 'git status --porcelain = v2 -branch'がより簡単になります。 – rodrigo

+0

ブランチで "git diff"を実行し、出力をunix "wc -l"コマンドにパイプすることができます。 0のカウントは変更がないことを意味し、0以外のカウントはプッシュする変更があることを意味します。 – user376507

答えて

3

正確なコマンドは、設定によって異なる場合があります。今、あなたはを参照するかどうかを知っておく必要がありますが、リモートブランチへのあなたのローカル参照を最新の

git fetch 

であることを確認する必要があり、

まず:私はかなり典型的なセットアップを想定していますリモートブランチはローカルブランチと同じコミットを指しています。 (あなたはを比較できるようにしようとしますが、私はそれをお勧めしません。コミットが同じであればコンテンツは同じです;コミットが異なる場合、コンテンツが同じであってもおそらくまだタグの間違った場所。)

だから、1つの簡単な方法(bashのでは)

test `git rev-parse branch` = `git rev-parse origin/branch` 
+0

パーフェクト!ありがとう! – shikhanshu

関連する問題