SVN存储库搜索

时间:2008-10-31 17:00:23

标签: svn search code-search-engine

是否有任何好的软件可以让我通过我的SVN资源库搜索代码片段?我找到了'FishEye',但成本是1,200,远远超出我的预算。

14 个答案:

答案 0 :(得分:64)

如果您只搜索文件名,请使用:

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

视窗:

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

否则结帐并进行文件系统搜索:

egrep -r _code_ .

答案 1 :(得分:37)

sourceforge.net/projects/svn-search

还有一个直接来自SVN家庭的Windows应用程序,名为SvnQuery,http://svnquery.tigris.org

答案 2 :(得分: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.

答案 3 :(得分:10)

答案 4 :(得分:9)

  1. 创建该存储库的git-svn镜像。
  2. 在git中搜索添加或删除的字符串:git log -S'my line of code'gitk
  3. 中的字符串

    优点是您可以在本地进行多次搜索,而无需加载服务器和网络连接。

答案 5 :(得分:8)

此示例将存储库的完整内容传送到文件,然后您可以在编辑器中快速搜索文件名:

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

如果存储库是相对静态的,并且您想要快速搜索而不必重复加载SVN服务器中的所有内容,这将非常有用。

答案 6 :(得分:4)

我喜欢TRAC - 这个插件可能对您的任务有帮助:http://trac-hacks.org/wiki/RepoSearchPlugin

答案 7 :(得分:4)

只需注意,FishEye(以及许多其他Atlassian产品)都有10美元的简化版,在FishEye的情况下,它为您提供了5个存储库,并可访问最多10个提交者。 在这种情况下,钱会捐给慈善机构。

  

www.atlassian.com/starter

答案 8 :(得分:3)

痛苦地缓慢(并且粗略地实现)但是如果您正在搜索单个文件或小型存储库的历史记录,则svn log和svn cat的组合可以正常工作:

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

将输出文件更改的每个修订号和文件。您可以随时将每个修订版本放入另一个文件中,然后再进行更改。

PS。向任何向我展示如何正确执行此操作的人进行大量投票!

答案 9 :(得分:2)

如果你真的很绝望,可以转储回购(看看“svnadmin dump”),然后通过它进行grep。它并不漂亮,但您可以查看搜索结果以找到指示文件和修订版的元数据,然后查看它以获得更好的外观。

确定不是一个好的解决方案,但它是免费的:) SVN没有提供搜索过去签到(甚至过去的日志文件,AFAIK)的功能。

答案 10 :(得分:1)

很多SVN repos都是“简单”的HTTP站点,因此您可以考虑查看一些现成的“网络爬行”搜索应用程序,您可以指向SVN根目录,它将为您提供基本功能。更新它可能是一个小技巧,也许一些SVN检查hackery可以痒痒索引丢弃或重新索引更改。

大声思考。

答案 11 :(得分:1)

theres krugle和koders但两者都很贵。两者都有eclipse的ide插件。

答案 12 :(得分:1)

我开始使用此工具

http://www.supose.org/wiki/supose

它只是缺少可视化UI,但运行速度快,维护有点

答案 13 :(得分:0)

//编辑:工具已在另一个答案中提及,因此将所有学分归还Kuryaki。

刚刚找到SupoSE这是一个基于java的命令行工具,它扫描存储库以创建索引,然后能够回答某些类型的查询。我们仍在评估该工具,但看起来很有希望。值得一提的是,它为所有修订版提供了完整的索引,包括源代码文件和常见的办公室格式。