在SVN工作副本中找到给定SVN URL的文件

2 投票
1 回答
1228 浏览
提问于 2025-04-15 14:30

假设你有一个Subversion(SVN)工作副本的起始点(比如说你当前的工作目录),还有一个目标的SVN网址,我想找到在这个工作副本中与这个SVN网址对应的文件。

比如说,当前目录是:

c:\Subversion\ProjectA\a\b\c\

这个目录对应的SVN网址是:

https://svnserver/svn/ProjectA/trunk/a/b/c/

我想在硬盘上找到一个文件,它的目标SVN网址是:

https://svnserver/svn/ProjectA/trunk/a/x/y/test.txt

在这个例子中,这个网址是:

c:\Subversion\ProjectA\a\x\y\test.txt

首先,SVN的API有没有提供这样的功能?其次,如果没有,有没有什么好的、可靠的方法可以实现这个功能(最好是跨平台的)?

我打算使用Python,正在用pySvn,不过原生的Python SVN绑定也可以考虑。

1 个回答

4

Subversion(简称SVN)并不会直接把网址和本地文件夹的位置联系起来。想要检查网址的最可靠方法,就是在本地文件夹上执行一个递归的'svn info'命令。

这个命令会给你所有文件和文件夹的网址,你可以自己进行匹配。

你可以稍微优化一下这个过程,比如尝试把网址和本地路径对应起来,只查看一些合理的位置,但这样你可能会漏掉通过'svn switch'命令创建的其他位置。

我不太清楚'svn info'在Python绑定中的具体实现,但很可能在某个客户端类中有一个info2()的函数可以使用。

撰写回答