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