Ssh

svn 和 svn+ssh 的顛覆路徑差異

  • August 25, 2010

$$ 02:48 $$$$ root@server:~ $$ps斧頭| grep svn 23986 ? Ss 0:00 /usr/bin/svnserve -d -r /srv/svn 正如你從參數中看到的,我的 svn 根目錄是 /srv/svn。

現在,來自遠端機器的一些魔法……

這有效:

> svn co svn://svn-user@domain.com/test-repo

但這不是:

> svn co svn+ssh://svn-user@<putty-session-name>/test-repo
'No repository found in 'svn+ssh://svn-user@<putty-session-name>/test-repo'

玩了幾個小時,我發現如果我使用ssh隧道,我可以使用以下方法獲取我的 repo:

> svn co svn+ssh://svn-user@<putty-session-name>/srv/svn/test-repo

…這意味著我應該指定回購的完整物理路徑。嗯?

正如 womble 所說,這確實是 svn over ssh 的“功能”。

我在沒有指定儲存庫的完整路徑的情況下讓 svn+ssh 工作,因為 svn 伺服器有一個 svnserve 包裝腳本來代替原始的 svnserve 二進製文件。後來,在顛覆更新期間,這個腳本被原始二進製文件覆蓋。

解決方案:

  1. 將 svnserve 重命名為 bin
mv /usr/bin/svnserve /usr/bin/svnserve.bin
  1. 將此腳本另存為 /usr/bin/svnserve:
#!/bin/sh
exec /usr/bin/svnserve.bin -r /srv/svn "$@"
  1. 更新權限
chmod 755 /usr/bin/svnserve

引用自:https://serverfault.com/questions/58190