2014-02-25 40 views
1

标题说,所有, 我有一个字符串,例如“Foo”,并且我想搜索整个存储库文件内容以及自该字符串开始以来所做的所有修订(差异)。 所以基本上我想知道这个字符串“Foo”是否曾经是我的源代码的一部分。颠覆搜索整个仓库的所有修订文本

我注意到,有搜索颠覆所有的版本,每次一个文件的一些哈克的解决方案,但不会真正为我做的。

我也发现了这个http://svnquery.tigris.org/servlets/ProjectProcess?pageID=o0dpdE 这似乎是一个解决方案。任何选择/想法?

+0

“修订版本...对于字符串”是defunition不清楚。可能会出现这个字符串 - 在commit-message,filename | path或里面diff作为*内容的变化*? –

+0

我变得更加清楚一点,我想知道,如果该字符串是永远在我的源代码在过去的一部分,如果是这样的话看到修订(差异),它改变它 –

+0

我想看到整个文件该文本属于源代码。因此,如果“Foo”在2年前的文件Test.java中,我想看到整个“Test.java”文件,因为它是2年前的文件。 –

回答

1

SVN核心的历史搜索|数据挖掘是相当弱的,但我建议至少2纯SVN的解决方案

  • svnrevgrep(Python的,有一定的局限性,在注释中提到的)
  • svngrep(击+ +的Perl的grep,而不是Windows友好)

和礼提到的 “洋供应链管理” 的方法

如果您正在使用水银或Git的,你是幸运的,因为两者都提供这样做的内置方法。

因为安装水银(一般水银SVN后Mercurial是自然的方式,Git的 - 不是)和加入HGSubversion和克隆回购将需要更多的时间只是少量的,但你得到的功率探索并从SVN回购提取数据永远

HG-例如工具(基于现有的甲板上回购)

> hg grep --all load_theme_textdomain *.php 
functions.php:2:-:load_theme_textdomain('fiver', get_template_directory() . '/translation'); 
functions.php:2:+:load_theme_textdomain('fiver', get_template_directory() . '/languages'); 
functions.php:1:+:load_theme_textdomain('fiver', get_template_directory() . '/translation'); 

字符串在变更1中加入(第二“:” - 分隔的字段),并在变更2编辑( - 在相同的修订+动作)