実行中に更新されました

実行中に更新されました

Gitリポジトリにbashスクリプトがあります。git pull内部スクリプトを使用して更新します。しかし、時々スクリプト自体を変更すると、実行中に変更されたため、スクリプト全体がクラッシュすることがあります。このファイルを更新したいのですが、実行中は更新できません。

どうすればいいですか?

答え1

一般的な方法

この種の問題を解決する一般的な方法の1つは、2つのバージョンのスクリプト(実行用とリポジトリに保存用)を使用することです。 Webからスクリプトをダウンロードしても、すべてのバージョン管理システムで機能します。

たとえば、次のことができますupdate.sh.in(ストレージに追加)。

#!/bin/bash
git pull
if [ update.sh.in -nt update.sh ]; then cp update.sh.in update.sh; fi

# actual work of the script
# any line here can be changed in the next version of the script

ファイルを手動でコピーしてにupdate.sh含めます.gitignoreupdate.sh

ここで重要なのは、最初の3行を変更しないでください。.sh.inコピーが.shスクリプトの同じ場所に残っている限り、問題なく実行されます。

この.in拡張は、テンプレートファイルから実際のスクリプトまたはソースコードを生成するさまざまなツールの伝統的な拡張です。

子フック

一般的ですが、あまり一般的ではないもう1つの方法はgit Hooksを使用することです。これはGIT関連の方法です。別のスクリプトを作成して.git/hooksディレクトリに配置できます。 Gitはさまざまな実行ポイントでこれらのスクリプトを呼び出します。

それ以上に何をすべきかを指定していませんgit pull。しかし、おそらくあなたはあなたの特別な仕事をまたは.git/hooks/pre-rebaseに入れることができます.git/hook/post-merge。自動的に呼び出されますgit pull

フルフックのリストについては、ここを読んでください。https://git-scm.com/docs/githooks

関連情報