在SVN工作副本中找到给定SVN URL的文件
假设你有一个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()的函数可以使用。