【发布时间】:2012-09-11 16:51:48
【问题描述】:
似乎 git 拒绝在我的远程存储库上自动执行 gc 命令。在大约一个月内,由于 .pack 文件,存储库扩大到大约 6GB。我认为这是变量 gc.auto 的问题 - 如何在远程存储库上设置此变量,或者如何在该存储库上手动运行 git-gc 命令?
【问题讨论】:
似乎 git 拒绝在我的远程存储库上自动执行 gc 命令。在大约一个月内,由于 .pack 文件,存储库扩大到大约 6GB。我认为这是变量 gc.auto 的问题 - 如何在远程存储库上设置此变量,或者如何在该存储库上手动运行 git-gc 命令?
【问题讨论】:
注意:如果你的 repo 只有一个包文件,git gc 应该不在git config gc.autoPackLimit 1 上重新打包。然而它确实做到了。
也就是说,它一直持续到 Git 2.10(2016 年第三季度)。
参见 Eric Wong (ele828) 的 commit 5f4e3bf(2016 年 6 月 25 日)。
(由 Junio C Hamano -- gitster -- 合并于 commit 97865e8,2016 年 7 月 13 日)
gc:用gc.autoPackLimit修复一个错误
这与文档相匹配,并允许 gc.autoPackLimit=1 维护单个包,而无需在每次“git gc --auto”调用时尝试重新打包。
"
gc.autoPackLimit" 设置为 1 时不应在只有一包时触发重新打包,但代码计数不佳并这样做了。
【讨论】:
您必须在托管远程存储库的框中登录,然后只需键入
git gc
在命令行上。
关于gc.auto:docs说:
gc.auto
当存储库中的松散对象大约超过这么多时, git gc --auto 将打包它们。一些 Porcelain 命令不时使用此命令执行轻量级垃圾收集。默认值为 6700。将此设置为 0 将禁用它。
但是,您说的是.pack 文件。似乎还有另一种选择:
gc.autopacklimit
当存储库中有多个没有用 *.keep 文件标记的包时, git gc --auto 将它们合并到一个更大的包中。默认值为 50。将此设置为 0 将禁用它。
请注意,gc.autopacklimit 适用于包装数量,而不是包装尺寸。也许您可以使用这些来调整 gc 行为...
【讨论】: