2011-08-30 61 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