[英]Handle multiple pulls in Local Git Repo
我有Sinatra服务,通过在被点击时执行git pull
来更新本地git repo。 既然是写操作,所以我一次只希望发生一次git pull
。 如何有效检测是否已发生pull
? 目前,我只是检查.git
目录中是否存在index.lock
文件。
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
index.lock
可能是您唯一需要担心的文件。 由于您使用互斥锁来同步操作,因此此代码应该没问题。
Git仅在需要唯一控制index
一段时间(并防止其他Git进程破坏内容)时才真正创建index.lock
文件。 这只会在拉动完成时发生。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.