2014-02-25 115 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編輯( - 在相同的修訂+動作)