1

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

例如,具有 URL 的 reposvn+ssh://server/my-repo可能实际上存在于 at 的文件系统server/srv/repos/some-random-string

当 Subversion 客户端访问svn+ssh://server/my-repo时,它只是通过 ssh 在远程服务器上运行一个命令——这个命令是svnserve --tunnel(或类似的东西)。客户端和服务器上的 svnserve 进程使用它们自己的协议进行通信,并且存储库的名称嵌入在协议中——在这种情况下,存储库的名称是my-repo. svnserve然后my-repo在当前目录中查找并提供它。

问题在于my-repo前端名称后端路径不同,在本例中为/srv/repos/some-random-string. 通过强制 ssh 运行来查找/srv/repos而不是当前目录很容易svnserve --root=/srv/repos --tunnel,但映射my-reposome-random-string似乎需要在客户端和服务器之间的通信中进行重写。

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

4

0 回答 0