如何对Mercurial存储库进行全文索引?

时间:2010-11-26 15:14:05

标签: mercurial kiln atlassian-fisheye

hg log -k不足时,该怎么办?hg grep太慢了(cca.100k变更集)?我们对Fisheye的经历非常糟糕(方式太慢),而且Kiln似乎把我们带入了FogCreek帝国的一点点。

还有哪些其他选项可以在存储库中提供全文搜索功能?

2 个答案:

答案 0 :(得分:2)

您在全文搜索中寻找什么?如果您想要在添加文本时知道修订版本更容易,并且您想知道存在更大文本的所有修订版本。

一般来说,hg grep的速度与没有预先构建索引的速度一样快,或者至少可以使用传统的grep来预先构建版本化的文件。

如果您愿意预先构建一个可嵌入的文件结构,您可以执行以下操作:

hg export -o 'changeset-%r-%h.patch --rev 0:tip

这将使用普通命令行grep或使用lucene或类似的索引将每个变更集导出到适合grepping的文本文件。您可以使用changeset挂钩轻松保持当前状态。

仅使用changset diffs可以查找添加或删除文本的修订,但不能查找存在该文本的所有修订的列表。为此,您可以在每个修订版本中预先创建每个文件的副本,但即使它很容易实现自动化,也会占用大量空间。

如果您正在寻找发生某些事情的特定修订版,则另一个选择是确保您熟悉hg bisect。它会自动为您进行二进制搜索,因此如果您想查找具有字符串CHEESE的第一个修订版,您可以执行以下操作:

hg bisect --command "grep -s CHEESE" # might need to reverse the exit code of grep -s

虽然更新了hg grep没有的工作目录。

答案 1 :(得分:2)

你看过RhodeCode吗? - http://demo.rhodecode.org/