/usr/share/doc/monotone/html/Bisecting.html is in monotone-doc 1.1-7.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 | <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<!-- Created by GNU Texinfo 6.0, http://www.gnu.org/software/texinfo/ -->
<head>
<title>monotone documentation: Bisecting</title>
<meta name="description" content="monotone documentation: Bisecting">
<meta name="keywords" content="monotone documentation: Bisecting">
<meta name="resource-type" content="document">
<meta name="distribution" content="global">
<meta name="Generator" content="makeinfo">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<link href="index.html#Top" rel="start" title="Top">
<link href="General-Index.html#General-Index" rel="index" title="General Index">
<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
<link href="Advanced-Uses.html#Advanced-Uses" rel="up" title="Advanced Uses">
<link href="Command-Reference.html#Command-Reference" rel="next" title="Command Reference">
<link href="Using-packets.html#Using-packets" rel="prev" title="Using packets">
<style type="text/css">
<!--
a.summary-letter {text-decoration: none}
blockquote.indentedblock {margin-right: 0em}
blockquote.smallindentedblock {margin-right: 0em; font-size: smaller}
blockquote.smallquotation {font-size: smaller}
div.display {margin-left: 3.2em}
div.example {margin-left: 3.2em}
div.lisp {margin-left: 3.2em}
div.smalldisplay {margin-left: 3.2em}
div.smallexample {margin-left: 3.2em}
div.smalllisp {margin-left: 3.2em}
kbd {font-style: oblique}
pre.display {font-family: inherit}
pre.format {font-family: inherit}
pre.menu-comment {font-family: serif}
pre.menu-preformatted {font-family: serif}
pre.smalldisplay {font-family: inherit; font-size: smaller}
pre.smallexample {font-size: smaller}
pre.smallformat {font-family: inherit; font-size: smaller}
pre.smalllisp {font-size: smaller}
span.nocodebreak {white-space: nowrap}
span.nolinebreak {white-space: nowrap}
span.roman {font-family: serif; font-weight: normal}
span.sansserif {font-family: sans-serif; font-weight: normal}
ul.no-bullet {list-style: none}
-->
</style>
<link rel="stylesheet" type="text/css" href="texinfo.css">
</head>
<body lang="en">
<a name="Bisecting"></a>
<div class="header">
<p>
Previous: <a href="Using-packets.html#Using-packets" accesskey="p" rel="prev">Using packets</a>, Up: <a href="Advanced-Uses.html#Advanced-Uses" accesskey="u" rel="up">Advanced Uses</a> [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="General-Index.html#General-Index" title="Index" rel="index">Index</a>]</p>
</div>
<hr>
<a name="Bisecting-1"></a>
<h3 class="section">3.19 Bisecting</h3>
<p>Bisecting is an efficient means of finding the earliest revision that
introduced a bug known to exist in some later revision. Given a set of
“good” earlier revisions that do not contain the bug and a set of
“bad” later revisions that do contain the bug <code>bisect</code>
performs a binary search over the set of revisions between these two
sets to identify the specific revision that introduced the bug.
</p>
<p>Bisection is started by marking revisions with the <code>bisect
good</code> and <code>bisect bad</code> commands. Once both good and bad
revisions have been specified the set of candidate revisions between
the good and bad revisions is determined. The midpoint of this set is
selected as the next revision to be tested and the workspace is
updated to this selected revision. After the selected revision has
been tested bisection continues when the revision is marked with
<code>bisect good</code> or <code>bisect bad</code>. If the selected
revision is marked as good, it and all of its ancestors are considered
to be good and excluded from the remaining search set. If the selected
revision is marked as bad, all of its descendants are considered to be
bad and excluded from the remaining search set. After each selected
revision is marked as good or bad the size of the remaining search set
is halved.
</p>
<p>Revisions that are untestable for some reason (e.g. they don’t
compile) may be ignored with the <code>bisect skip</code> command. This
excludes the specified revisions from the candidate set and allows the
bisection operation to continue. Skipping revisions may cause the
search to fail or end on the wrong revision if the revision being
searched for is skipped.
</p>
<p>If the workspace is updated to some unrelated revision during a
bisection operation the <code>bisect update</code> command can be used to
update back to the next revision selected for bisection. This command
can also be used if a previous <code>bisect good</code>, <code>bisect
bad</code> or <code>bisect skip</code> command fails to update the workspace
due to the existence of conflicting unversioned paths.
</p>
<p>The current status of the bisection operation and the next revision to
be tested is reported by the <code>bisect status</code> command. This
command can be run at any stage of the bisection operation to see how
many revisions remain to be tested and how many revisions have been
ruled out.
</p>
<p>Currently <code>bisect</code> updates the workspace but does <em>not</em>
update the workspace <samp>branch</samp> option. This may leave the
workspace at a revision that is <em>not</em> in the branch specified by
the workspace <samp>branch</samp> option and cause subsequent commits to
be made to the wrong branch. To help avoid this error the
<code>status</code> command will indicate when the workspace branch does
not match any of the parent revision branches. Take care when
committing new revisions during a bisection operation and be sure to
use the <code>bisect reset</code> command once the bisection is complete
to update the workspace back to the revision from which the bisection
started.
</p>
<p>The bisection operation completes successfully when the last remaining
revision is marked as “bad”. If the last remaining revision is
marked as “good” the bisection fails without finding the initial bad
revision.
</p>
<p>Once bisection is complete the workspace can be updated back to the
starting revision with the <code>bisect reset</code> command. This
command also removes all stored bisection information in preparation
for future bisect operations.
</p>
<hr>
<div class="header">
<p>
Previous: <a href="Using-packets.html#Using-packets" accesskey="p" rel="prev">Using packets</a>, Up: <a href="Advanced-Uses.html#Advanced-Uses" accesskey="u" rel="up">Advanced Uses</a> [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="General-Index.html#General-Index" title="Index" rel="index">Index</a>]</p>
</div>
</body>
</html>
|