为什么GitHub比自托管存储库快得多?

为什么GitHub比自托管存储库快得多?,git,performance,github,Git,Performance,Github,由于git是一个分布式版本控制系统,我想自己托管我的主存储库。在尝试不同解决方案的过程中,我在一台相当坚固的服务器(16GiB RAM、SSD、四核Xenon)上使用了和 在继续之前,我克隆了(~900MIB大小,400k提交)存储库,并将其推送到gogs和GitHTTP后端 gogs花了24个多小时处理推送请求。在gogs中浏览提交的存储库每次单击需要几秒钟的时间。之后,我尝试了一个简单的Apache2+GitHTTP后端设置。推送仍在运行,持续3个多小时 因此,我问你:GitHub做了什么来

由于git是一个分布式版本控制系统,我想自己托管我的主存储库。在尝试不同解决方案的过程中,我在一台相当坚固的服务器(16GiB RAM、SSD、四核Xenon)上使用了和

在继续之前,我克隆了(~900MIB大小,400k提交)存储库,并将其推送到gogs和GitHTTP后端

gogs花了24个多小时处理推送请求。在gogs中浏览提交的存储库每次单击需要几秒钟的时间。之后,我尝试了一个简单的Apache2+GitHTTP后端设置。推送仍在运行,持续3个多小时


因此,我问你:GitHub做了什么来加快速度?我认为推送和浏览存储库在git中应该是几乎没有选择的?

我投票结束这个问题,因为它要求我们推测专有云服务的内部工作。为了给出答案,你错过了最重要的信息:你花了多长时间推送~900 MiB回购到github?也就是说,GitHub上以前不存在的一个。因为虽然Git是分布式的,但它并不是跨不同托管服务的边界分布的。也就是说,首次推送到gogs或您自己的服务器都需要传输完整的存储库。@SSChuber如果您是对的,我将尝试这样做。当然,我在GitHub上进行了回购,但现在我想起来了,我不能这么做。GitHub必须不知道存储库,否则它可能会做一些肤浅的工作copy@ooxi为了节省服务器端磁盘空间,GitHub为fork所做的就是“浅拷贝”。fork只存储与上游的差异(加上一些元数据)。因为这项工作需要进行性能优化: