svn-bisect - Bisect Subversion revisions to find a regression
svn-bisect start [good_rev [bad_rev]]
svn-bisect {good|bad} [rev]
svn-bisect run command
svn-bisect reset
svn-bisect status
svn-bisect helps to automate finding a bug or behavior
change in a Subversion working copy. Given an initial
“good” revision, with the desired or original behavior, and a
newer “bad” revision, with the undesired or modified behavior,
svn-bisect will do a binary search through the revision range to find
which revision caused the change.
svn-bisect must be initialized in a working copy, with
svn-bisect start. It also needs to be given at least one good
revision (the baseline) and one bad revision (known modified
behavior) revision.
Sub-commands:
- start
- Initializes or reinitializes svn-bisect; optionally takes
good and bad revision parameters.
- good
rev
- bad rev
- Tells svn-bisect that a revision is good or bad,
defining or narrowing the search space. If not specified, revision
defaults to the current revision in the working copy. svn-bisect
will then update to a revision halfway between the new good and
bad boundaries. If this update crosses a point where a branch was
created, it switches in or out of the branch.
- reset
- Resets the working copy to the revision and branch where svn-bisect
start was run. In the simple case this is equivalent to rm -r
.svn-bisect; svn update, but not if it has crossed branches, and not
if you did not start at the HEAD revision. In any case,
svn-bisect never keeps track of mixed-revision working copies, so
do not use svn-bisect in a working copy that will need to be
restored to mixed revisions.
- status
- Prints a brief status message.
- run
command
- Runs the bisection in a loop. You must have already defined initial
good and bad boundary conditions. Each iteration through the
loop runs command as a shell command (a single argument, quoted if
necessary) on the chosen revision, then marks the revision as good
or bad, based on the exit status of command.
Assume you are trying to find which revision between 1250 and 1400
caused the make check command to fail.
svn-bisect start 1250 1400
svn-bisect run 'make check'
svn-bisect reset
- SVN
- The Subversion command-line program to call (default svn).
- .svn-bisect
- The directory containing state information, removed after a successful
bisection.
Written by Robert Millan and Peter Samuelson, for the Debian
Project (but may be used by others).