/usr/share/doc/monotone/html/Quality-Assurance.html is in monotone-doc 1.0-3.
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 | <html lang="en">
<head>
<title>Quality Assurance - monotone documentation</title>
<meta http-equiv="Content-Type" content="text/html">
<meta name="description" content="monotone documentation">
<meta name="generator" content="makeinfo 4.13">
<link title="Top" rel="start" href="index.html#Top">
<link rel="up" href="Advanced-Uses.html#Advanced-Uses" title="Advanced Uses">
<link rel="prev" href="Workspace-Collisions.html#Workspace-Collisions" title="Workspace Collisions">
<link rel="next" href="Vars.html#Vars" title="Vars">
<link href="http://www.gnu.org/software/texinfo/" rel="generator-home" title="Texinfo Homepage">
<meta http-equiv="Content-Style-Type" content="text/css">
<style type="text/css"><!--
pre.display { font-family:inherit }
pre.format { font-family:inherit }
pre.smalldisplay { font-family:inherit; font-size:smaller }
pre.smallformat { font-family:inherit; font-size:smaller }
pre.smallexample { font-size:smaller }
pre.smalllisp { font-size:smaller }
span.sc { font-variant:small-caps }
span.roman { font-family:serif; font-weight:normal; }
span.sansserif { font-family:sans-serif; font-weight:normal; }
--></style>
<link rel="stylesheet" type="text/css" href="texinfo.css">
</head>
<body>
<div class="node">
<a name="Quality-Assurance"></a>
<p>
Next: <a rel="next" accesskey="n" href="Vars.html#Vars">Vars</a>,
Previous: <a rel="previous" accesskey="p" href="Workspace-Collisions.html#Workspace-Collisions">Workspace Collisions</a>,
Up: <a rel="up" accesskey="u" href="Advanced-Uses.html#Advanced-Uses">Advanced Uses</a>
<hr>
</div>
<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>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 <dfn>revision graph</dfn>. 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>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 <samp><span class="command">update</span></samp> 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>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:
<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>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.
</ul>
<p>The evaluation of trust is done on a cert-by-cert basis by calling a
set of Lua hooks: <a href="get_005frevision_005fcert_005ftrust.html#get_005frevision_005fcert_005ftrust">get_revision_cert_trust</a>,
<a href="get_005fmanifest_005fcert_005ftrust.html#get_005fmanifest_005fcert_005ftrust">get_manifest_cert_trust</a>, and <a href="get_005ffile_005fcert_005ftrust.html#get_005ffile_005fcert_005ftrust">get_file_cert_trust</a>. These
hooks are 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>The evaluation of testresults is controlled by the
<code>accept_testresult_change</code> hook (see <a href="accept_005ftestresult_005fchange.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.
</body></html>
|