我是新来的汞。我有一个正在运行的功能,但现在不行。我想逐步还原更改,直到找到可以工作的修订版。我不太确定最好的方法是什么。
我尝试将 repo 克隆到旧版本,并看到它在那里工作。那么......我现在如何更新到后续更改?在克隆的 repo 中,default
andtip
修订版是我将其克隆到的版本。
我需要打补丁吗?搁置变化?我不太确定。
我是新来的汞。我有一个正在运行的功能,但现在不行。我想逐步还原更改,直到找到可以工作的修订版。我不太确定最好的方法是什么。
我尝试将 repo 克隆到旧版本,并看到它在那里工作。那么......我现在如何更新到后续更改?在克隆的 repo 中,default
andtip
修订版是我将其克隆到的版本。
我需要打补丁吗?搁置变化?我不太确定。
您应该使用该bisect
命令快速确定您的功能何时停止工作。它的工作原理如下:
您首先重置 bisect 状态并将当前工作目录的父版本标记为错误:
hg bisect --reset
hg bisect --bad
现在猜测一下您认为该功能何时起作用。如果您认为它在 6 月 1 日有效,那么您可以这样做
hg update -d '<Jun 1'
该update
命令用于更新工作目录以匹配给定的变更集。请参阅hg help dates
日期格式列表。您现在应该测试此版本,如果该功能在这里有效,那么您将其标记为良好:
hg bisect --good
如果该功能在此变更集中不起作用,则将其标记为错误并更新到过去:
hg bisect --bad
hg update -d '<May 1'
重复此操作,直到找到一个好的修订。当您找到一个好的修订版时,Mercurial 可以开始帮助您:好的和坏的变更集之间的变更集必须包含错误。Mercurial 将通过跟踪候选变更集列表来帮助您,并帮助您将列表缩小到单个变更集。它通过将您大致更新到候选人中间的变更集并要求您测试此变更集来做到这一点。
测试后,您将变更集标记为好或坏。如果您将其标记为好,那么您知道该错误位于更远的将来,如果您将其标记为坏,那么该错误位于更远的过去。无论哪种情况,您都会在每一步中删除大约一半的候选人!这意味着您只需要 10 个步骤即可测试 1024 位候选人——这就是对数的力量 :-) Mercurial 将跟踪候选人并在每次测试后将您更新到一个新位置。
一个完整的会话可能看起来像这样(我只是在这里随机说好/坏):
% hg bisect --reset % hg 平分 -- 坏 % 汞更新 -r -100 更新 61 个文件,合并 0 个文件,删除 9 个文件,未解决 0 个文件 % 汞平分 -- 好 测试变更集 11414:0fa4474bdc2f(剩余 99 个变更集,约 6 个测试) 46 个文件已更新,0 个文件已合并,0 个文件已删除,0 个文件未解决 % 汞平分 -- 好 测试变更集 11439:778377be3662(剩余 50 个变更集,约 5 个测试) 17 个文件已更新,0 个文件已合并,0 个文件已删除,0 个文件未解决 % hg 平分 -- 坏 测试变更集 11428:4d03c3680400(剩余 25 个变更集,约 4 个测试) 6 个文件已更新,0 个文件已合并,0 个文件已删除,0 个文件未解决 % hg 平分 -- 坏 测试变更集 11420:a99ef3711890(剩余 13 个变更集,约 3 个测试) 3 个文件已更新,0 个文件已合并,0 个文件已删除,0 个文件未解决 % hg 平分 -- 坏 测试变更集 11417:6f1d1ed3e19a(剩余 6 个变更集,约 2 个测试) 4 个文件已更新,0 个文件已合并,0 个文件已删除,0 个文件未解决 % 汞平分 -- 好 测试变更集 11418:67bb9d78f05e(剩余 3 个变更集,约 1 个测试) 1 个文件已更新,0 个文件已合并,0 个文件已删除,0 个文件未解决 % hg 平分 -- 坏 第一个不好的修订是: 变更集:11418:67bb9d78f05e 用户:马特·麦考尔 日期:2010 年 6 月 21 日星期一 13:25:42 -0500 摘要:合并:排序参数以稳定祖先搜索
要准确查找缺少该功能的版本,您可以尝试hg bisect
。你可以在这里找到它。
tip
repo 中的最新版本,default
分支的名称,默认情况下在 repo 中创建它时。您可以通过拉取剩余的变更集(更改)来添加它们。
hg help pull