Add support for multiple possible bisect results (
issue1228,
issue1182)
The real reason for both issue is that bisect can not handle cases where there
are multiple possibilities for the result.
Example (from
issue1228):
rev 0 -> good
rev 1 -> skipped
rev 2 -> skipped
rev 3 -> skipped
rev 4 -> bad
Note that this patch does not only fix the reported Assertion Error but also
the problem of a non converging bisect:
hg init
for i in `seq 3`; do echo $i > $i; hg add $i; hg ci -m$i; done
hg bisect -b 2
hg bisect -g 0
hg bisect -s
From this state on, you can:
a) mark as bad forever (non converging!)
b) mark as good to get an inconsistent state
c) skip for the Assertion Error
Minor description and code edits by pmezard.
% tedious monotone keys configuration
% create monotone repository
mtn: adding a to workspace manifest
mtn: adding bin to workspace manifest
mtn: adding c to workspace manifest
mtn: adding dir to workspace manifest
mtn: adding dir/b to workspace manifest
mtn: beginning commit on branch 'com.selenic.test'
mtn: committed revision 803ef0bf815e35b951dbd4310acd1e45e675016e
% update monotone working directory
mtn: skipping dir, already accounted for in workspace
mtn: renaming a to dir/a in workspace manifest
mtn: dropping c from workspace manifest
mtn: beginning commit on branch 'com.selenic.test'
mtn: committed revision 4daf60753d6fe21a06ce5f716303fe55fd6d3a56
% convert once
assuming destination repo.mtn-hg
initializing destination repo.mtn-hg repository
scanning source...
sorting...
converting...
1 initialize
0 update1
mtn: adding e to workspace manifest
mtn: dropping dir/b from workspace manifest
mtn: renaming bin to bin2 in workspace manifest
mtn: beginning commit on branch 'com.selenic.test'
mtn: committed revision 6c6977a6ef609ec80e40779f89dbd2772c96de62
mtn: renaming dir to dir2 in workspace manifest
mtn: beginning commit on branch 'com.selenic.test'
mtn: committed revision 5de5abe7c15eae70cf3acdda23c9c319ea50c1af
mtn: adding dir2/dir to workspace manifest
mtn: adding dir2/dir/emptydir to workspace manifest
mtn: adding dir2/dir/subdir to workspace manifest
mtn: adding dir2/dir/subdir/f to workspace manifest
mtn: beginning commit on branch 'com.selenic.test'
mtn: committed revision 27a423be1e406595cc57f50f42a8790fa0a93d8e
mtn: dropping dir2/dir/subdir/f from workspace manifest
mtn: dropping dir2/dir/subdir from workspace manifest
mtn: dropping dir2/dir/emptydir from workspace manifest
mtn: dropping dir2/dir from workspace manifest
mtn: beginning commit on branch 'com.selenic.test'
mtn: committed revision ba57ba5ac63178529d37fa8a2a1a012fc0e42047
% convert incrementally
assuming destination repo.mtn-hg
scanning source...
sorting...
converting...
3 update2 "with" quotes
2 movedir
1 emptydir
0 dropdirectory
3 files updated, 0 files merged, 0 files removed, 0 files unresolved
@ 5 "dropdirectory" files: dir2/dir/subdir/f
|
o 4 "emptydir" files: dir2/dir/subdir/f
|
o 3 "movedir" files: dir/a dir2/a
|
o 2 "update2 "with" quotes" files: bin bin2 dir/b e
|
o 1 "update1" files: a bin c dir/a dir/b
|
o 0 "initialize" files: a bin c dir/b
% manifest
bin2
dir2/a
e
% contents
a
a