Git 克隆大型存储库会占用大量内存

Git 克隆大型存储库会占用大量内存

提供一个相当大的存储库(裸 .git 为 9.5Gb),每次有人需要克隆它时,它都会在“压缩对象”阶段消耗大量内存(和时间)。

有没有办法优化存储库文件,以便尽可能快地存储数据以供传输?我想避免每次请求克隆时都重新做这项工作。

我正在使用 gitlab 作为中央服务器,但从另一台机器直接通过 ssh 克隆也会发生这种情况。

答案1

想想你想如何管理这么大的存储库。你需要保留所有这些历史记录吗?你有处理大文件的计划吗?分成多个存储库是否有意义?

通过 Housekeeping 运行 gc以防有无法到达的物体。

打包大型对象可能会占用大量内存,乘以线程数。

Gitaly 未设置 core.bigFilesThreshold,因此在 GitLab 上可能很难调整。尝试在其他 repo 副本上将其设置得更低,例如 1M。大文件上没有增量会增加磁盘空间,但会减少内存使用。

GitLab 支持 LFS 扩展。实现这一目标的项目将是一项艰巨的任务:需要一些对象存储、让用户配置使用它,以及重写历史记录以删除现在在其他地方的大文件。

或者不要做太多改变:配置大量内存,并预计克隆需要几分钟。

相关内容