Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/25.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
C Git-允许垃圾收集器并行运行吗?_C_Git_Garbage Collection - Fatal编程技术网

C Git-允许垃圾收集器并行运行吗?

C Git-允许垃圾收集器并行运行吗?,c,git,garbage-collection,C,Git,Garbage Collection,我有一个线程C程序,它在主应用程序旁边的pthread中通过popen启动git gc。主线程启动其他git命令 除了通过git commit-m“msg”提交之外,大多数其他git命令都没有问题 由于某种原因,当它正在提交,然后另一个线程尝试并行运行垃圾收集器时,应用程序崩溃 但是,通过git-gc&在终端上同时执行git提交和git-gc&!git commit-m“msg”和似乎大部分时间都能工作,但有几次提交过程会退出,退出代码为128 也许这就是问题所在?如何确保垃圾收集器并行成功运行

我有一个线程C程序,它在主应用程序旁边的pthread中通过
popen
启动
git gc
。主线程启动其他git命令

除了通过
git commit-m“msg”
提交之外,大多数其他git命令都没有问题

由于某种原因,当它正在提交,然后另一个线程尝试并行运行垃圾收集器时,应用程序崩溃

但是,通过
git-gc&在终端上同时执行git提交和git-gc&!git commit-m“msg”和
似乎大部分时间都能工作,但有几次提交过程会退出,退出代码为128

也许这就是问题所在?如何确保垃圾收集器并行成功运行?垃圾收集器应该并行运行吗


我也发现了这个邮件列表线程,但它似乎信息量不大:

除非你做了很多git操作,比如
git提交--amend
git rebase
或创建了很多对象,否则经常启动
git gc
是没有用的。请看一下:

另一方面,当
git gc
与另一个进程同时运行时,存在删除另一个进程正在使用但尚未创建引用的对象的风险。这可能只会导致其他进程失败,或者如果其他进程稍后添加对已删除对象的引用,则可能会损坏存储库

也许你不应该同时启动
git gc
,而应该根据自己的需要调整它?
配置是用来完成的,特别是
gc.auto

为什么要运行
git-gc
?@code向导因为我需要优化repo以便其他命令更快,我每30分钟运行一次。我不知道git的多线程功能,但是如果它只是gc命令,为什么不使用?gc的独占锁,所有其他操作的共享锁?我真的不知道与此有什么关系。另外请注意,如果在后台自动运行
git gc
,则应将其作为
git gc--auto
运行。这将设置通常的14天(或以其他方式配置)宽限期,以避免上述问题。