Mercurial > public > mercurial-scm > hg-stable
annotate mercurial/help/internals/changegroups.txt @ 31267:11831d755b51
merge: remove uses of manifest.matches
This gets rid of the manifest.matches calls in merge.py in favor of the new api.
This is part of getting rid of manifest.matches since it is O(manifest).
author | Durham Goode <durham@fb.com> |
---|---|
date | Tue, 07 Mar 2017 18:38:20 -0800 |
parents | 9f169b7f53d5 |
children | 16539e32ebe0 |
rev | line source |
---|---|
27372
a79cba6cb206
help: add documentation for changegroup formats
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
1 Changegroups are representations of repository revlog data, specifically |
31223
9f169b7f53d5
help: fix internals.changegroups
Kyle Lippincott <spectral@google.com>
parents:
29759
diff
changeset
|
2 the changelog data, root/flat manifest data, treemanifest data, and |
9f169b7f53d5
help: fix internals.changegroups
Kyle Lippincott <spectral@google.com>
parents:
29759
diff
changeset
|
3 filelogs. |
27372
a79cba6cb206
help: add documentation for changegroup formats
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
4 |
27434
11150176a000
changegroups: add documentation for cg3
Augie Fackler <augie@google.com>
parents:
27372
diff
changeset
|
5 There are 3 versions of changegroups: ``1``, ``2``, and ``3``. From a |
31223
9f169b7f53d5
help: fix internals.changegroups
Kyle Lippincott <spectral@google.com>
parents:
29759
diff
changeset
|
6 high-level, versions ``1`` and ``2`` are almost exactly the same, with the |
9f169b7f53d5
help: fix internals.changegroups
Kyle Lippincott <spectral@google.com>
parents:
29759
diff
changeset
|
7 only difference being an additional item in the *delta header*. Version |
9f169b7f53d5
help: fix internals.changegroups
Kyle Lippincott <spectral@google.com>
parents:
29759
diff
changeset
|
8 ``3`` adds support for revlog flags in the *delta header* and optionally |
9f169b7f53d5
help: fix internals.changegroups
Kyle Lippincott <spectral@google.com>
parents:
29759
diff
changeset
|
9 exchanging treemanifests (enabled by setting an option on the |
9f169b7f53d5
help: fix internals.changegroups
Kyle Lippincott <spectral@google.com>
parents:
29759
diff
changeset
|
10 ``changegroup`` part in the bundle2). |
27372
a79cba6cb206
help: add documentation for changegroup formats
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
11 |
31223
9f169b7f53d5
help: fix internals.changegroups
Kyle Lippincott <spectral@google.com>
parents:
29759
diff
changeset
|
12 Changegroups when not exchanging treemanifests consist of 3 logical |
9f169b7f53d5
help: fix internals.changegroups
Kyle Lippincott <spectral@google.com>
parents:
29759
diff
changeset
|
13 segments:: |
27372
a79cba6cb206
help: add documentation for changegroup formats
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
14 |
a79cba6cb206
help: add documentation for changegroup formats
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
15 +---------------------------------+ |
a79cba6cb206
help: add documentation for changegroup formats
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
16 | | | | |
a79cba6cb206
help: add documentation for changegroup formats
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
17 | changeset | manifest | filelogs | |
a79cba6cb206
help: add documentation for changegroup formats
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
18 | | | | |
31223
9f169b7f53d5
help: fix internals.changegroups
Kyle Lippincott <spectral@google.com>
parents:
29759
diff
changeset
|
19 | | | | |
27372
a79cba6cb206
help: add documentation for changegroup formats
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
20 +---------------------------------+ |
a79cba6cb206
help: add documentation for changegroup formats
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
21 |
31223
9f169b7f53d5
help: fix internals.changegroups
Kyle Lippincott <spectral@google.com>
parents:
29759
diff
changeset
|
22 When exchanging treemanifests, there are 4 logical segments:: |
9f169b7f53d5
help: fix internals.changegroups
Kyle Lippincott <spectral@google.com>
parents:
29759
diff
changeset
|
23 |
9f169b7f53d5
help: fix internals.changegroups
Kyle Lippincott <spectral@google.com>
parents:
29759
diff
changeset
|
24 +-------------------------------------------------+ |
9f169b7f53d5
help: fix internals.changegroups
Kyle Lippincott <spectral@google.com>
parents:
29759
diff
changeset
|
25 | | | | | |
9f169b7f53d5
help: fix internals.changegroups
Kyle Lippincott <spectral@google.com>
parents:
29759
diff
changeset
|
26 | changeset | root | treemanifests | filelogs | |
9f169b7f53d5
help: fix internals.changegroups
Kyle Lippincott <spectral@google.com>
parents:
29759
diff
changeset
|
27 | | manifest | | | |
9f169b7f53d5
help: fix internals.changegroups
Kyle Lippincott <spectral@google.com>
parents:
29759
diff
changeset
|
28 | | | | | |
9f169b7f53d5
help: fix internals.changegroups
Kyle Lippincott <spectral@google.com>
parents:
29759
diff
changeset
|
29 +-------------------------------------------------+ |
9f169b7f53d5
help: fix internals.changegroups
Kyle Lippincott <spectral@google.com>
parents:
29759
diff
changeset
|
30 |
27372
a79cba6cb206
help: add documentation for changegroup formats
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
31 The principle building block of each segment is a *chunk*. A *chunk* |
a79cba6cb206
help: add documentation for changegroup formats
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
32 is a framed piece of data:: |
a79cba6cb206
help: add documentation for changegroup formats
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
33 |
a79cba6cb206
help: add documentation for changegroup formats
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
34 +---------------------------------------+ |
a79cba6cb206
help: add documentation for changegroup formats
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
35 | | | |
a79cba6cb206
help: add documentation for changegroup formats
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
36 | length | data | |
31223
9f169b7f53d5
help: fix internals.changegroups
Kyle Lippincott <spectral@google.com>
parents:
29759
diff
changeset
|
37 | (4 bytes) | (<length - 4> bytes) | |
27372
a79cba6cb206
help: add documentation for changegroup formats
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
38 | | | |
a79cba6cb206
help: add documentation for changegroup formats
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
39 +---------------------------------------+ |
a79cba6cb206
help: add documentation for changegroup formats
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
40 |
31223
9f169b7f53d5
help: fix internals.changegroups
Kyle Lippincott <spectral@google.com>
parents:
29759
diff
changeset
|
41 All integers are big-endian signed integers. Each chunk starts with a 32-bit |
9f169b7f53d5
help: fix internals.changegroups
Kyle Lippincott <spectral@google.com>
parents:
29759
diff
changeset
|
42 integer indicating the length of the entire chunk (including the length field |
9f169b7f53d5
help: fix internals.changegroups
Kyle Lippincott <spectral@google.com>
parents:
29759
diff
changeset
|
43 itself). |
27372
a79cba6cb206
help: add documentation for changegroup formats
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
44 |
31223
9f169b7f53d5
help: fix internals.changegroups
Kyle Lippincott <spectral@google.com>
parents:
29759
diff
changeset
|
45 There is a special case chunk that has a value of 0 for the length |
9f169b7f53d5
help: fix internals.changegroups
Kyle Lippincott <spectral@google.com>
parents:
29759
diff
changeset
|
46 (``0x00000000``). We call this an *empty chunk*. |
27372
a79cba6cb206
help: add documentation for changegroup formats
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
47 |
a79cba6cb206
help: add documentation for changegroup formats
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
48 Delta Groups |
29759
aba2bb2a6d0f
help: don't try to render a section on sub-topics
Gregory Szorc <gregory.szorc@gmail.com>
parents:
27434
diff
changeset
|
49 ============ |
27372
a79cba6cb206
help: add documentation for changegroup formats
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
50 |
a79cba6cb206
help: add documentation for changegroup formats
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
51 A *delta group* expresses the content of a revlog as a series of deltas, |
a79cba6cb206
help: add documentation for changegroup formats
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
52 or patches against previous revisions. |
a79cba6cb206
help: add documentation for changegroup formats
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
53 |
a79cba6cb206
help: add documentation for changegroup formats
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
54 Delta groups consist of 0 or more *chunks* followed by the *empty chunk* |
a79cba6cb206
help: add documentation for changegroup formats
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
55 to signal the end of the delta group:: |
a79cba6cb206
help: add documentation for changegroup formats
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
56 |
a79cba6cb206
help: add documentation for changegroup formats
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
57 +------------------------------------------------------------------------+ |
a79cba6cb206
help: add documentation for changegroup formats
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
58 | | | | | | |
a79cba6cb206
help: add documentation for changegroup formats
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
59 | chunk0 length | chunk0 data | chunk1 length | chunk1 data | 0x0 | |
31223
9f169b7f53d5
help: fix internals.changegroups
Kyle Lippincott <spectral@google.com>
parents:
29759
diff
changeset
|
60 | (4 bytes) | (various) | (4 bytes) | (various) | (4 bytes) | |
27372
a79cba6cb206
help: add documentation for changegroup formats
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
61 | | | | | | |
31223
9f169b7f53d5
help: fix internals.changegroups
Kyle Lippincott <spectral@google.com>
parents:
29759
diff
changeset
|
62 +------------------------------------------------------------------------+ |
27372
a79cba6cb206
help: add documentation for changegroup formats
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
63 |
a79cba6cb206
help: add documentation for changegroup formats
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
64 Each *chunk*'s data consists of the following:: |
a79cba6cb206
help: add documentation for changegroup formats
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
65 |
31223
9f169b7f53d5
help: fix internals.changegroups
Kyle Lippincott <spectral@google.com>
parents:
29759
diff
changeset
|
66 +---------------------------------------+ |
9f169b7f53d5
help: fix internals.changegroups
Kyle Lippincott <spectral@google.com>
parents:
29759
diff
changeset
|
67 | | | |
9f169b7f53d5
help: fix internals.changegroups
Kyle Lippincott <spectral@google.com>
parents:
29759
diff
changeset
|
68 | delta header | delta data | |
9f169b7f53d5
help: fix internals.changegroups
Kyle Lippincott <spectral@google.com>
parents:
29759
diff
changeset
|
69 | (various by version) | (various) | |
9f169b7f53d5
help: fix internals.changegroups
Kyle Lippincott <spectral@google.com>
parents:
29759
diff
changeset
|
70 | | | |
9f169b7f53d5
help: fix internals.changegroups
Kyle Lippincott <spectral@google.com>
parents:
29759
diff
changeset
|
71 +---------------------------------------+ |
27372
a79cba6cb206
help: add documentation for changegroup formats
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
72 |
31223
9f169b7f53d5
help: fix internals.changegroups
Kyle Lippincott <spectral@google.com>
parents:
29759
diff
changeset
|
73 The *delta data* is a series of *delta*s that describe a diff from an existing |
9f169b7f53d5
help: fix internals.changegroups
Kyle Lippincott <spectral@google.com>
parents:
29759
diff
changeset
|
74 entry (either that the recipient already has, or previously specified in the |
9f169b7f53d5
help: fix internals.changegroups
Kyle Lippincott <spectral@google.com>
parents:
29759
diff
changeset
|
75 bundlei/changegroup). |
27372
a79cba6cb206
help: add documentation for changegroup formats
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
76 |
27434
11150176a000
changegroups: add documentation for cg3
Augie Fackler <augie@google.com>
parents:
27372
diff
changeset
|
77 The *delta header* is different between versions ``1``, ``2``, and |
11150176a000
changegroups: add documentation for cg3
Augie Fackler <augie@google.com>
parents:
27372
diff
changeset
|
78 ``3`` of the changegroup format. |
27372
a79cba6cb206
help: add documentation for changegroup formats
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
79 |
31223
9f169b7f53d5
help: fix internals.changegroups
Kyle Lippincott <spectral@google.com>
parents:
29759
diff
changeset
|
80 Version 1 (headerlen=80):: |
27372
a79cba6cb206
help: add documentation for changegroup formats
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
81 |
a79cba6cb206
help: add documentation for changegroup formats
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
82 +------------------------------------------------------+ |
a79cba6cb206
help: add documentation for changegroup formats
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
83 | | | | | |
a79cba6cb206
help: add documentation for changegroup formats
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
84 | node | p1 node | p2 node | link node | |
a79cba6cb206
help: add documentation for changegroup formats
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
85 | (20 bytes) | (20 bytes) | (20 bytes) | (20 bytes) | |
a79cba6cb206
help: add documentation for changegroup formats
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
86 | | | | | |
a79cba6cb206
help: add documentation for changegroup formats
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
87 +------------------------------------------------------+ |
a79cba6cb206
help: add documentation for changegroup formats
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
88 |
31223
9f169b7f53d5
help: fix internals.changegroups
Kyle Lippincott <spectral@google.com>
parents:
29759
diff
changeset
|
89 Version 2 (headerlen=100):: |
27372
a79cba6cb206
help: add documentation for changegroup formats
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
90 |
a79cba6cb206
help: add documentation for changegroup formats
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
91 +------------------------------------------------------------------+ |
a79cba6cb206
help: add documentation for changegroup formats
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
92 | | | | | | |
a79cba6cb206
help: add documentation for changegroup formats
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
93 | node | p1 node | p2 node | base node | link node | |
a79cba6cb206
help: add documentation for changegroup formats
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
94 | (20 bytes) | (20 bytes) | (20 bytes) | (20 bytes) | (20 bytes) | |
a79cba6cb206
help: add documentation for changegroup formats
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
95 | | | | | | |
a79cba6cb206
help: add documentation for changegroup formats
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
96 +------------------------------------------------------------------+ |
a79cba6cb206
help: add documentation for changegroup formats
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
97 |
31223
9f169b7f53d5
help: fix internals.changegroups
Kyle Lippincott <spectral@google.com>
parents:
29759
diff
changeset
|
98 Version 3 (headerlen=102):: |
27434
11150176a000
changegroups: add documentation for cg3
Augie Fackler <augie@google.com>
parents:
27372
diff
changeset
|
99 |
11150176a000
changegroups: add documentation for cg3
Augie Fackler <augie@google.com>
parents:
27372
diff
changeset
|
100 +------------------------------------------------------------------------------+ |
11150176a000
changegroups: add documentation for cg3
Augie Fackler <augie@google.com>
parents:
27372
diff
changeset
|
101 | | | | | | | |
31223
9f169b7f53d5
help: fix internals.changegroups
Kyle Lippincott <spectral@google.com>
parents:
29759
diff
changeset
|
102 | node | p1 node | p2 node | base node | link node | flags | |
27434
11150176a000
changegroups: add documentation for cg3
Augie Fackler <augie@google.com>
parents:
27372
diff
changeset
|
103 | (20 bytes) | (20 bytes) | (20 bytes) | (20 bytes) | (20 bytes) | (2 bytes) | |
11150176a000
changegroups: add documentation for cg3
Augie Fackler <augie@google.com>
parents:
27372
diff
changeset
|
104 | | | | | | | |
11150176a000
changegroups: add documentation for cg3
Augie Fackler <augie@google.com>
parents:
27372
diff
changeset
|
105 +------------------------------------------------------------------------------+ |
11150176a000
changegroups: add documentation for cg3
Augie Fackler <augie@google.com>
parents:
27372
diff
changeset
|
106 |
31223
9f169b7f53d5
help: fix internals.changegroups
Kyle Lippincott <spectral@google.com>
parents:
29759
diff
changeset
|
107 The *delta data* consists of ``chunklen - 4 - headerlen`` bytes, which contain a |
9f169b7f53d5
help: fix internals.changegroups
Kyle Lippincott <spectral@google.com>
parents:
29759
diff
changeset
|
108 series of *delta*s, densely packed (no separators). These deltas describe a diff |
9f169b7f53d5
help: fix internals.changegroups
Kyle Lippincott <spectral@google.com>
parents:
29759
diff
changeset
|
109 from an existing entry (either that the recipient already has, or previously |
9f169b7f53d5
help: fix internals.changegroups
Kyle Lippincott <spectral@google.com>
parents:
29759
diff
changeset
|
110 specified in the bundle/changegroup). The format is described more fully in |
9f169b7f53d5
help: fix internals.changegroups
Kyle Lippincott <spectral@google.com>
parents:
29759
diff
changeset
|
111 ``hg help internals.bdiff``, but briefly: |
27372
a79cba6cb206
help: add documentation for changegroup formats
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
112 |
31223
9f169b7f53d5
help: fix internals.changegroups
Kyle Lippincott <spectral@google.com>
parents:
29759
diff
changeset
|
113 +---------------------------------------------------------------+ |
9f169b7f53d5
help: fix internals.changegroups
Kyle Lippincott <spectral@google.com>
parents:
29759
diff
changeset
|
114 | | | | | |
9f169b7f53d5
help: fix internals.changegroups
Kyle Lippincott <spectral@google.com>
parents:
29759
diff
changeset
|
115 | start offset | end offset | new length | content | |
9f169b7f53d5
help: fix internals.changegroups
Kyle Lippincott <spectral@google.com>
parents:
29759
diff
changeset
|
116 | (4 bytes) | (4 bytes) | (4 bytes) | (<new length> bytes) | |
9f169b7f53d5
help: fix internals.changegroups
Kyle Lippincott <spectral@google.com>
parents:
29759
diff
changeset
|
117 | | | | | |
9f169b7f53d5
help: fix internals.changegroups
Kyle Lippincott <spectral@google.com>
parents:
29759
diff
changeset
|
118 +---------------------------------------------------------------+ |
9f169b7f53d5
help: fix internals.changegroups
Kyle Lippincott <spectral@google.com>
parents:
29759
diff
changeset
|
119 |
9f169b7f53d5
help: fix internals.changegroups
Kyle Lippincott <spectral@google.com>
parents:
29759
diff
changeset
|
120 Please note that the length field in the delta data does *not* include itself. |
27372
a79cba6cb206
help: add documentation for changegroup formats
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
121 |
a79cba6cb206
help: add documentation for changegroup formats
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
122 In version 1, the delta is always applied against the previous node from |
a79cba6cb206
help: add documentation for changegroup formats
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
123 the changegroup or the first parent if this is the first entry in the |
a79cba6cb206
help: add documentation for changegroup formats
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
124 changegroup. |
a79cba6cb206
help: add documentation for changegroup formats
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
125 |
31223
9f169b7f53d5
help: fix internals.changegroups
Kyle Lippincott <spectral@google.com>
parents:
29759
diff
changeset
|
126 In version 2 and up, the delta base node is encoded in the entry in the |
27372
a79cba6cb206
help: add documentation for changegroup formats
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
127 changegroup. This allows the delta to be expressed against any parent, |
a79cba6cb206
help: add documentation for changegroup formats
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
128 which can result in smaller deltas and more efficient encoding of data. |
a79cba6cb206
help: add documentation for changegroup formats
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
129 |
a79cba6cb206
help: add documentation for changegroup formats
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
130 Changeset Segment |
29759
aba2bb2a6d0f
help: don't try to render a section on sub-topics
Gregory Szorc <gregory.szorc@gmail.com>
parents:
27434
diff
changeset
|
131 ================= |
27372
a79cba6cb206
help: add documentation for changegroup formats
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
132 |
a79cba6cb206
help: add documentation for changegroup formats
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
133 The *changeset segment* consists of a single *delta group* holding |
31223
9f169b7f53d5
help: fix internals.changegroups
Kyle Lippincott <spectral@google.com>
parents:
29759
diff
changeset
|
134 changelog data. The *empty chunk* at the end of the *delta group* denotes |
9f169b7f53d5
help: fix internals.changegroups
Kyle Lippincott <spectral@google.com>
parents:
29759
diff
changeset
|
135 the boundary to the *manifest segment*. |
27372
a79cba6cb206
help: add documentation for changegroup formats
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
136 |
a79cba6cb206
help: add documentation for changegroup formats
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
137 Manifest Segment |
29759
aba2bb2a6d0f
help: don't try to render a section on sub-topics
Gregory Szorc <gregory.szorc@gmail.com>
parents:
27434
diff
changeset
|
138 ================ |
27372
a79cba6cb206
help: add documentation for changegroup formats
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
139 |
31223
9f169b7f53d5
help: fix internals.changegroups
Kyle Lippincott <spectral@google.com>
parents:
29759
diff
changeset
|
140 The *manifest segment* consists of a single *delta group* holding manifest |
9f169b7f53d5
help: fix internals.changegroups
Kyle Lippincott <spectral@google.com>
parents:
29759
diff
changeset
|
141 data. If treemanifests are in use, it contains only the manifest for the |
9f169b7f53d5
help: fix internals.changegroups
Kyle Lippincott <spectral@google.com>
parents:
29759
diff
changeset
|
142 root directory of the repository. Otherwise, it contains the entire |
9f169b7f53d5
help: fix internals.changegroups
Kyle Lippincott <spectral@google.com>
parents:
29759
diff
changeset
|
143 manifest data. The *empty chunk* at the end of the *delta group* denotes |
9f169b7f53d5
help: fix internals.changegroups
Kyle Lippincott <spectral@google.com>
parents:
29759
diff
changeset
|
144 the boundary to the next segment (either the *treemanifests segment* or the |
9f169b7f53d5
help: fix internals.changegroups
Kyle Lippincott <spectral@google.com>
parents:
29759
diff
changeset
|
145 *filelogs segment*, depending on version and the request options). |
9f169b7f53d5
help: fix internals.changegroups
Kyle Lippincott <spectral@google.com>
parents:
29759
diff
changeset
|
146 |
9f169b7f53d5
help: fix internals.changegroups
Kyle Lippincott <spectral@google.com>
parents:
29759
diff
changeset
|
147 Treemanifests Segment |
9f169b7f53d5
help: fix internals.changegroups
Kyle Lippincott <spectral@google.com>
parents:
29759
diff
changeset
|
148 --------------------- |
9f169b7f53d5
help: fix internals.changegroups
Kyle Lippincott <spectral@google.com>
parents:
29759
diff
changeset
|
149 |
9f169b7f53d5
help: fix internals.changegroups
Kyle Lippincott <spectral@google.com>
parents:
29759
diff
changeset
|
150 The *treemanifests segment* only exists in changegroup version ``3``, and |
9f169b7f53d5
help: fix internals.changegroups
Kyle Lippincott <spectral@google.com>
parents:
29759
diff
changeset
|
151 only if the 'treemanifest' param is part of the bundle2 changegroup part |
9f169b7f53d5
help: fix internals.changegroups
Kyle Lippincott <spectral@google.com>
parents:
29759
diff
changeset
|
152 (it is not possible to use changegroup version 3 outside of bundle2). |
9f169b7f53d5
help: fix internals.changegroups
Kyle Lippincott <spectral@google.com>
parents:
29759
diff
changeset
|
153 Aside from the filenames in the *treemanifests segment* containing a |
9f169b7f53d5
help: fix internals.changegroups
Kyle Lippincott <spectral@google.com>
parents:
29759
diff
changeset
|
154 trailing ``/`` character, it behaves identically to the *filelogs segment* |
9f169b7f53d5
help: fix internals.changegroups
Kyle Lippincott <spectral@google.com>
parents:
29759
diff
changeset
|
155 (see below). The final sub-segment is followed by an *empty chunk* (logically, |
9f169b7f53d5
help: fix internals.changegroups
Kyle Lippincott <spectral@google.com>
parents:
29759
diff
changeset
|
156 a sub-segment with filename size 0). This denotes the boundary to the |
9f169b7f53d5
help: fix internals.changegroups
Kyle Lippincott <spectral@google.com>
parents:
29759
diff
changeset
|
157 *filelogs segment*. |
27372
a79cba6cb206
help: add documentation for changegroup formats
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
158 |
a79cba6cb206
help: add documentation for changegroup formats
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
159 Filelogs Segment |
29759
aba2bb2a6d0f
help: don't try to render a section on sub-topics
Gregory Szorc <gregory.szorc@gmail.com>
parents:
27434
diff
changeset
|
160 ================ |
27372
a79cba6cb206
help: add documentation for changegroup formats
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
161 |
31223
9f169b7f53d5
help: fix internals.changegroups
Kyle Lippincott <spectral@google.com>
parents:
29759
diff
changeset
|
162 The *filelogs segment* consists of multiple sub-segments, each |
27372
a79cba6cb206
help: add documentation for changegroup formats
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
163 corresponding to an individual file whose data is being described:: |
a79cba6cb206
help: add documentation for changegroup formats
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
164 |
31223
9f169b7f53d5
help: fix internals.changegroups
Kyle Lippincott <spectral@google.com>
parents:
29759
diff
changeset
|
165 +--------------------------------------------------+ |
9f169b7f53d5
help: fix internals.changegroups
Kyle Lippincott <spectral@google.com>
parents:
29759
diff
changeset
|
166 | | | | | | |
9f169b7f53d5
help: fix internals.changegroups
Kyle Lippincott <spectral@google.com>
parents:
29759
diff
changeset
|
167 | filelog0 | filelog1 | filelog2 | ... | 0x0 | |
9f169b7f53d5
help: fix internals.changegroups
Kyle Lippincott <spectral@google.com>
parents:
29759
diff
changeset
|
168 | | | | | (4 bytes) | |
9f169b7f53d5
help: fix internals.changegroups
Kyle Lippincott <spectral@google.com>
parents:
29759
diff
changeset
|
169 | | | | | | |
9f169b7f53d5
help: fix internals.changegroups
Kyle Lippincott <spectral@google.com>
parents:
29759
diff
changeset
|
170 +--------------------------------------------------+ |
27372
a79cba6cb206
help: add documentation for changegroup formats
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
171 |
31223
9f169b7f53d5
help: fix internals.changegroups
Kyle Lippincott <spectral@google.com>
parents:
29759
diff
changeset
|
172 The final filelog sub-segment is followed by an *empty chunk* (logically, |
9f169b7f53d5
help: fix internals.changegroups
Kyle Lippincott <spectral@google.com>
parents:
29759
diff
changeset
|
173 a sub-segment with filename size 0). This denotes the end of the segment |
9f169b7f53d5
help: fix internals.changegroups
Kyle Lippincott <spectral@google.com>
parents:
29759
diff
changeset
|
174 and of the overall changegroup. |
27372
a79cba6cb206
help: add documentation for changegroup formats
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
175 |
a79cba6cb206
help: add documentation for changegroup formats
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
176 Each filelog sub-segment consists of the following:: |
a79cba6cb206
help: add documentation for changegroup formats
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
177 |
31223
9f169b7f53d5
help: fix internals.changegroups
Kyle Lippincott <spectral@google.com>
parents:
29759
diff
changeset
|
178 +------------------------------------------------------+ |
9f169b7f53d5
help: fix internals.changegroups
Kyle Lippincott <spectral@google.com>
parents:
29759
diff
changeset
|
179 | | | | |
9f169b7f53d5
help: fix internals.changegroups
Kyle Lippincott <spectral@google.com>
parents:
29759
diff
changeset
|
180 | filename length | filename | delta group | |
9f169b7f53d5
help: fix internals.changegroups
Kyle Lippincott <spectral@google.com>
parents:
29759
diff
changeset
|
181 | (4 bytes) | (<length - 4> bytes) | (various) | |
9f169b7f53d5
help: fix internals.changegroups
Kyle Lippincott <spectral@google.com>
parents:
29759
diff
changeset
|
182 | | | | |
9f169b7f53d5
help: fix internals.changegroups
Kyle Lippincott <spectral@google.com>
parents:
29759
diff
changeset
|
183 +------------------------------------------------------+ |
27372
a79cba6cb206
help: add documentation for changegroup formats
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
184 |
a79cba6cb206
help: add documentation for changegroup formats
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
185 That is, a *chunk* consisting of the filename (not terminated or padded) |
31223
9f169b7f53d5
help: fix internals.changegroups
Kyle Lippincott <spectral@google.com>
parents:
29759
diff
changeset
|
186 followed by N chunks constituting the *delta group* for this file. The |
9f169b7f53d5
help: fix internals.changegroups
Kyle Lippincott <spectral@google.com>
parents:
29759
diff
changeset
|
187 *empty chunk* at the end of each *delta group* denotes the boundary to the |
9f169b7f53d5
help: fix internals.changegroups
Kyle Lippincott <spectral@google.com>
parents:
29759
diff
changeset
|
188 next filelog sub-segment. |