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 |