2014-02-26 59 views
2

我有10个进程在同一台机器上运行,随时可以在同一个git仓库上运行git clonegit fetch并发git克隆和提取

显然,这是一个问题,因为git clone将引发“directory already exist和git获取将提高沿expected ref to be abcdfg but was hijklm在后续请求线的东西。通常,这些请求将发生在完全相同的时间,因此检查,如果该文件夹存在荣获” t工作,因为git可以在创建它的中间

我的问题是:有没有一种方法可以检查Git目前是克隆还是正在获取某些东西?然后我可以编写我的程序来等待现有的取得完成,直到继续前进

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

让我知道你在想什么。

+1

您的流程应该由某种“主”管理,该流程将工作委托给不同的流程。采用这种方法,您可以实施某种形式的互斥锁来防止这种情况。 –

回答

0

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