/usr/share/doc/monotone/html/Quality-Assurance.html is in monotone-doc 1.1-9.
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 | <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<!-- Created by GNU Texinfo 6.1, http://www.gnu.org/software/texinfo/ -->
<head>
<title>monotone documentation: Quality Assurance</title>
<meta name="description" content="monotone documentation: Quality Assurance">
<meta name="keywords" content="monotone documentation: Quality Assurance">
<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="Vars.html#Vars" rel="next" title="Vars">
<link href="Workspace-Collisions.html#Workspace-Collisions" rel="prev" title="Workspace Collisions">
<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.nolinebreak {white-space: nowrap}
span.roman {font-family: initial; 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="Quality-Assurance"></a>
<div class="header">
<p>
Next: <a href="Vars.html#Vars" accesskey="n" rel="next">Vars</a>, Previous: <a href="Workspace-Collisions.html#Workspace-Collisions" accesskey="p" rel="prev">Workspace Collisions</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="Quality-Assurance-1"></a>
<h3 class="section">3.8 Quality Assurance</h3>
<p>Monotone was constructed to serve both as a version control tool and
as a quality assurance tool. The quality assurance features permit
users to ignore, or “filter out”, versions which do not meet their
criteria for quality. This section describes the way monotone
represents and reasons about quality information.
</p>
<p>Monotone often views the collection of revisions as a directed graph,
in which revisions are the nodes and changes between revisions are the
edges. We call this the <em>revision graph</em>. The revision graph has a
number of important subgraphs, many of which overlap. For example,
each branch is a subgraph of the revision graph, containing only the
nodes carrying a particular <code>branch</code> cert.
</p>
<p>Many of monotone’s operations involve searching the revision graph for
the ancestors or descendants of a particular revision, or extracting
the “heads” of a subgraph, which is the subgraph’s set of nodes with
no descendants. For example, when you run the <code>update</code> command,
monotone searches the subgraph consisting of descendants of the base
revision of the current workspace, trying to locate a unique head to
update the base revision to.
</p>
<p>Monotone’s quality assurance mechanisms are mostly based on
restricting the subgraph each command operates on. There are two
methods used to restrict the subgraph:
</p>
<ul>
<li> By restricting the set of trusted <code>branch</code> certificates, you
can require that specific code reviewers have approved of each edge in
the subgraph you focus on.
</li><li> By restricting the set of trusted <code>testresult</code> certificates, you
can require that the <em>endpoints</em> of an update operation have a
certificate asserting that the revision in question passed a certain
test, or testsuite.
</li></ul>
<p>The evaluation of trust is done on a cert-by-cert basis by calling the
Lua hook <a href="Trust-Evaluation-Hooks.html#get_005frevision_005fcert_005ftrust">get_revision_cert_trust</a>. This hook is only called
when a cert has at least one good signature from a known key, and are
passed <em>all</em> the keys which have signed the cert, as well as the
cert’s ID, name and value. The hook can then evaluate the set of
signers, as a group, and decide whether to grant or deny trust to the
assertion made by the cert.
</p>
<p>The evaluation of testresults is controlled by the
<code>accept_testresult_change</code> hook (see <a href="Trust-Evaluation-Hooks.html#accept_005ftestresult_005fchange">accept_testresult_change</a>).
This hook is called when
selecting update candidates, and is passed a pair of tables describing
the <code>testresult</code> certs present on the source and proposed
destination of an update. Only if the change in test results are
deemed “acceptable” does monotone actually select an update target
to merge into your workspace.
</p>
<hr>
<div class="header">
<p>
Next: <a href="Vars.html#Vars" accesskey="n" rel="next">Vars</a>, Previous: <a href="Workspace-Collisions.html#Workspace-Collisions" accesskey="p" rel="prev">Workspace Collisions</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>
|