当hg log -k
不足时,该怎么办?hg grep
太慢了(cca.100k变更集)?我们对Fisheye的经历非常糟糕(方式太慢),而且Kiln似乎把我们带入了FogCreek帝国的一点点。
还有哪些其他选项可以在存储库中提供全文搜索功能?
答案 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/