原文链接:http://www.360doc.com/content/17/0825/10/1411057_681969650.shtml
SvnQuery 可以用来搜索Subversion版本资源库中的文件信息,就像Google可以帮您搜索网络上的页面信息。它会全文本搜索版本资源库中的内容和元数据,如文件名、路径、提交者和SVN的属性信息。
工作原理:
SvnQuery维护版本资源库的一个全文本索引(基于Lucene实现),这个索引可以用来快速查询。这个索引需要针对存在的版本资源库创建一次, 当版本资源库变更时,索引需要更新,这个更新通常由一个后提交钩子来触发。索引操作运作在后台分离的一个进程中,因此用户在提交后不会注意到任何延迟。另外,如果没有权限操作资源库,还可以选择调度更新,例如一天一次。在访问远程无法使用钩子的版本资源库时,这种方法很有用。在Window平台上,使用“任务计划程序”来运行调度任务。
SvnQuery的前端是一个ASP.NET web应用,和大多数搜索引擎类似。执行个查询,瞬间你就能看到查询得到的结果。你不仅仅可以搜索最新修订版本的信息,你还可以同时搜索任何修订版本或修订版本区间的信息。SvnFind是另外一个前端查询工具,运行在window平台上,可以直接用来查询创建的索引-不需要依赖Web服务器。核心库SvnQuery.dll实现了简单但强大的查询语言,特别适合查询代码版本资源库,希望其他应用、插件、工具能使用这个库文件。
2. 如何下载SVNQuery?
SVNQuery的官方站点是http://svnquery.tigris.org/,目前的最新版本为SvnQuery Version 1.2.2.0,下载地址为http://svnquery.tigris.org/SvnQuery_1.2.2.0.zip。
解压后的目录结构如下:
- ├─SvnFind
- │ │ SvnFind.exe
- │ │ ……
- ├─SvnIndex
- │ │ SvnIndex.exe
- │ │ ……
- └─SvnWebQuery
- ├─bin
- ├─scripts
- └─styles
因为是基于asp.net开发的,他只能运行在window平台上,并且需要在平台上安装.NET Framework 3.5.
SvnQuery 主要包括如下部分:
- SvnIndex, 命令行工具,用来创建和更新全文本搜索索引
- SvnWebQuery, ASP.NET Web应用,用来查询搜索索引
- SvnFind, Window富客户端工具,用来查询搜索索引
- SvnQuery.dll, 编程库文件,可以编程来访问创建的索引文件
- RunDetached, 命令行工具,用来避免subversion等待钩子命令的完成
命令行工具SvnIndex用来维护subversion版本资源库的全文本索引,它包括两个子命令,分别用来创建、更新索引。
svnindex create <Index> <Repository> [Options]
上述命令在指定的索引位置Index为位于Repository的版本资源库创建索引,会覆盖Index位置的内容. -r过滤器选项用来指定索引到的修订版本号,如果-r选项忽略,默认为最新版本。取决你的版本资源库的大小,索引操作可能需要很长的一段时间,尽量少索引一些修订版本,确认基本的索引流程OK,然后更新索引到最新版本。 -f过滤器选项用来排除索引匹配指
定的正则表达式的内容。例如,你或许需要排除tags文件夹下的内容,因为这个文件夹一般是些trunk或branches的备份。
svnindex update <Index> <Repository> [Options]
上述命令在指定的索引位置Index为位于Repository的版本资源库更新索引。Index 是在本地文件系统上的文件夹路径 ,Repository 是本地文件系统上的版本资源库的文件夹路径或 通过http、svn协议进行访问的有效url。
使用 SvnIndex的例子
在我们的例子中,版本资源库位于 e:\Repository, 创建的索引文件位于e:\RepositoryIndex . 版本资源库由svnserve启动,位于server服务器上。
- 复制SvnIndex文件夹到你的版本资源库的hooks文件夹。
- 使用下述命令创建初始的索引文件,取决于你的版本资源库的大小,可能需要花费些时间。
svnindex create e:\RepositoryIndex e:\Repository -x svn://server -n “Source Repository” -f “(/tags/)|(/branches/)” - 在hooks文件夹下创建post-commit.cmd 文件
- 粘贴下述内容到post-commit.cmd 文件:
%~dp0SvnIndex\RunDetached %~dp0SvnIndex\svnindex.exe update e:\RepositoryIndex e:\Repository -f “(/tags/)|(/branches/)” - 完成!
更多的使用 SvnIndex的例子
命令:c:\SvnQuery_1.2.2.0\SvnIndex>SvnIndex.exe create c:\myIndex http://192.168.1.130/demo1/ -u ken -p ken
其中 c:\myIndex是本地创建的索引文件夹, http://192.168.1.130/demo1/ 是远程版本资源库访问地址,-u、-p指定用户名和密码。
----------------------------------------------------------------------------------------
1.svnfind.exe
效果
http://localhost/svnwebquery