整个团队得到太多无法到达的松散物体'消息

时间:2016-06-09 17:02:55

标签: git garbage-collection gitlab

不久前,我们已经从SVN切换到Git。

几天前,我意识到我们所有的团队在推送时都会收到这些消息:

$ git push
Counting objects: 32, done.
Delta compression using up to 8 threads.
Compressing objects: 100% (19/19), done.
Writing objects: 100% (32/32), 2.94 KiB | 0 bytes/s, done.
Total 32 (delta 14), reused 0 (delta 0)
error: The last gc run reported the following. Please correct the root cause
and remove gc.log.
Automatic cleanup will not be performed until the file is removed.

warning: There are too many unreachable loose objects; run 'git prune' to remove them.

To git@git.ad.xxx.se:root/xxx.git
   15c3bbb..69e6d8b  xxxx -> xxx

我以为它来自我的电脑已有一段时间了,直到我意识到每个人都有同样的问题。

毋庸置疑,我的.git文件夹中没有gc.log,并使用' git gc'或者' git prune'没有效果。

所以我的问题是:服务器上托管的存储库是不是很干净?如果是这样,我该如何清理呢?

到目前为止,我找到的所有解决方案都与存储库的本地副本有关。

另外,我们使用Gitlab来托管我们的回购。

编辑:值得一提的是,自从我发布这个问题后,我也试过了#34; Housecleaning"使用Gitlab的存储库但到目前为止没有结果。

由于

2 个答案:

答案 0 :(得分:19)

接下来是issue 14357(GitLab 8.6或更低)

手动修复:

  • SSH到worker1
  • cd进入gitlab-org / gitlab-ce目录
  • rm gc.log,这只包含了行"警告:有太多无法到达的松散物体;跑' git prune'删除它们。"
  • 跑了git prune并祈祷它没有破坏事情(幸好没有这样做)

但看起来,启动GitLab 8.7,auto gc is disabled 这也是在(still opened) issue 13524

的背景下完成的
  

通常在需要强制推送的rebase,修正或其他操作之后,我们可能会有悬空提交。

     

这样" dereferenced"由于git gc可能在内部执行或使用GitLab内务处理功能,提交会丢失。

     

如果发生了特定提交附加的讨论 - 在取消引用提交被垃圾收集后,它就不可用。

     

提交正在推送事件中记录,并通过添加到合并请求的系统说明提供,目前这会在GitLab中产生错误500.

更新:该问题已于一个月后(2016年7月)以下结束:

  • MR 5062:不要垃圾收集有相关数据库记录的提交,例如评论
  

确保在Git垃圾收集运行时保持提交   Git GC将从存储库中删除不再存在于任何分支或标记中的提交,但我们希望保留其中一些提交,例如,如果它们有注释或CI构建。

  • MR 4101:重构:将现有的基于数组的差异引用转换为DiffRefs模型

答案 1 :(得分:2)

我面临同样的问题,上述解决方案无法解决我的问题。我遇到了同样的问题:

warning: There are too many unreachable loose objects; run 'git prune' to remove them.

我已经参考了此link并运行以下已解决的命令:git gc

例如:/xx/code/home/xx是我的git仓库的原始路径。

(base) laxman@xxxxx:/xx/code/home/xx$ git gc
Counting objects: 251571, done.
Delta compression using up to 12 threads.
Compressing objects: 100% (78004/78004), done.
Writing objects: 100% (251571/251571), done.
Total 251571 (delta 141562), reused 245636 (delta 137343)

希望它也适用于其他人。