给定 Subversion 工作副本中的起点(例如当前工作目录)和目标 SVN URL,我想在工作副本中找到具有该 SVN URL 的文件。
例如,给定当前目录:
c:\Subversion\ProjectA\a\b\c\
它有这个 SVN URL:
https://svnserver/svn/ProjectA/trunk/a/b/c/
我想用这个目标 SVN URL 在硬盘上找到文件:
https://svnserver/svn/ProjectA/trunk/a/x/y/test.txt
在这个例子中是:
c:\Subversion\ProjectA\a\x\y\test.txt
首先,SVN API是否提供了这样的功能?其次,如果没有,什么是实现它的可靠(跨平台)方法?
Python 是我的目标语言,我使用的是 pySvn,尽管 native Python SVN 绑定(bind)可能是替代方案。
请您参考如下方法:
Subversion 不使用这种从 url 到工作副本位置本身的反向映射。检查 url 使用情况的最稳定方法是对工作副本执行递归“svn 信息”调用。
这会为您提供所有文件和目录的 url,您可以自己进行匹配。
您可以通过尝试将 url 映射到本地路径并只查看合理的位置来稍微优化一下,但您会错过由“svn switch”创建的其他位置。
我不知道“svn 信息”在 python 绑定(bind)中是如何映射的,但很可能在您可以使用的客户端类上有一些 info2() 函数。
