次のことを行うシェルスクリプトを作成しようとしています。
- プルする変更がないかリモート git リポジトリをチェックします。
- リモート git リポジトリに変更がある場合は、それらの変更をプルします。
- 新規または変更されたファイルをループします。
私の研究を通じて、これらのことを行うために必要なコマンドのいくつかを見つけましたが、それらをシェルスクリプトで一緒に動作させることはできませんでした.
これは、私が持っているコマンドのいくつかを含むスクリプトです。
#!/bin/sh
#Check if there are any changed files
git --git-dir="/dir/.git" fetch origin
if git --git-dir="/dir/.git" log HEAD..origin/master --oneline
then
#Output the modified files from the last pull
git --git-dir="/dir/.git" diff --name-status ORIG_HEAD..
fi
このスクリプトのコマンドでうまくいかなかった点は次のとおりです。
- 変更があるかどうかを確認する if ステートメントは常に true であるとは限りません。他の git コマンドで if ステートメントを試してみましたが、それらも常に true です。git は、0 または 1 の応答が得られる通常のシェル コマンドのようには機能しないようです。このような git コマンドや他の git コマンドを取得して、if ステートメントで正しい応答を返すにはどうすればよいですか?
- コマンドからの変数出力を割り当てて、変更されたファイルを配列に表示し、for を使用してそれらをループできるようにするにはどうすればよいですか?
この場合、スクリプトのコマンドが実際に機能しない場合、これを行うためのより良い方法は何ですか?
編集:変更されたファイルをループするときは、申し訳ありませんが、ファイルをループする前にリモートリポジトリから変更をプルする必要があるため、これらのファイルを操作するときに最新の変更が得られるようにする必要があります。