【问题标题】:Using git over sshfs is too slow在 sshfs 上使用 git 太慢了
【发布时间】:2016-11-18 06:28:42
【问题描述】:

我在 sshfs 上使用 git(在 Mac OS X 10,5、10.7 下),但它太慢了。

每次我直接登录远程服务器,使用git命令。

我试过这个帖子,http://kerneltrap.org/mailarchive/git/2008/10/23/3768494 但是它不起作用。

有人知道什么好主意吗?

【问题讨论】:

  • 为什么不直接将 repo 克隆到本地机器上?
  • 感谢评论!是的,当然可以克隆到我的本地机器。但是远程服务器的环境非常复杂,很难做到每台本地机器。所以 sshfs 一切都很好,但唯一的 git command 是个问题。
  • 我有类似的问题,但我尝试使用 appletalk(也来自 mac)。但是我有很多奇怪的问题,这个设置...... :(。我也考虑过 rsync 同步......你找到解决问题的方法了吗?如果是这样,我会非常高兴,如果你愿意分享它.
  • 我也有类似的问题,我通过 sshfs 使用的文件系统是连接到数据库的临时服务器,为了在本地运行它,我必须至少在本地运行该数据库,并且可能对 Perl(后端)进行了很多配置,谁知道还有什么... ssh-ing 并在远程机器上运行 git 工作正常,但我想要的是在 Meld 或中以图形方式查看差异输出类似...
  • 我知道您的帖子已经有一段时间了,但是您是否找到了比当前答案中建议的更好的方法?

标签: git sshfs


【解决方案1】:

您可以选择其他文件系统。 SSHFS 主要是一个方便的工具。例如,MacOS 支持 NFS 挂载,而且速度很快。

另一种方法是使用 rsync 或 unison(“双向 rsync”工具)。这些确实可以在远程和本地文件系统之间快速同步。再加上一些用于远程编译/运行的快速 shell 别名,这是一个很好的解决方法。

另一种方法是通过 VNC/X11 远程运行您的开发环境。这使得 IDE 有点慢,但代码不需要同步。

以上方法的混合是创建删除服务器的虚拟机克隆,在本地机器上运行它,并通过 VM 或两者之间的某些本地 NFS 共享文件夹。

您还可以调整 sshfs。有一些调整挂载选项,您也可以关闭加密。它总体上提供了大约 2 倍的加速,所以不要期待奇迹。

与发帖者一样,多年来我一直在寻找解决方案,但未能如愿,我很不高兴地适应了微调的 sshfs、偶尔的 rsyncs 和耐心。

【讨论】:

  • 感谢 user493759 给了我相当有说服力的答案。我从来不知道诸如双向 rsync 工具,以及 sshfs 的加密。我会尝试这两个。
  • 知道为什么 git 这么慢吗?其他一切似乎都很好,但git status 是无法忍受的。
  • Ceasar:因为 git status 会将所有签出的文件与 repo 进行比较以查看是否有更改。那是很多小 IO,这是 sshfs 真正不擅长的,因为它的延迟很高。
  • sshfs的瓶颈可以在sshfs3.7解决
【解决方案2】:

我知道这已经很老了,但我每天都会遇到这个问题。我有一个非常复杂的环境,在本地重新创建几乎是不可能/冗长的。我们到处都有东西,并使用 3rd 方 API、cPanel API 等。

唯一对我有用的解决方案是通过 sshfs 在本地挂载和处理文件,但是当需要 git 时,我打开了一个终端窗口,它只是 ssh 进入的,这对我有用。您是否有理由不能/不想打开终端?否则,这似乎是最快的解决方案,对我来说最可靠。

【讨论】:

  • 我也是这样做的。我在sshfs 挂载点做的唯一事情是pull。我在单独的ssh 会话中完成其余所有操作,以便目标本地 git 运行命令,而不是目标文件系统上的本地主机 git。
  • 不是 OP,但我不这样做的原因是我更喜欢 Emacs 的 magit 模式而不是使用命令行工具来提交补丁。
  • 这个问题现在可以通过sshfs 3.7解决
【解决方案3】:

如果我理解正确,您是通过 sshfs 直接访问 git 存储库。

git 的全部意义在于分发并且能够推/拉,那么为什么不直接将 repo 克隆到本地 fs 呢?请记住,git clone 也可以从文件系统工作,您不需要从“网络”(ssh、http、git 等)存储库克隆。

$ git clone /my_sshfs_mountpoint/repo

你已经准备好摇滚了。完成后请记住git push 支持您的工作。

【讨论】:

  • 正如我上面所说的,可以克隆到我的本地机器上。但是远程服务器的环境非常复杂,很难做到每台本地机器。所以 sshfs 一切都很好,但唯一的 git 命令速度是个问题。谢谢。
  • 如果你可以 sshfs-mount 你也可以运行 git clone - 我不明白问题出在哪里。无论如何,这就是你速度问题的解决方案,所以你必须使用两者之一:克隆或耐心。
  • @kyanny 我仍然认为你在滥用 git。这是一个分布式系统,您坚持“在本地”使用它(使用 sshfs 安装远程 fs,然后在其上运行 git):它不能很好地工作也就不足为奇了。您的编辑出现的时间/地点是另一回事,git 是仅与版本控制有关。如果您想要“即时远程编辑”,则通过 sshfs 进行编辑,然后在远程系统上运行 git(而不是在本地 sshfs 上)。
  • 即使服务器上有 git,您也可能希望在本地机器上运行一个不错的客户端 =]
  • @gerrit 您在服务器上有一个 git 存储库但没有 git 客户端?而且你不能在服务器上安装 git 或在本地克隆 repo?
猜你喜欢
  • 2013-03-23
  • 1970-01-01
  • 2014-12-31
  • 2016-08-31
  • 1970-01-01
  • 2010-12-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多