0
ヒットしたときにgit pull
を実行してローカルのgit repoを更新するSinatraサービスがあります。それは書き込みなので、一度に1つだけgit pull
が発生します。 pull
がすでに発生しているかどうかを効果的に検出するにはどうすればよいですか?現在、.git
ディレクトリにindex.lock
ファイルが存在するかどうかを確認しています。Local Git Repoで複数のプルを処理する
if @file_obj.exists? "#{@data_dir}/.git/index.lock"
@log.info('********* LOCKED **********')
else
MUTEX.synchronize do
@log.info('********* Inside Sync **********')
@executor.run(git_pull_command, in: @data_dir)
end
end
'@ executor.run'にミューテックスを入れてください。しかし、より良い戦略は、最新のバージョンで終了する可能性があるので、現在の要求を引き続き再起動することです。また、すべてを処理するので、独自のロックファイルを作成することもできます。 – mudasobwa
gitが独自のロックを処理していることは確かです。なぜ単にロックエラーを正常に処理しないのですか? –