This file is indexed.

/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:&nbsp;<a rel="next" accesskey="n" href="Vars.html#Vars">Vars</a>,
Previous:&nbsp;<a rel="previous" accesskey="p" href="Workspace-Collisions.html#Workspace-Collisions">Workspace Collisions</a>,
Up:&nbsp;<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 &ldquo;filter out&rdquo;, 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 &ldquo;heads&rdquo; 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 &ldquo;acceptable&rdquo; does monotone actually select an update target
to merge into your workspace.

</body></html>