mercurial - 第一个修订版出现了一个字符串

时间:2016-03-19 11:55:19

标签: mercurial

说字符串“abc123”首次出现在修订版12中,当前版本是200.我怎么知道字符串“abc123”首次出现在修订版12中?另外,我如何获得verision 12的哈希?

1 个答案:

答案 0 :(得分:2)

你应该可以使用

hg grep abc123 -r 0:tip

搜索修订版以便出现字符串abc123出现的第一个修订版。请记住,对于历史悠久的大型存储库来说,这可能是一个非常缓慢的过程,因为每个版本都必须是单独检查。

要加快此类存储库的过程,您可以使用hg bisect。 E.g:

hg bisect -r            # reset bisect if needed
hg bisect -g 0
hg bisect -b tip
hg bisect -c '! hg grep -r . abc123'

请注意,将包含字符串的修订版标记为“bad”,将不包含该字符串的修订版标记为“good”似乎违反直觉,因为bisect通常用于搜索包含错误的第一个修订版本。因此,“坏”修订是包含字符串的修订。

另请注意,如果修订范围不包含您要查找的字符串,则bisect可能无效。

最后,某些shell可能不支持取消shell退出代码的!运算符。在这些情况下,请使用

hg bisect -c 'if hg grep -r . abc123; then false; else true; fi'

代替。

要获得(例如)修订版12的哈希值,请使用:

hg id -i -r 12

或:

hg id --debug -i -r 12

后一版本将打印完整哈希,前者将为您提供缩写哈希。