2010-11-26 187 views
11

hg log -k不足,hg grep太慢(cca。100k變更集)時該怎麼辦?我們對Fisheye有很糟糕的經歷(方式太慢),而且Kiln似乎把我們帶入了FogCreek帝國,只是有點太過分了。如何全文索引Mercurial存儲庫?

還有什麼其他選擇可以在存儲庫上提供全文搜索功能?

+0

你在尋找什麼類型的功能?只需搜索提交消息? – 2010-11-26 21:35:45

回答

2

您在尋找全文搜索嗎?如果您想知道添加文本時的修訂更容易,並且您想知道文本存在的更大的所有修訂。

一般而言,hg grep的速度與無需預先構建索引或至少在構建可使用傳統grep的版本化文件的情況下獲得的速度一樣快。

如果你願意預先建立一個greppable文件結構,你可以做這樣的事情:

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

這將每個變更導出到適合使用正常的命令行的grep或索引grepping一個文本使用lucene或類似的。您可以通過changeset鉤子輕鬆保持當前狀態。

只有changset diff可以讓您查找添加或刪除文本的修訂版本,但不會查看其中存在該文本的所有修訂版本的列表。爲此,您可以在每次修訂時預先創建每個文件的副本,但即使易於自動化,這也是一個很大的空間。

如果您正在尋找特定的修訂版本,以確保您熟悉hg bisect,那麼另一種選擇是。

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

儘管這更新您的工作目錄,其hg grep並不:所以,如果你想找到具有字符串CHEESE你可以做類似的第一次修訂它可以自動爲您二進制搜索。