[02:48][root@server:~] ps ax | 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
Run Code Online (Sandbox Code Playgroud)
但这不是:
> svn co svn+ssh://svn-user@<putty-session-name>/test-repo
'No repository found in 'svn+ssh://svn-user@<putty-session-name>/test-repo'
Run Code Online (Sandbox Code Playgroud)
玩耍的几个小时,我发现appearantly如果我使用ssh隧道,我能够得到使用以下我的回购:
> svn co svn+ssh://svn-user@<putty-session-name>/srv/svn/test-repo
Run Code Online (Sandbox Code Playgroud)
...这意味着我应该指定到 repo 的完整物理路径。嗯?
And*_*ovs 13
正如 womble 所说,这确实是 svn 优于 ssh 的“功能”。
我让 svn+ssh 在没有指定存储库的完整路径的情况下工作,因为 svn 服务器有一个 svnserve 包装脚本来代替原始的 svnserve 二进制文件。后来,在 subversion 更新期间,此脚本被原始二进制文件覆盖。
解决方案:
将 svnserve 重命名为 bin
mv /usr/bin/svnserve /usr/bin/svnserve.bin
Run Code Online (Sandbox Code Playgroud)将此脚本保存为 /usr/bin/svnserve:
#!/bin/sh
exec /usr/bin/svnserve.bin -r /srv/svn "$@"
Run Code Online (Sandbox Code Playgroud)更新权限
chmod 755 /usr/bin/svnserve
Run Code Online (Sandbox Code Playgroud)那是因为 SSH 上的 svn ( svn+ssh://
) 只是“本地”访问 subversion 存储库,使用 SSH 作为传输,因此您可以访问整个文件系统。相反,Svnserve 被告知“以 开始你的路径/srv/svn
,所以你不必手动指定它。
归档时间: |
|
查看次数: |
13164 次 |
最近记录: |