私は、次の処理を行い、シェルスクリプト記述しようとしています:すべての変更は、プルするためのgitで変更をチェックし、変更されたファイルをループするシェルスクリプト?
- をチェックし、リモートの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文が変更されているかどうかをチェックするか、常にそうでないかを調べるif文です。私は他のgitコマンドでif文を試しましたが、それらも常に真です。 gitは、通常のシェルコマンドのように0または1の応答を得ることはできないようです。 if文で適切な応答を返すために、このようなgitコマンドや他のgitコマンドをどのように取得できますか?
- どのようにして、変更されたファイルを配列に表示してforを使用してループすることができるように、コマンドからの変数出力を割り当てることができますか?
私のスクリプトのコマンドがこの場合実際にはうまくいかない場合は、これを行うより良い方法は何ですか?
編集:変更されたファイルをループするときにはっきりしている必要があります。ファイルをループする前に、リモートのリポジトリから変更をプルする必要があります。
ハイマーク。お返事をありがとうございます。私はあなたのスクリプトを実行しようとしましたが、次のエラーが表示されます:予期しないトークン '<" 'done <"(git status --porcelain)の近くで構文エラーが発生しました。任意のアイデアを正しい構文は何でしょうか? – startupsmith
あなたは確かにbashを使用していますか? –
こんにちは。あなたは正しく、私はbashを使用していない...それは今動作します。私はこれをさらに調べる必要がありますが、私はこのスクリプトがリモートのリポジトリから引き出される前に、変更されたファイルをループすることがわかります。 – startupsmith