2008-10-31 134 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.