Git警告:"禁用位图写入"

时间:2017-08-01 13:41:46

标签: git bitbucket

成功将更改发送到遥控器后,执行git push将返回以下消息。

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: disabling bitmap writing, as some objects are not being packed

通常当垃圾收集器返回警告时,git prune会修复它。这个问题和git gc --aggressive都无法解决此问题并且不会返回任何错误或警告。文件.git/gc.log不存在。

这是一个非常大的repo托管在私人Bitbucket服务器上。

"禁用位图写入是什么,因为某些对象没有被打包"意思是,我们如何解决它? gc.log文件在哪里?

1 个答案:

答案 0 :(得分:3)

gc.log文件想要报告某些内容时,git gc --auto文件会被遗留(任何事情,问题是git gc --auto在后​​台分离并且无处可去报告,除了这个日志文件)。

至于警告本身:位图用于加速对象遍历(即,优化服务器性能)。这仅适用于所有对象实际都在包中的情况,这就是警告的含义。

我不清楚为什么有些物品没有包装好。如果我们不想将此对象放入由同一文件中的函数add_object_entry确定的包中,则该消息来自builtin/pack-objects.c中的want_object_in_pack。这又取决于--local以及是否有.keep个文件维护以前的包。

Git版本2.12.2和2.13.0添加了一个hack来忽略(并删除)陈旧的gc.log文件,因为它们的存在会禁用进一步的git gc --auto操作。如果您的Git是新的,它会在日志到期时删除那些陈旧的文件,默认为24小时(1.day)。请参阅the git config documentation中的gc.logExpire说明。