Git对Samba共享的提交速度非常慢。我该怎么做才能加快速度?

时间:2012-08-23 16:07:10

标签: git windows-7 samba

我正在远程服务器上运行git存储库。我在远程服务器上设置了一个samba共享,这样我就可以将代码保存在我的本地Windows 7机器上。我们正在尝试使用git,因为svn非常缓慢且不可靠。我们使用git的问题是,对samba共享执行任何提交/克隆/拉动都会超级慢。如果我在我的Windows 7机器上提交/克隆/拉到本地目录上它工作得很好,但我们需要代码在远程服务器上。有任何想法吗?我真的可以用它。

编辑:

我还应该提一下,我已经运行了git gc --aggressive并且它还没有加速。

4 个答案:

答案 0 :(得分:3)

Git并不适用于此配置。 这就像获得一级方程式赛车并让它在一条土路上比赛。

Git是DVCS或分布式版本控制。换句话说,每个开发人员都会获得克隆。

您需要做的是在该samba机器上设置git服务器存储库并通过http或ssh访问repo

您可以使用GitBlit之类的项目 甚至是Github

上更好的帐户

答案 1 :(得分:3)

我在使用Git的SMB性能方面遇到了同样的问题。遗憾的是,我无法在本地计算机上运行开发代码,因此我使用SMB来安装远程目录并使用本地计算机上的正确文本编辑器编辑源文件。

由于我在提交存储库时想要一些安慰,我更喜欢在我的本地机器上运行的GUI客户端。鉴于上述性能问题,这有点棘手,并且需要花费很多时间。

但是:我发现了一个简洁的小解决方法。在将任何内容提交到存储库之前,我使用rsync将远程源的副本提取到本地硬盘驱动器,如下所示:

rsync -az --progress --exclude ".git" dev@my.devserver.com:/home/myapp/sourcecode /Devel/portal-mirror

这样,在进行差异和提交之前,完成远程状态的完整1对1同步(将其绑定到我的Git应用程序中的键盘快捷键)需要不到一秒的时间。奇迹般有效。提交并推送到存储库后,我只需在开发服务器上执行git reset --hardgit pull即可同步更改。

答案 2 :(得分:2)

我们使用git和samba与php-storm一起运行相同的配置。它运行得很好。只有当我尝试在我们庞大的项目中使用“SourceTree”时才需要刷新时间,因为(我认为)git会扫描每个文件。

我试过的一件事,我从中获得了一些小的性能改进,就是调整samba服务器的一点点:

配置文件:

socket options = TCP_NODELAY IPTOS_LOWDELAY SO_RCVBUF=65536 SO_SNDBUF=65536

在寻找samba加速时找到该行。

另一个解决方案可能是一个1对1的常量同步,它一直在后台运行,替换samba。也许rsync可以稍微修改一下。

答案 3 :(得分:0)

您可能会考虑稍微颠倒范例并让Web服务器在开发人员的计算机上安装共享。这样,所有克隆/提交/编码都在本地完成,但每个开发人员的站点都只是托管在共享之外。

现在我假设您的网络服务器将每个网站的根目录公开为samba共享。然后,开发人员将该共享安装在他或她的本地计算机上,克隆一些存储库,然后处理共享。在这种情况下,性能最好很差,并且您也可能遇到字节范围锁定请求(BRL)等问题。

相反,一个选项是直接克隆到每个开发人员的计算机上的目录,并共享该目录。然后,Web服务器将安装该共享。

当然,理想情况下,每个开发人员都会运行他或她自己的Web服务器实例,但如果我正确地阅读了这些问题,那么在这种情况下这可能不是一个选项。