Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby 并发git克隆和获取_Ruby_Git_Unix_Concurrency - Fatal编程技术网

Ruby 并发git克隆和获取

Ruby 并发git克隆和获取,ruby,git,unix,concurrency,Ruby,Git,Unix,Concurrency,我在同一台机器上运行了10个进程,可以在同一台git repo上随时运行git克隆和git获取 显然,这是一个问题,因为git clone将引发“目录已经存在,git fetch将按照预期的ref为abcdfg,但在后续请求中为hijklm的方式引发一些问题。通常,这些请求会在同一时间发生,所以检查文件夹是否存在是不起作用的,因为Git可以在创建它的中间。 我的问题是:是否有一种方法可以检查Git当前是否正在克隆或获取某些内容?然后,我可以编写程序,等待现有的获取完成,直到继续 如果有帮助的话,

我在同一台机器上运行了10个进程,可以在同一台git repo上随时运行
git克隆
git获取

显然,这是一个问题,因为
git clone
将引发“
目录已经存在
,git fetch将按照
预期的ref为abcdfg,但在后续请求中为hijklm
的方式引发一些问题。通常,这些请求会在同一时间发生,所以检查文件夹是否存在是不起作用的,因为Git可以在创建它的中间。 我的问题是:是否有一种方法可以检查Git当前是否正在克隆或获取某些内容?然后,我可以编写程序,等待现有的获取完成,直到继续

如果有帮助的话,我正在运行Ubuntu12LTS,我的进程是用Ruby编码的,尽管这并不重要


让我知道您的想法。

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

您的进程应该由某种类型的“主进程”管理,该“主进程”将工作委托给不同的进程。通过这种方法,您可以实现某种形式的互斥来防止这种情况。