2011-08-30 62 views
22

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

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

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

有谁知道任何好点子?

+3

为什么不直接将repo克隆到本地机器? –

+1

感谢评论!是的,当然可以克隆到我的本地机器。但远程服务器有非常复杂的环境,这真的很难让每一个本地机器。所以sshfs是一切正常,但唯一'git命令'是一个问题。 – banyan

+0

我有类似的问题,但我试图用的AppleTalk(也可从MAC)。但我已经很多奇怪的问题,与此设置... :(。我也想过rsync的同步......你有没有发现你的问题的解决方案?如果是的话,我会很乐意,如果你想分享。 – aurora

回答

1

如果我正确地理解它,你直接通过sshfs访问git仓库。

git的全部内容都是分布式的,并且能够推/拉,所以为什么不把这个回购克隆到本地fs呢?请记住,git clone也可以从文件系统中运行,您不需要从“联网”(ssh,http,git等)存储库进行克隆。

$ git clone /my_sshfs_mountpoint/repo 

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

+0

正如我上面所说的,可以克隆到我的本地机器。但是远程服务器的环境非常复杂,而且每台本地机器都很难实现。所以sshfs是一切正常,但唯一的git命令速度是一个问题。谢谢。 – banyan

+0

如果你可以通过sshfs-mount你也可以运行git clone - 我无法理解问题出在哪里。无论如何,这是速度问题的解决方案,因此您必须使用以下两种方法之一:克隆或耐心。 – Luke404

+0

@kyanny我仍然认为你在滥用git。这是一个分布式系统,你坚持要“在本地”使用它(用sshfs挂载远程fs,然后在其上运行git):这并不奇怪,它不能很好地工作。当你编辑出现的地方是另一个故事时,git是只与版本控制有关。如果你想要“即时远程编辑”,那么在sshfs上编辑,然后在远程系统上运行git(而不是在本地的sshfs上)。 – Luke404

19

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

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

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

上述混合是使删除服务器的虚拟机克隆,在本机上运行它,并分享通过VM或两者之间一些地方的NFS文件夹。

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

与海报一样,我一直在寻找解决方案,但未能这样做,我不情愿地使用微调的sshfs解决问题,偶尔还有rsyncs和耐心。

+0

感谢user493759给了我相当有说服力的答案。我从来不知道如双向rsync工具和sshfs的加密。我会尝试这两个。 – banyan

+2

任何想法特别是为什么git是如此之慢?其他一切似乎都很好,但'git status'是无法忍受的。 –

+6

Ceasar:因为git状态会将所有签出的文件与回购库进行比较,以查看是否有更改。这是很多小IO,这是sshfs由于高延迟而非常糟糕的原因。 –

7

我知道这是很老,但我每天都遇到这个问题。我有一个非常复杂的环境,几乎不可能在本地重新创建。我们拥有的东西无处不在,并与第三方的API的cPanel的API等工作

的作品对我来说是安装并在文件上SSHFS本地工作,但是当它的时间与git我有一个终端窗口打开,这只是唯一的解决办法ssh'd进来,这对我有用。你有没有理由不想打开终端?否则,这似乎是最快的解决方案,对我来说最可靠。

+0

这也是我如何做到的。我在'sshfs'挂载点上做的唯一事情就是'pull'。所有剩下的工作都在单独的'ssh'会话中完成,以便目标本地git运行命令,而不是目标文件系统上的本地主机git。 – Gauthier