Show More
@@ -0,0 +1,97 b'' | |||
|
1 | Bundles | |
|
2 | ======= | |
|
3 | ||
|
4 | A bundle is a container for repository data. | |
|
5 | ||
|
6 | Bundles are used as standalone files as well as the interchange format | |
|
7 | over the wire protocol used when two Mercurial peers communicate with | |
|
8 | each other. | |
|
9 | ||
|
10 | Headers | |
|
11 | ------- | |
|
12 | ||
|
13 | Bundles produced since Mercurial 0.7 (September 2005) have a 4 byte | |
|
14 | header identifying the major bundle type. The header always begins with | |
|
15 | ``HG`` and the follow 2 bytes indicate the bundle type/version. Some | |
|
16 | bundle types have additional data after this 4 byte header. | |
|
17 | ||
|
18 | The following sections describe each bundle header/type. | |
|
19 | ||
|
20 | HG10 | |
|
21 | ---- | |
|
22 | ||
|
23 | ``HG10`` headers indicate a *changegroup bundle*. This is the original | |
|
24 | bundle format, so it is sometimes referred to as *bundle1*. It has been | |
|
25 | present since version 0.7 (released September 2005). | |
|
26 | ||
|
27 | This header is followed by 2 bytes indicating the compression algorithm | |
|
28 | used for data that follows. All subsequent data following this | |
|
29 | compression identifier is compressed according to the algorithm/method | |
|
30 | specified. | |
|
31 | ||
|
32 | Supported algorithms include the following. | |
|
33 | ||
|
34 | ``BZ`` | |
|
35 | *bzip2* compression. | |
|
36 | ||
|
37 | Bzip2 compressors emit a leading ``BZ`` header. Mercurial uses this | |
|
38 | leading ``BZ`` as part of the bundle header. Therefore consumers | |
|
39 | of bzip2 bundles need to *seed* the bzip2 decompressor with ``BZ`` or | |
|
40 | seek the input stream back to the beginning of the algorithm component | |
|
41 | of the bundle header so that decompressor input is valid. This behavior | |
|
42 | is unique among supported compression algorithms. | |
|
43 | ||
|
44 | Supported since version 0.7 (released December 2006). | |
|
45 | ||
|
46 | ``GZ`` | |
|
47 | *zlib* compression. | |
|
48 | ||
|
49 | Supported since version 0.9.2 (released December 2006). | |
|
50 | ||
|
51 | ``UN`` | |
|
52 | *Uncompressed* or no compression. Unmodified changegroup data follows. | |
|
53 | ||
|
54 | Supported since version 0.9.2 (released December 2006). | |
|
55 | ||
|
56 | 3rd party extensions may implement their own compression. However, no | |
|
57 | authority reserves values for their compression algorithm identifiers. | |
|
58 | ||
|
59 | HG2X | |
|
60 | ---- | |
|
61 | ||
|
62 | ``HG2X`` headers (where ``X`` is any value) denote a *bundle2* bundle. | |
|
63 | Bundle2 bundles are a container format for various kinds of repository | |
|
64 | data and capabilities, beyond changegroup data (which was the only data | |
|
65 | supported by ``HG10`` bundles. | |
|
66 | ||
|
67 | ``HG20`` is currently the only defined bundle2 version. | |
|
68 | ||
|
69 | The ``HG20`` format is not yet documented here. See the inline comments | |
|
70 | in ``mercurial/exchange.py`` for now. | |
|
71 | ||
|
72 | Initial ``HG20`` support was added in Mercurial 3.0 (released May | |
|
73 | 2014). However, bundle2 bundles were hidden behind an experimental flag | |
|
74 | until version 3.5 (released August 2015), when they were enabled in the | |
|
75 | wire protocol. Various commands (including ``hg bundle``) did not | |
|
76 | support generating bundle2 files until Mercurial 3.6 (released November | |
|
77 | 2015). | |
|
78 | ||
|
79 | HGS1 | |
|
80 | ---- | |
|
81 | ||
|
82 | *Experimental* | |
|
83 | ||
|
84 | A ``HGS1`` header indicates a *streaming clone bundle*. This is a bundle | |
|
85 | that contains raw revlog data from a repository store. (Typically revlog | |
|
86 | data is exchanged in the form of changegroups.) | |
|
87 | ||
|
88 | The purpose of *streaming clone bundles* are to *clone* repository data | |
|
89 | very efficiently. | |
|
90 | ||
|
91 | The ``HGS1`` header is always followed by 2 bytes indicating a | |
|
92 | compression algorithm of the data that follows. Only ``UN`` | |
|
93 | (uncompressed data) is currently allowed. | |
|
94 | ||
|
95 | ``HGS1UN`` support was added as an experimental feature in version 3.6 | |
|
96 | (released November 2015) as part of the initial offering of the *clone | |
|
97 | bundles* feature. |
General Comments 0
You need to be logged in to leave comments.
Login now