Svn 如何显示subversion服务器中的存储库列表

Svn 如何显示subversion服务器中的存储库列表,svn,version-control,search,Svn,Version Control,Search,我正在寻找一种搜索整个subversion服务器的方法 我已经有一块拼图要拼了。现在,我需要为每个存储库执行此操作 更新: 我必须从一些unixshell脚本(perl、bash等)访问此列表。您对SVN的访问不就像Web服务一样工作吗?当我访问我的SVN服务器的顶部目录时,我会得到一个页面,它本质上是整个作品的目录。这是一个无序的列表,我可以简单地浏览一下 编辑:以下是我在命令行中的操作方法: wget http://user:password@svn-url/ -O - | grep \&l

我正在寻找一种搜索整个subversion服务器的方法

我已经有一块拼图要拼了。现在,我需要为每个存储库执行此操作

更新:
我必须从一些unixshell脚本(perl、bash等)访问此列表。

您对SVN的访问不就像Web服务一样工作吗?当我访问我的SVN服务器的顶部目录时,我会得到一个页面,它本质上是整个作品的目录。这是一个无序的列表,我可以简单地浏览一下

编辑:以下是我在命令行中的操作方法:

wget http://user:password@svn-url/ -O - | grep \<li\>
wgethttp://user:password@svn url/-O-| grep\
如果您的服务器是Apache,您应该 能够将其配置为查看 包含的存储库列表- 这是最基本的一个,其他更多 存在复杂的接口,但这是 这不是你的目的

在某些版本中,ViewVC是标准安装的一个选项 现在,例如从Collabnet

编辑:尽管我刚才的想法很简单,但它有一种更简单的发送存储库列表的方法

从那时起,您必须:

  • 获取HTML页面
  • 提取列表,然后
  • 为单个存储库搜索处理它
不幸的是,在这种情况下,我想不出更直接的办法

有关于如何从中提取文本的示例,这将是一个很好的选择,因为Python也有SVN的绑定,以执行存储库搜索-如果愿意,您仍然可以直接从Python调用
SVN


如果你不喜欢Python,那么你必须用GNU工具(wget,然后是解析工具或现有软件包——我在这里帮不了什么忙,在这篇文章中给了你更多的细节)。

如果你通过apache和SVNParentPath指令启用svn,您可以向svn位置添加SVNListParentPath On指令,以获取所有存储库的列表

您的apache配置应类似于以下内容:

<Location /svn>
  DAV svn
  SVNParentPath         "/net/svn/repositories"
  # optional auth stuff     

  SVNListParentPath On    #  <--- Add this line to enable listing of all repos
</Location>

DAV svn
SVNParentPath“/net/svn/repositories”
#可选的身份验证内容

#上的SVNListParentPath如果您熟悉Java,您可以使用Subversion服务器进行浏览、搜索和其他操作

之后,您可以打包程序并通过Ant任务或shell脚本调用它


这是一个相当“暴力”的解决方案,但一旦你掌握了SvnKit,你真的可以做很多很酷的事情。

我还想在SVN中列出存储库。我在shell提示符下做了如下操作:

~$ svn list https://www.repo.rr.com/svn/main/team/gaurav

Test/
Test2/
Test3/
Test4/
Test5/
Test6/

有时,您可能希望检查repo更新的时间戳,为了获得这个方便的信息,您可以使用svn-v(verbose)选项,如中所示

svn list -v svn://123.123.123.123/svn/repo/path

在我的公司,他们没有将服务器配置为提供存储库列表,因此
svnlist
适用于特定的存储库,但不能在更高的级别列出所有存储库

但是,他们安装了FishEye,它为您提供了一个列出存储库的GUI


这是一个付费选项,所以不是每个人都可以使用,但功能很好。

我必须从unix中的脚本语言访问它,而不是从网页访问它。如果您通过不同于http的协议访问svn存储库,它的工作方式与web服务不同。svn支持各种其他协议,包括它自己的协议、文件和svn+ssh。如果您使用http,它是一个配置选项,用于(不)显示该服务器上的存储库列表。顺便问一下,您必须经常进行这些搜索,还是偶尔进行?我在考虑网络和服务器负载,如果你必须进行常规查询,也许有更好的方法。只是偶尔,但欢迎任何其他选择。那么就不值得寻找其他方法;-)但我不认为你会逃脱网络内容提取-请参阅下面的链接,以帮助在脚本环境中完成这项工作。+1。。。啊,这比使用viewvc还要容易,我想我以前见过,但在我的帖子里找不到它!:-)正是我想要的。只需将浏览器指向存储库DAV的根目录,就可以得到该列表。我迟来的+1:)那么,为了查看列表,我们必须使用浏览器?有其他命令行吗+1顺便说一句,因为我可以通过布罗斯韦尔看到。。但我仍然想知道是否存在任何命令行:)我认为值得澄清的是,此设置启用了基于浏览器的回购清单。这一点也得到了证实。这看起来确实像OP所要求的——一种获取顶级存储库列表的unix脚本方式。很高兴看到它被接受。
svn帮助列表
输出显示
list(ls):列出存储库中的目录项。
。对我来说,这意味着
list
命令只列出当前存储库中的目录。当我尝试
svn列表时https://your-svn-server/svn
,我得到
svn:E170013:无法连接到URL'处的存储库https://your-svn-server/svn“
。我正在Windows上使用Visual SVN Server 1.9.4和SVN 1.9.4客户端。最后,您的示例看起来像是在
main
存储库中的
gaurav
子目录中列出文件。因此,这个答案似乎并没有提供一种列出所有回购协议的方法。如果我错了,请告诉我。这如何回答问题?