mercurial - Mercurial : How to walk through changsets incrementally?

标签 mercurial tortoisehg

我是 Mercurial 新手。我有一个功能以前可以用,但现在不行了。我想逐步恢复更改,直到达到有效的修订版为止。我不太确定最好的方法是什么。

我尝试将存储库克隆到旧版本,发现它可以在那里工作。那么...我现在如何更新后续更改?在克隆的存储库中,defaulttip 版本是我将其克隆到的版本。

我需要应用补丁吗?搁置变更?我不太确定。

最佳答案

您应该使用bisect command快速找出您的功能何时停止工作。其工作原理如下:

首先重置二等分状态并将当前工作目录父版本标记为错误:

hg bisect --reset
hg bisect --bad

现在猜测一下您认为该功能何时有效。如果您认为 6 月 1 日有效,那么您可以这样做

hg update -d '<Jun 1'

update command是您用来更新工作目录以匹配给定变更集的内容。请参阅hg help dates获取日期格式列表。您现在应该测试此版本,如果该功能在这里有效,那么您将其标记为良好:

hg bisect --good

如果该功能在此变更集中不起作用,则将其标记为不良并进一步更新到过去:

hg bisect --bad
hg update -d '<May 1'

重复此操作,直到找到好的修订版本。当您找到好的修订版时,Mercurial 可以开始帮助您:好变更集和坏变更集之间的变更集必须包含错误。 Mercurial 将帮助您跟踪候选变更集列表,并帮助您将列表范围缩小到单个变更集。它通过将您更新到大致位于候选者中间的变更集并要求您测试此变更集来实现此目的。

测试后,您将变更集标记为好或坏。如果您将其标记为好,那么您就知道该错误位于更远的将来,如果您将其标记为坏,则该错误位于更远的过去。无论哪种情况,您都会在每一步中剔除大约一半的候选人!这意味着您只需 10 个步骤即可测试 1024 个候选者 - 这就是对数的力量 :-) Mercurial 将跟踪候选者并在每次测试后将您更新到新位置。

完整的 session 可能如下所示(我只是在这里随机地说好/坏):

% hg bisect --reset
% hg bisect --bad
% hg update -r -100
61 files updated, 0 files merged, 9 files removed, 0 files unresolved
% hg bisect --good
Testing changeset 11414:0fa4474bdc2f (99 changesets remaining, ~6 tests)
46 files updated, 0 files merged, 0 files removed, 0 files unresolved
% hg bisect --good
Testing changeset 11439:778377be3662 (50 changesets remaining, ~5 tests)
17 files updated, 0 files merged, 0 files removed, 0 files unresolved
% hg bisect --bad
Testing changeset 11428:4d03c3680400 (25 changesets remaining, ~4 tests)
6 files updated, 0 files merged, 0 files removed, 0 files unresolved
% hg bisect --bad
Testing changeset 11420:a99ef3711890 (13 changesets remaining, ~3 tests)
3 files updated, 0 files merged, 0 files removed, 0 files unresolved
% hg bisect --bad
Testing changeset 11417:6f1d1ed3e19a (6 changesets remaining, ~2 tests)
4 files updated, 0 files merged, 0 files removed, 0 files unresolved
% hg bisect --good
Testing changeset 11418:67bb9d78f05e (3 changesets remaining, ~1 tests)
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
% hg bisect --bad
The first bad revision is:
changeset:   11418:67bb9d78f05e
user:        Matt Mackall 
date:        Mon Jun 21 13:25:42 2010 -0500
summary:     merge: sort arguments to stabilize the ancestor search

关于mercurial - Mercurial : How to walk through changsets incrementally?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3155491/

相关文章:

Mercurial 仓库 : ignore all folders which contain their own repo?

mercurial - TortoiseHG 更新远程存储库

svn - 如何显示子存储库更新的进度?

mercurial - 如何从Bitbucket Merurial存储库中删除远程提交

mercurial - 使用 WinMerge 作为 TortoiseHG merge 工具

mercurial - 如何查找修改函数引用的所有变更集?

Mercurial - 内部异常 :local merge-patterns?

mercurial - 使 mercurial 子存​​储库表现得像 subversion 外部

linux - 如何在 mercurial TortoiseHg 中从命令行启动工作副本和最后一次提交文件的视觉差异

mercurial 因名为 ---.config 的文件而失败 - 有什么办法解决这个问题吗?