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
含めます.gitignore
。update.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