Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/mercurial/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mercurial 如何自动执行hg对分--扩展以遵循公共祖先?_Mercurial - Fatal编程技术网

Mercurial 如何自动执行hg对分--扩展以遵循公共祖先?

Mercurial 如何自动执行hg对分--扩展以遵循公共祖先?,mercurial,Mercurial,通常,在hg-bisect-c“我的命令”的末尾,我会收到一张便条,上面说我应该运行hg-bisect--extend来继续我的二等分 我正在使用mercurial 2.1.2。在mercurial 2.1之前,我想说的是使用hg update而不是hg bisect--extend 当罪魁祸首cset有10层深时,它变得非常烦人,因此我必须手动执行此命令10次hg bisect--extend&&hg bisect-c“我的命令” 有没有一种方法可以自动执行--extend部分并携带一个带有对

通常,在
hg-bisect-c“我的命令”的末尾,我会收到一张便条,上面说我应该运行
hg-bisect--extend
来继续我的二等分

我正在使用mercurial 2.1.2。在mercurial 2.1之前,我想说的是使用hg update而不是hg bisect--extend

当罪魁祸首cset有10层深时,它变得非常烦人,因此我必须手动执行此命令10次
hg bisect--extend&&hg bisect-c“我的命令”


有没有一种方法可以自动执行--extend部分并携带一个带有对分的部分,直到找到罪魁祸首cset?

对分不会超出变更集的初始范围。所以,如果您最初将变更集10设置为良好,将变更集20设置为不良,经过几次迭代后,发现cs 12不好,但与cs 5合并,则对分将停止
--extend
用于将范围扩展到初始10-20之外。如果要搜索整个范围,请将cs 0设置为good,将tip设置为bad,并且永远不需要使用extend

考虑以下历史。变更集4引入了一个“bug”

现在,如果我将变更集7标记为好,将tip标记为坏,那么将10标记为第一个坏的变更集,但这是一个合并,并建议将搜索扩展到变更集2(公共祖先):

但是,如果我将变更集0设置为good,将tip设置为bad,则它会在不扩展的情况下找到正确的变更集:

C:\data>hg bisect -g 0
C:\data>hg bisect -b tip
Testing changeset 6:a7cab1800465 (12 changesets remaining, ~3 tests)
0 files updated, 0 files merged, 0 files removed, 0 files unresolved

C:\data>hg bisect -c check.bat
Changeset 6:a7cab1800465: bad
Changeset 3:54349a6276cc: good
Changeset 4:d0a381a67072: bad
The first bad revision is:
changeset:   4:d0a381a67072
summary:     bad1

您不能只运行
hg bisect--extend-c“my command”
而不是当前正在执行的两个命令吗?查看代码表明这是可行的。将--extend与-c结合使用是行不通的。我得到了“中止:不兼容的参数”。此外,我正在寻找一种自动化的方法--每次需要时进行扩展,而不是组合--使用-c.啊进行扩展,这在代码的前面已经被捕获了。我错过了。我希望它进入正常的对分检查对分。。。循环,但根据需要使用extend,直到它到达一个不是合并的变更集。羞耻。以0到tip的范围平分是不可伸缩的。到目前为止,我们的回购协议有130228项承诺。用这个范围平分肯定需要很多天!然而,这给了我一个想法:找到新的“未经测试”CSET的根源,并将其作为对分的起点。可能类似于hg log-r的根(…bad_cset-…good_cset)。下次我需要再次使用二分法时,我会试试这个。大约是17个二分法。它是对数的。2^17=128K。你可以有40亿个变更集,只需要32个二等分。啊,真的!你把我带到这里:)让我再次尝试说服你,它仍然是不可伸缩的:在版本0,损坏的文件甚至还不存在,所以我不能给-c“make TheBadObjectFile.o”。我可以给-c“make”并在每个等分处做一个完整的构建,但这将不仅仅是一分钟或每等分2次,而是每等分1小时*17,然后我们甚至不知道是谁在一天结束时破坏了构建。然后只有256个变更集将需要8小时。不幸的是,您的测试周期需要一个小时,但对于130228个变更集,只有17个小时的时间对于如此长的测试周期来说仍然是相当可伸缩的。如果测试在过去有时失败,您不能期望这样做对吗?(平分可能会发现一些失败期,而不是最近的。)
C:\data>hg bisect -r
C:\data>hg bisect -g 7
C:\data>hg bisect -b tip
Testing changeset 9:68ae20ea0c02 (5 changesets remaining, ~2 tests)
2 files updated, 0 files merged, 0 files removed, 0 files unresolved

C:\data>hg bisect -c check.bat
Changeset 9:68ae20ea0c02: good
Changeset 10:312ba3d6eb29: bad
The first bad revision is:
changeset:   10:312ba3d6eb29
parent:      9:68ae20ea0c02
parent:      6:a7cab1800465
summary:     bad4

Not all ancestors of this changeset have been checked.
Use bisect --extend to continue the bisection from
the common ancestor, 4588e394e325.
C:\data>hg bisect -g 0
C:\data>hg bisect -b tip
Testing changeset 6:a7cab1800465 (12 changesets remaining, ~3 tests)
0 files updated, 0 files merged, 0 files removed, 0 files unresolved

C:\data>hg bisect -c check.bat
Changeset 6:a7cab1800465: bad
Changeset 3:54349a6276cc: good
Changeset 4:d0a381a67072: bad
The first bad revision is:
changeset:   4:d0a381a67072
summary:     bad1