[02:48][root@server:~] ps 斧头 | grep svn 23986 ? Ss 0:00 /usr/bin/svnserve -d -r /srv/svn 正如你从参数中看到的,我的 svn 根目录是 /srv/svn。
现在,来自远程机器的一些魔法......
这有效:
> svn co svn://[email protected]/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 二进制文件。后来,在颠覆更新期间,这个脚本被原始二进制文件覆盖。
解决方案:
将 svnserve 重命名为 bin
将此脚本另存为 /usr/bin/svnserve:
更新权限
这是因为 svn over SSH (
svn+ssh://
) 只是“本地”访问 subversion 存储库,使用 SSH 作为传输,因此您可以访问整个文件系统。相比之下,Svnserve 被告知“以 开始您的路径/srv/svn
,因此您不必手动指定它。您可以通过编辑 subversion 用户的 ~/.ssh/authorized_keys 来编辑使用 svn+ssh 的用户的 ssh 登录命令。用户的行将如下所示:
svn书里还有更多svn+ssh的技巧
这本身更像是一个问题,但它确实与这个问题有关。
使用私钥/公钥设置 svn+ssh 后,我无法以这种方式使用相对路径访问我的仓库:
因为我收到此错误:
但只是这样:
这是我在 /home/svn/.ssh 目录中的 authorized_keys2 文件
以及 Andrejs 在上一个答案中建议的 svnserve.bin 文件
我什至考虑过权限问题,这里列出:
实在想不出解决办法...