svn + ssh:重写存储库名称

时间:2013-10-07 22:20:51

标签: svn

我正在实施一个托管Subversion存储库的服务。我需要每个存储库都有一个前端名称,即服务的使用者将使用的名称,以及后端路径,这是存储库实际存在于服务器文件系统中的位置。名称到路径的映射存储在数据库中。通过ssh访问存储库。

例如,网址为svn+ssh://server/my-repo的repo实际上可能位于server /srv/repos/some-random-string的文件系统上。

当Subversion客户端访问svn+ssh://server/my-repo时,它只是通过ssh在远程服务器上运行一个命令 - 这个命令是svnserve --tunnel(或者沿着那些行)。服务器上的客户端和svnserve进程使用their own protocol进行通信,并且存储库的名称嵌入在协议中 - 在这种情况下,存储库的名称为my-reposvnserve然后在当前目录中查找my-repo并提供服务。

问题是my-repo前端名称,它与后端路径不同,后者在这种情况下是{{1 }}。通过强制ssh运行/srv/repos/some-random-string可以很容易地查看/srv/repos而不是当前目录,但是将svnserve --root=/srv/repos --tunnel映射到my-repo似乎需要在客户端之间的通信中进行重写和服务器。

这是我的问题:是否可以使用libsvn来解析这些通信并进行适当的重写?关于从哪里开始的任何指示?

0 个答案:

没有答案