Subversion 搜索整个存储库的所有修订版的文本



标题说明了一切,我得到了一个字符串,例如"Foo",我想搜索我的整个存储库文件内容,以及自该字符串开始以来对其所做的所有修订(差异)。所以基本上我想知道这个字符串"Foo"是否曾经是我的源代码的一部分。

我注意到有一些黑客解决方案可以搜索 Subversion 所有修订版,一次一个文件,但这对我来说并不能真正做到这一点。

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

历史搜索|数据挖掘中的SVN核心相当弱,但我可以推荐至少2个纯SVN解决方案

  • svnrevgrep(Python,有一些局限性,在评论中提到)
  • svngrep (Bash+Perl+grep,不是Windows友好的)

并被Eli提到的"国外SCM"方法

如果您使用的是 Mercurial 或 Git,那么您很幸运,因为两者都提供了内置方法来执行此操作。

因为安装 Mercurial(在 SVN 之后的 Mercurial 和

一般的 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 中编辑(同一修订版中的 - 和 + 操作)

最新更新