Help: bisect
hg bisect [-gbsr] [-U] [-c CMD] [REV]
subdivision search of changesets
This command helps to find changesets which introduce problems. To use,
mark the earliest changeset you know exhibits the problem as bad, then
mark the latest changeset which is free from the problem as good. Bisect
will update your working directory to a revision for testing (unless the
-U/--noupdate option is specified). Once you have performed tests, mark
the working directory as good or bad, and bisect will either update to
another candidate changeset or announce that it has found the bad
revision.
As a shortcut, you can also use the revision argument to mark a revision
as good or bad without checking it out first.
If you supply a command, it will be used for automatic bisection. The
environment variable HG_NODE will contain the ID of the changeset being
tested. The exit status of the command will be used to mark revisions as
good or bad: status 0 means good, 125 means to skip the revision, 127
(command not found) will abort the bisection, and any other non-zero exit
status means the revision is bad.
Some examples:
- start a bisection with known bad revision 12, and good revision 34:
hg bisect --bad 34
hg bisect --good 12
- advance the current bisection by marking current revision as good or
bad:
hg bisect --good
hg bisect --bad
- mark the current revision, or a known revision, to be skipped (e.g. if
that revision is not usable because of another issue):
hg bisect --skip
hg bisect --skip 23
- forget the current bisection:
hg bisect --reset
- use 'make && make tests' to automatically find the first broken
revision:
hg bisect --reset
hg bisect --bad 34
hg bisect --good 12
hg bisect --command 'make && make tests'
- see all changesets whose states are already known in the current
bisection:
hg log -r "bisect(pruned)"
- see the changeset currently being bisected (especially useful if running
with -U/--noupdate):
hg log -r "bisect(current)"
- see all changesets that took part in the current bisection:
hg log -r "bisect(range)"
- with the graphlog extension, you can even get a nice graph:
hg log --graph -r "bisect(range)"
See "hg help revsets" for more about the "bisect()" keyword.
Returns 0 on success.
options:
-r --reset reset bisect state
-g --good mark changeset good
-b --bad mark changeset bad
-s --skip skip testing changeset
-e --extend extend the bisect range
-c --command CMD use command to check changeset state
-U --noupdate do not update to target
global options:
-R --repository REPO repository root directory or name of overlay bundle
file
--cwd DIR change working directory
-y --noninteractive do not prompt, automatically pick the first choice for
all prompts
-q --quiet suppress output
-v --verbose enable additional output
--config CONFIG [+] set/override config option (use 'section.name=value')
--debug enable debugging output
--debugger start debugger
--encoding ENCODE set the charset encoding (default: ascii)
--encodingmode MODE set the charset encoding mode (default: strict)
--traceback always print a traceback on exception
--time time how long the command takes
--profile print command execution profile
--version output version information and exit
-h --help display help and exit
[+] marked option can be specified multiple times