2008-10-31 135 views
148

有沒有什麼好的軟件可以讓我通過SVN代碼段搜索代碼片段?我找到了'FishEye',但費用是1,200,遠遠超出我的預算。SVN存儲庫搜索

+6

你需要通過回購的歷史進行搜索嗎?或者只是頭部? – swilliams 2008-10-31 17:32:49

+4

有魚眼的免費版本 - www.atlassian.com/starter – 2011-02-23 13:44:35

+1

@DavidFreitas沒有自由選擇現在 – bahrep 2013-10-07 08:49:23

回答

1

很多SVN回購站都是「簡單」的HTTP站點,因此您可以考慮查看一些現成的「網絡爬行」搜索應用程序,您可以指向SVN根目錄,它會爲您提供基本功能。更新它可能會有一些竅門,也許一些hackery中的SVN檢查可能會癢癢的索引丟棄或重新索引更改。

只想大聲。

+1

這可能不是一個好主意,因爲涉及的開銷很大。另外,SVN服務器通常不是常規的網頁,而是通過webdav暴露的svn repo。 – torkildr 2010-10-29 13:58:37

1

theres krugle and koders but both are expensive。兩者都有Eclipse的插件。

+2

Krugle Basic怎麼樣? – 2010-02-10 13:04:12

4

我喜歡TRAC - 這個插件可能是你的任務有所幫助:http://trac-hacks.org/wiki/RepoSearchPlugin

+0

這看起來有點有前途......但不是太容易安裝,無法確認它是否與Trac + VisualSVN Server一起使用。 – 2008-10-31 19:38:12

2

如果你真的絕望了,做好回購轉儲(看「svnadmin的轉儲」 )然後grep通過它。這並不漂亮,但您可以查看搜索結果,找到指示文件和修訂的元數據,然後查看它以獲得更好的外觀。

不是一個好的解決方案,當然,但它是免費的:) SVN不提供搜索過去簽入(甚至是過去的日誌文件,AFAIK)的功能。

3

痛苦的緩慢(和粗暴執行)而是使用svn日誌和svn貓組合的作品,如果你正在尋找的單個文件或小型倉庫的歷史:

svn log filetosearch | 
    grep '^r' | 
    cut -f1 -d' ' | 
    xargs -i bash -c "echo '{}'; svn cat filetosearch -'{}'" 

將輸出每個修訂數,其中文件改變文件。您總是可以將每個修訂記錄到不同的文件中,然後grep進行更改。

PS。大量upvotes任何人告訴我如何正確地做到這一點!

57

如果你只爲文件名,使用搜索:

svn list -R file:///subversion/repository | grep filename 

的Windows:

svn list -R file:///subversion/repository | findstr filename 

否則結帳並做文件系統搜索:

egrep -r _code_ . 
8
  1. 創建git-svn該存儲庫的鏡像。
  2. 搜索添加或刪除字符串中的git:git log -S'my line of code'gitk

優點相同的是,你可以做很多本地查找,無需加載服務器和網絡連接。

4

只需要注意一下,FishEye(和很多其他Atlassian產品)都有10美元的入門版本,在FishEye的情況下,它爲您提供了5個存儲庫和多達10個提交者的訪問權限。 錢在這種情況下去慈善機構。

www.atlassian.com/starter

0

//編輯:工具已經在另一個答案中提到,所以給予Kuryaki所有學分。

剛剛發現SupoSE這是一個基於java的命令行工具,它掃描存儲庫以創建索引,之後能夠回答某些類型的查詢。我們仍在評估該工具,但看起來很有希望。值得一提的是,它提供了所有版本的完整索引,包括源代碼文件和常用辦公格式。

6

這個例子管倉庫的全部內容寫入一個文件,然後可以快速在編輯器中搜索文件名:

svn list -R svn://svn > filelist.txt 

這是有用的,如果存儲庫是相對靜態的,你想做的事快速搜索,無需重複加載SVN服務器上的所有內容。

11

Subversion 1.8, you can use --search option with svn log command開始。請注意,命令未在倉庫內進行全文搜索,它只考慮了以下數據:

  • 修訂的作者(svn:author版本化的屬性),
  • 日期(svn:date版本化的屬性),
  • 日誌消息文本(svn:log版本控制的屬性),改變路徑的
  • 列表(即受特定版本的路徑)。

這裏是幫助頁面瞭解這些新的搜索選項:

If the --search option is used, log messages are displayed only if the 
provided search pattern matches any of the author, date, log message 
text (unless --quiet is used), or, if the --verbose option is also 
provided, a changed path. 
The search pattern may include "glob syntax" wildcards: 
    ?  matches any single character 
    *  matches a sequence of arbitrary characters 
    [abc] matches any of the characters listed inside the brackets 
If multiple --search options are provided, a log message is shown if 
it matches any of the provided search patterns. If the --search-and 
option is used, that option's argument is combined with the pattern 
from the previous --search or --search-and option, and a log message 
is shown only if it matches the combined search pattern. 
If --limit is used in combination with --search, --limit restricts the 
number of log messages searched, rather than restricting the output 
to a particular number of matching log messages.