Mercurial > hg
comparison hgext/clonebundles.py @ 27886:0288e63ea3be
clonebundles: improve BUNDLESPEC documentation
Before the existence of `hg debugbundle --spec`, the process for
defining the BUNDLESPEC value in manifests was not very clear and not
trivial to automate, especially in the case of stream clone bundles.
This patch adds documentation to note the existence of
`hg debugbundle --spec`. We drop the reference to stream clone
requirements handling because it is now redundant with
`hg debugbundle --spec`. While we are here, we further reinforce the
importance of defining BUNDLESPEC.
author | Gregory Szorc <gregory.szorc@gmail.com> |
---|---|
date | Thu, 14 Jan 2016 22:50:55 -0800 |
parents | a0e783d26e81 |
children | 7fa139eaebb4 |
comparison
equal
deleted
inserted
replaced
27885:2370c66110cb | 27886:0288e63ea3be |
---|---|
68 Typically, a newer server can serve data that is compatible with older clients. | 68 Typically, a newer server can serve data that is compatible with older clients. |
69 However, *streaming clone bundles* don't have this guarantee. **Server | 69 However, *streaming clone bundles* don't have this guarantee. **Server |
70 operators need to be aware that newer versions of Mercurial may produce | 70 operators need to be aware that newer versions of Mercurial may produce |
71 streaming clone bundles incompatible with older Mercurial versions.** | 71 streaming clone bundles incompatible with older Mercurial versions.** |
72 | 72 |
73 The list of requirements printed by :hg:`debugcreatestreamclonebundle` should | |
74 be specified in the ``requirements`` parameter of the *bundle specification | |
75 string* for the ``BUNDLESPEC`` manifest property described below. e.g. | |
76 ``BUNDLESPEC=none-packed1;requirements%3Drevlogv1``. | |
77 | |
78 A server operator is responsible for creating a ``.hg/clonebundles.manifest`` | 73 A server operator is responsible for creating a ``.hg/clonebundles.manifest`` |
79 file containing the list of available bundle files suitable for seeding | 74 file containing the list of available bundle files suitable for seeding |
80 clones. If this file does not exist, the repository will not advertise the | 75 clones. If this file does not exist, the repository will not advertise the |
81 existence of clone bundles when clients connect. | 76 existence of clone bundles when clients connect. |
82 | 77 |
106 | 101 |
107 The values are parsed in strict mode, which means they must be of the | 102 The values are parsed in strict mode, which means they must be of the |
108 "<compression>-<type>" form. See | 103 "<compression>-<type>" form. See |
109 mercurial.exchange.parsebundlespec() for more details. | 104 mercurial.exchange.parsebundlespec() for more details. |
110 | 105 |
106 :hg:`debugbundle --spec` can be used to print the bundle specification | |
107 string for a bundle file. The output of this command can be used verbatim | |
108 for the value of ``BUNDLESPEC`` (it is already escaped). | |
109 | |
111 Clients will automatically filter out specifications that are unknown or | 110 Clients will automatically filter out specifications that are unknown or |
112 unsupported so they won't attempt to download something that likely won't | 111 unsupported so they won't attempt to download something that likely won't |
113 apply. | 112 apply. |
114 | 113 |
115 The actual value doesn't impact client behavior beyond filtering: | 114 The actual value doesn't impact client behavior beyond filtering: |
116 clients will still sniff the bundle type from the header of downloaded | 115 clients will still sniff the bundle type from the header of downloaded |
117 files. | 116 files. |
118 | 117 |
119 **Use of this key is highly recommended**, as it allows clients to | 118 **Use of this key is highly recommended**, as it allows clients to |
120 easily skip unsupported bundles. | 119 easily skip unsupported bundles. If this key is not defined, an old |
120 client may attempt to apply a bundle that it is incapable of reading. | |
121 | 121 |
122 REQUIRESNI | 122 REQUIRESNI |
123 Whether Server Name Indication (SNI) is required to connect to the URL. | 123 Whether Server Name Indication (SNI) is required to connect to the URL. |
124 SNI allows servers to use multiple certificates on the same IP. It is | 124 SNI allows servers to use multiple certificates on the same IP. It is |
125 somewhat common in CDNs and other hosting providers. Older Python | 125 somewhat common in CDNs and other hosting providers. Older Python |