并发git clone和fetch

时间:2014-02-26 16:44:56

标签: ruby git unix concurrency

我有10个进程在同一台机器上运行,任何时候都可以在同一个git repo上运行git clonegit fetch

显然这是一个问题,因为git clone会引发“directory already exist而git fetch会在后续请求中引发expected ref to be abcdfg but was hijklm行。通常这些请求会在确切的情况下发生同时,因此检查文件夹是否存在将无法正常工作,因为git可以在创建它的过程中。

我的问题是:有没有办法可以检查Git目前是克隆还是当前正在抓取某些内容?然后我可以编写我的程序来等待现有的提取完成,直到继续。

我正在运行Ubuntu 12 LTS,如果这有帮助,我的进程是用Ruby编写的,尽管这并不重要。

让我知道你的想法。

1 个答案:

答案 0 :(得分:0)

对于现有的存储库(在fetch期间),当Git运行时,它会将文件写入.git/index.lock。在运行新命令之前,您的进程应该等待清除该文件。