Skip to main content
 首页 » 编程设计

python之在 SVN 工作副本中查找具有给定 SVN URL 的文件

2024年08月12日22soundcode

给定 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() 函数。