1

一些 git 存储库的大小非常大:DragonFly BSD.git目录为 324MB,FreeBSD 的打包大小超过 0.5GB,未打包大小超过 2GB。

Gitweb、cgit 或任何其他网络工具是否对这些巨大的存储库进行任何类型的预缓存?

一个人如何估计几个如此庞大的存储库的网络接口的最佳资源量(例如内存和 CPU 限制)?随机文件的责备日志操作的响应时间是多少?

4

2 回答 2

1

由于 git 对象存储模型,git 存储库大小对于 gitweb 和类似工具来说并不是真正的问题(顺便说一句,500MB 存储库大小相当小 - Linux 内核现在接近 1GB,Android 框架/基础只有几 GB)。

这是因为 gitweb 不需要拉整个存储库来显示树 - 它总是可以只查看几个对象:提交对象来显示提交,树对象来显示目录,以及 blob 对象来显示文件。

唯一可能减慢 gitweb 速度的操作是显示单个文件的历史记录,但这并不经常发生,即使这样 git 也能很好地应对这种情况而没有太多麻烦。

就 gitweb 速度而言,您可以进行的最佳优化是在 .gitweb 下运行 gitweb(这是 Perl 脚本)mod_perl,这样 Perl 解释器只加载到内存中一次。仅此一项就可以让 gitweb 飞起来,而且 git 操作几乎不会引起注意。

于 2013-05-21T09:57:55.110 回答
1

(2017 年 6 月更新,4 年后)
实际上,这些存储库很小。
Microsoft Windows 代码库是一个巨大的存储库:350 万个文件,大小超过 270 GB。
Git 管理得很好……加上2017 年 2 月宣布的GVFS(Git 虚拟文件系统):这解决了大多数Git 扩展问题(太多的推送、分支、历史和文件)。

并且命令仍然相当快(来源:“地球上最大的 Git 存储库”)

https://msdnshared.blob.core.windows.net/media/2017/05/Performance.png

就上下文而言,如果我们用“vanilla Git”尝试这个,在我们开始工作之前,许多命令将需要 30 分钟到几个小时,而有些命令永远不会完成。

通过“超越 GVFS:有关为大型存储库优化 Git 的更多详细信息”查看更多信息

这在本机 Git 中尚不可用,但微软团队正在努力将补丁带到上游。

于 2017-06-06T22:08:40.147 回答