0
我有Sinatra服務,它在命中時執行git pull
來更新本地git回購。由於它是一個寫,我一次只想要一個git pull
發生。如何有效檢測pull
是否已經發生?目前我只是檢查index.lock
文件是否存在於.git
目錄中。在本地Git回覆中處理多個拉動
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'上放置一個互斥鎖。但是,更好的策略是_calnel_ current在後續請求上拉動並重新啓動它,因爲您可能想要獲得最新版本。另外,由於您處理所有事情,您可能需要創建自己的鎖定文件。 – mudasobwa
我很確定git處理自己的鎖定。爲什麼不恰當地處理鎖定錯誤? –