说字符串“abc123”首次出现在修订版12中,当前版本是200.我怎么知道字符串“abc123”首次出现在修订版12中?另外,我如何获得verision 12的哈希?
答案 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
后一版本将打印完整哈希,前者将为您提供缩写哈希。