使用 bisect 命令查找错误

bisect 命令可帮助你跟踪引入错误的变更集。

  • 重置 bisect 状态并将当前版本标记为错误(它包含错误!)

     hg bisect --reset
     hg bisect --bad
    
  • 回到你认为错误不存在的地步

     hg update -r -200
    
  • 现在你要测试软件,如果你的假设是正确的(错误不存在),请将修订标记为良好:

     hg bisect --good
    

    测试变更集 800:12ab34cd56ef(剩余 x 更改集,~y 测试)

  • Mercurial 更新当前版本(介于坏的和好的变更集之间的中间位置)

  • 再次测试软件并适当标记当前版本。例如

     hg bisect --good
    

    测试变更集 900:21ba43dc65fe(x 更改集剩余,~y 测试)

  • 继续,直到 Mercurial 将搜索范围缩小到单个变更集:

     hg bisect --bad
    

    第一个糟糕的修订是:

    变更集:987:1234bad99889

    用户:John Doe ____@gmail.com

    日期:2016 年 7 月 28 日 16:00:00

hg bisect 命令使用其对项目修订历史的了解,按时间与要检查的变更集数量的对数进行搜索,并且在处理分支,合并或多个头时没有问题。

有时你会知道有罪的文件,你可以给 Mercurial 一个提示:

hg bisect --skip "!( file('path:foo') & file('path:bar') )"

这会跳过所有不接触目录 foobar 的修订版。