12

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

编辑:

我还应该提到我已经运行了 git gc --aggressive 并且它没有加快速度。

4

4 回答 4

3

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

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

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

您可以使用GitBlit 之类的项目 ,甚至可以使用Github上的帐户

于 2012-08-23T16:09:27.757 回答
3

我对 Git 在 SMB 共享上的性能也有同样的问题。不幸的是,我无法在本地机器上运行开发代码,因此我使用 SMB 挂载远程目录并在本地机器上使用适当的文本编辑器编辑源文件。

因为在提交到存储库时我想要一些舒适,所以我更喜欢在我的本地机器上运行的 GUI 客户端。但是,对于提到的性能问题,这有点棘手,并且需要很多时间。

然而:我找到了一个时髦的小解决方法。在向存储库提交任何内容之前,我使用 将远程源的副本拉到本地硬盘驱动器rsync,如下所示:

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

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

于 2013-07-11T15:47:24.570 回答
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 进行一些修改来这样做。

于 2014-01-22T09:32:51.410 回答
0

您可能会考虑稍微颠倒一下范式,让 Web 服务器在开发人员的机器上挂载共享。这样,所有的克隆/提交/编码都在本地完成,但每个开发人员的站点都只是托管在共享中。

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

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

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

于 2017-09-26T16:22:12.570 回答