git:一个快速的网络界面,用于巨大的回购

时间:2013-05-20 19:55:10

标签: git freebsd bsd gitweb cgit

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

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

如何估算几个这样庞大的存储库的Web界面的最佳资源量(例如内存和CPU约束)? 责备日志操作随机文件的响应时间是多少?

2 个答案:

答案 0 :(得分:1)

感谢git对象商店模型,git存储库大小对于gitweb和类似工具来说并不是一个问题(顺便说一句,500MB repo大小相当小 - Linux内核现在接近1GB,Android框架/基础是几千兆字节)。

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

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

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

答案 1 :(得分:0)

(2017年6月更新,4年后更新)
实际上,这些回购很小 Microsoft Windows代码库是巨大的 repo:350万个文件,大小超过270 GB 并且Git管理得很好......添加GVFS (Git Virtual File System),宣布last February 2017:解决了Git scaling issues的大部分问题(推送,分支,历史和文件过多)。

命令保持相当快(来源:" The largest Git repo on the planet")

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

  

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

使用" Beyond GVFS: more details on optimizing Git for large repositories"

本机Git尚未提供此功能,但Microsoft团队正在努力将补丁带入上游。