原文鏈接: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