提高在 NFS 上使用 git 的性能

3

我的公司有一个分布式系统,其中远程的CentOS机器分配工作人员的主目录,所有我们的git仓库都在上面工作、构建和执行。

在我的本地机器(Ubuntu)上,我将远程主目录通过NFS挂载,以便使用我喜欢的IDE编辑文件。

为了管理版本控制,我想在本地机器上使用GitKraken(没有SSH隧道),但速度非常慢。如果我使用命令行从连接到远程机器上的SSH执行git,性能通常很好。如果我在本地执行相同的操作,速度会变慢,但仍然可用。我猜测GitKraken在后台执行更多的操作,导致延迟累积。

有没有办法提高性能或更好地满足这些要求?能够在本地使用GitKraken和vsc。

我已经尝试过几件事情,比如:使用systemd挂载、sshfs、使用git gc清理仓库,在本地机器上刷新git索引(因为我读到它可能会影响在CentOS vs Debian中的创建)、改进NFS选项和缓存等等...

PS:我有一个疯狂的想法来提高Git的性能。我在本地机器上创建了一个Git别名,首先通过SSH连接到远程机器:

alias git='ssh -A <user>@<host> "cd ${PWD} && git"'

这相对于在NFS挂载的存储库上使用Git显著提高了性能。

虽然我知道可能有其他方法通过Git配置代理进一步提高性能,而且这种方法也有其不便之处,但在我的情况下是可以接受的。然而,我的主要兴趣是使用GitKraken。

由于GitKraken使用自己的Git实现(libgit2),它不依赖于裸机上安装的Git。在这方面,我的手是被绑住了。


在NFS上使用git存储库传统上会导致许多小问题(以及一些大问题)。虽然现代NFS设置可以解决其中许多问题,但仍可能存在一些问题。如果git存储库是远程的,也许一种方法是完全远程工作(例如使用VScode远程连接,在此连接中,大部分IDE在您的远程计算机上运行,只有前端在本地运行)。 - Joachim Sauer
1个回答

3
理想情况下,您应该只在远程CentOS机器上存储仓库。
这样,您可以:
  • 在本地克隆它们
  • 在本地工作(通过CLI或GitKraken添加/提交/推送)
  • 推回
因此,您的大部分日常操作都将是本地操作。

不能这样做,远程机器上的存储库正在运行。这种方式可以减少本地资源的消耗,并使我们轻松地远程工作。当我在本地更改代码时,我可以看到远程运行的网站中的更改。 - Ray
这是一个运行在远程机器上的开发环境。每次想要查看结果都需要提交和推送代码修改,这对我来说并不适合。 - Ray
@Ray 基本思路是:为了避免任何性能问题,重新在本地创建开发环境,使用本地 Git 存储库,然后推送到远程生产服务器。 - VonC
不,这就是这种工作方式的关键。每个库和依赖项都只安装在远程机器上,本地机器是干净的,甚至可以拥有我们想要的操作系统。你提出的方案只是将远程机器视为部署层。 - Ray
1
@Ray,确切地说:考虑到您的开发需要访问性能糟糕的服务器,最好在本地复制该开发环境,使用虚拟机或Docker容器(这样可以保持操作系统干净),而不是尝试优化网络连接。 - VonC
显示剩余2条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接