/usr/share/doc/monotone/html/Versions-of-trees.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 | <!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: Versions of trees</title>
<meta name="description" content="monotone documentation: Versions of trees">
<meta name="keywords" content="monotone documentation: Versions of trees">
<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="Concepts.html#Concepts" rel="up" title="Concepts">
<link href="Historical-records.html#Historical-records" rel="next" title="Historical records">
<link href="Versions-of-files.html#Versions-of-files" rel="prev" title="Versions of files">
<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="Versions-of-trees"></a>
<div class="header">
<p>
Next: <a href="Historical-records.html#Historical-records" accesskey="n" rel="next">Historical records</a>, Previous: <a href="Versions-of-files.html#Versions-of-files" accesskey="p" rel="prev">Versions of files</a>, Up: <a href="Concepts.html#Concepts" accesskey="u" rel="up">Concepts</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="Versions-of-trees-1"></a>
<h3 class="section">1.2 Versions of trees</h3>
<p>After you have made many different files, you may wish to capture a
“snapshot” of the versions of all the files in a particular collection.
Since files are typically collected into <i>trees</i> in a file system,
we say that you want to capture a <i>version of your tree</i>. Doing
so will permit you to undo changes to multiple files at once, or send
your friend a <i>set</i> of changes to many files at once.
</p>
<p>To make a snapshot of a tree, we begin by writing a special file called
a <em>manifest</em>. In fact, monotone will write this file for us, but we
could write it ourselves too. It is just a plain text file, in a
structured but human-readable format used by several parts of monotone.
Each file entry of a manifest binds a specific name, as a full path from
the root of the workspace, to a specific file ID, as the hash of its
content. In this way, the manifest collects together the snapshot of
the file names and contents you have at this point in time; other
snapshots with other manifests can use different names for the same
file, or different contents for the same name.
</p>
<p>Other entries in the manifest format name directories or store file
attributes, which we will cover later.
</p>
<img src="figures/manifest.png" alt="figures/manifest">
<p>Now we note that a manifest is itself a file. Therefore a manifest can
serve as input to the <small>SHA1</small> function, and thus every manifest has
an ID of its own. By calculating the <small>SHA1</small> value of a manifest, we
capture the <i>state of our tree</i> in a single <em>manifest ID</em>. In
other words, the ID of the manifest essentially captures all the IDs
and file names of every file in our tree, combined. So we may treat
manifests and their IDs as <i>snapshots</i> of a tree of files, though
lacking the actual contents of the files themselves.
</p>
<img src="figures/file-id-manifest-id.png" alt="figures/file-id-manifest-id">
<p>As with versions of files, we may decide to store manifests in their
entirety, or else we may store only a compact description of changes
which occur between different versions of manifests. As with files,
when possible monotone stores compact descriptions of changes between
manifests; when necessary it stores complete versions of manifests.
</p>
<hr>
<div class="header">
<p>
Next: <a href="Historical-records.html#Historical-records" accesskey="n" rel="next">Historical records</a>, Previous: <a href="Versions-of-files.html#Versions-of-files" accesskey="p" rel="prev">Versions of files</a>, Up: <a href="Concepts.html#Concepts" accesskey="u" rel="up">Concepts</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>
|