Git - 是否允许并行运行垃圾收集器?

时间:2017-06-26 11:37:22

标签: c git garbage-collection

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

大多数其他git命令没有问题,除非我通过git commit -m "msg"提交。

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

然而,通过git gc &! git commit -m "msg" &同时在终端上执行git commit和git gc似乎在大多数时间都有效,但是几次提交过程退出并退出代码128。

也许这就是问题所在?如何确保垃圾收集器并行成功运行?垃圾收集器是否意味着并行运行?

我发现了这个邮件列表线程,但它似乎没有太多信息:https://dev.eclipse.org/mhonarc/lists/jgit-dev/msg02138.html

1 个答案:

答案 0 :(得分:1)

除非您正在执行很多的git操作,例如git commit --amendgit rebase或创建大量对象,否则经常启动git gc无用。请查看git gc NOTES

  

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

也许不是并行启动git gc,而是应该根据自己的需要进行调整? 配置使用git config gc.*完成,特别是gc.auto