annotate mercurial/statichttprepo.py @ 51863:f4733654f144

typing: add `from __future__ import annotations` to most files Now that py36 is no longer supported, we can postpone annotation evaluation. This means that the quoting is usually optional (for things imported under the guard of `if typing.TYPE_CHECKING:` to avoid circular imports), and there's less overhead on startup[1]. There may be some missing here. I backed out 6000f5b25c9b (which removed the `from __future__ import ...` that was supporting py2), reverted the changes in `contrib/`, `doc/`, and `tests/`, and then ran: $ hg status -n --change . | \ xargs sed -i -e 's/from __future__ import .*$/from __future__ import annotations/' There were some minor tweaks needed when reviewing (mostly making the spacing around the import consistent, and `mercurial/testing/__init__.py` had a multiline import that wasn't fully rewritten. [1] https://docs.python.org/3/whatsnew/3.7.html#pep-563-postponed-evaluation-of-annotations
author Matt Harbison <matt_harbison@yahoo.com>
date Mon, 16 Sep 2024 15:36:44 +0200
parents 0338fb200a30
children f79f98733a5b
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1101
2cf5c8a4eae5 Separate out old-http support
mpm@selenic.com
parents:
diff changeset
1 # statichttprepo.py - simple http repository class for mercurial
2cf5c8a4eae5 Separate out old-http support
mpm@selenic.com
parents:
diff changeset
2 #
2cf5c8a4eae5 Separate out old-http support
mpm@selenic.com
parents:
diff changeset
3 # This provides read-only repo access to repositories exported via static http
2cf5c8a4eae5 Separate out old-http support
mpm@selenic.com
parents:
diff changeset
4 #
46819
d4ba4d51f85f contributor: change mentions of mpm to olivia
Raphaël Gomès <rgomes@octobus.net>
parents: 46780
diff changeset
5 # Copyright 2005-2007 Olivia Mackall <olivia@selenic.com>
1101
2cf5c8a4eae5 Separate out old-http support
mpm@selenic.com
parents:
diff changeset
6 #
8225
46293a0c7e9f updated license to be explicit about GPL version 2
Martin Geisler <mg@lazybytes.net>
parents: 7873
diff changeset
7 # This software may be used and distributed according to the terms of the
10263
25e572394f5c Update license to GPLv2+
Matt Mackall <mpm@selenic.com>
parents: 9146
diff changeset
8 # GNU General Public License version 2 or any later version.
1101
2cf5c8a4eae5 Separate out old-http support
mpm@selenic.com
parents:
diff changeset
9
51863
f4733654f144 typing: add `from __future__ import annotations` to most files
Matt Harbison <matt_harbison@yahoo.com>
parents: 51826
diff changeset
10 from __future__ import annotations
25978
762f4c6df6b1 statichttprepo: use absolute_import
Gregory Szorc <gregory.szorc@gmail.com>
parents: 25670
diff changeset
11
762f4c6df6b1 statichttprepo: use absolute_import
Gregory Szorc <gregory.szorc@gmail.com>
parents: 25670
diff changeset
12 import errno
762f4c6df6b1 statichttprepo: use absolute_import
Gregory Szorc <gregory.szorc@gmail.com>
parents: 25670
diff changeset
13
762f4c6df6b1 statichttprepo: use absolute_import
Gregory Szorc <gregory.szorc@gmail.com>
parents: 25670
diff changeset
14 from .i18n import _
46780
6266d19556ad node: introduce nodeconstants class
Joerg Sonnenberger <joerg@bec.de>
parents: 46713
diff changeset
15 from .node import sha1nodeconstants
25978
762f4c6df6b1 statichttprepo: use absolute_import
Gregory Szorc <gregory.szorc@gmail.com>
parents: 25670
diff changeset
16 from . import (
41615
328ca3b9e545 branchmap: encapsulate cache updating in the map itself
Martijn Pieters <mj@octobus.net>
parents: 41407
diff changeset
17 branchmap,
25978
762f4c6df6b1 statichttprepo: use absolute_import
Gregory Szorc <gregory.szorc@gmail.com>
parents: 25670
diff changeset
18 changelog,
762f4c6df6b1 statichttprepo: use absolute_import
Gregory Szorc <gregory.szorc@gmail.com>
parents: 25670
diff changeset
19 error,
762f4c6df6b1 statichttprepo: use absolute_import
Gregory Szorc <gregory.szorc@gmail.com>
parents: 25670
diff changeset
20 localrepo,
762f4c6df6b1 statichttprepo: use absolute_import
Gregory Szorc <gregory.szorc@gmail.com>
parents: 25670
diff changeset
21 manifest,
762f4c6df6b1 statichttprepo: use absolute_import
Gregory Szorc <gregory.szorc@gmail.com>
parents: 25670
diff changeset
22 namespaces,
34943
3423f7e2d287 statichttprepo: do not use platform path separator to build a URL
Yuya Nishihara <yuya@tcha.org>
parents: 33604
diff changeset
23 pathutil,
41407
6e9bebb65ce7 statichttprepo: use str to appease Python 3
Gregory Szorc <gregory.szorc@gmail.com>
parents: 41406
diff changeset
24 pycompat,
48668
4a9570e389b2 share-safe: add support for static-http repository
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 47225
diff changeset
25 requirements as requirementsmod,
25978
762f4c6df6b1 statichttprepo: use absolute_import
Gregory Szorc <gregory.szorc@gmail.com>
parents: 25670
diff changeset
26 url,
762f4c6df6b1 statichttprepo: use absolute_import
Gregory Szorc <gregory.szorc@gmail.com>
parents: 25670
diff changeset
27 util,
31241
591fda751c6b vfs: use 'vfs' module directly in 'mercurial.statichttprepo'
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 31148
diff changeset
28 vfs as vfsmod,
25978
762f4c6df6b1 statichttprepo: use absolute_import
Gregory Szorc <gregory.szorc@gmail.com>
parents: 25670
diff changeset
29 )
46907
ffd3e823a7e5 urlutil: extract `url` related code from `util` into the new module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46819
diff changeset
30 from .utils import (
ffd3e823a7e5 urlutil: extract `url` related code from `util` into the new module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46819
diff changeset
31 urlutil,
ffd3e823a7e5 urlutil: extract `url` related code from `util` into the new module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46819
diff changeset
32 )
1325
57220daf40e9 Move urllib error handling from revlog into statichttprepo, where it belongs.
Bryan O'Sullivan <bos@serpentine.com>
parents: 1101
diff changeset
33
28883
032c4c2f802a pycompat: switch to util.urlreq/util.urlerr for py3 compat
timeless <timeless@mozdev.org>
parents: 27705
diff changeset
34 urlerr = util.urlerr
032c4c2f802a pycompat: switch to util.urlreq/util.urlerr for py3 compat
timeless <timeless@mozdev.org>
parents: 27705
diff changeset
35 urlreq = util.urlreq
032c4c2f802a pycompat: switch to util.urlreq/util.urlerr for py3 compat
timeless <timeless@mozdev.org>
parents: 27705
diff changeset
36
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43025
diff changeset
37
48946
642e31cb55f0 py3: use class X: instead of class X(object):
Gregory Szorc <gregory.szorc@gmail.com>
parents: 48875
diff changeset
38 class httprangereader:
7274
95f3694cc5a4 statichttprepo: cleanups, use url.py (proxy, password support)
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 7211
diff changeset
39 def __init__(self, url, opener):
95f3694cc5a4 statichttprepo: cleanups, use url.py (proxy, password support)
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 7211
diff changeset
40 # we assume opener has HTTPRangeHandler
95f3694cc5a4 statichttprepo: cleanups, use url.py (proxy, password support)
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 7211
diff changeset
41 self.url = url
95f3694cc5a4 statichttprepo: cleanups, use url.py (proxy, password support)
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 7211
diff changeset
42 self.pos = 0
95f3694cc5a4 statichttprepo: cleanups, use url.py (proxy, password support)
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 7211
diff changeset
43 self.opener = opener
11066
26abd91d9e84 static-http: mimic more closely localrepo (issue2164: allow clone -r )
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents: 10263
diff changeset
44 self.name = url
27705
2380889f8f52 statichttprepo: implement __enter__ and __exit__ on httprangeheader
Gregory Szorc <gregory.szorc@gmail.com>
parents: 26587
diff changeset
45
2380889f8f52 statichttprepo: implement __enter__ and __exit__ on httprangeheader
Gregory Szorc <gregory.szorc@gmail.com>
parents: 26587
diff changeset
46 def __enter__(self):
2380889f8f52 statichttprepo: implement __enter__ and __exit__ on httprangeheader
Gregory Szorc <gregory.szorc@gmail.com>
parents: 26587
diff changeset
47 return self
2380889f8f52 statichttprepo: implement __enter__ and __exit__ on httprangeheader
Gregory Szorc <gregory.szorc@gmail.com>
parents: 26587
diff changeset
48
2380889f8f52 statichttprepo: implement __enter__ and __exit__ on httprangeheader
Gregory Szorc <gregory.szorc@gmail.com>
parents: 26587
diff changeset
49 def __exit__(self, exc_type, exc_value, traceback):
2380889f8f52 statichttprepo: implement __enter__ and __exit__ on httprangeheader
Gregory Szorc <gregory.szorc@gmail.com>
parents: 26587
diff changeset
50 self.close()
2380889f8f52 statichttprepo: implement __enter__ and __exit__ on httprangeheader
Gregory Szorc <gregory.szorc@gmail.com>
parents: 26587
diff changeset
51
7274
95f3694cc5a4 statichttprepo: cleanups, use url.py (proxy, password support)
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 7211
diff changeset
52 def seek(self, pos):
95f3694cc5a4 statichttprepo: cleanups, use url.py (proxy, password support)
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 7211
diff changeset
53 self.pos = pos
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43025
diff changeset
54
7274
95f3694cc5a4 statichttprepo: cleanups, use url.py (proxy, password support)
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 7211
diff changeset
55 def read(self, bytes=None):
41407
6e9bebb65ce7 statichttprepo: use str to appease Python 3
Gregory Szorc <gregory.szorc@gmail.com>
parents: 41406
diff changeset
56 req = urlreq.request(pycompat.strurl(self.url))
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
57 end = b''
7274
95f3694cc5a4 statichttprepo: cleanups, use url.py (proxy, password support)
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 7211
diff changeset
58 if bytes:
95f3694cc5a4 statichttprepo: cleanups, use url.py (proxy, password support)
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 7211
diff changeset
59 end = self.pos + bytes - 1
16882
a2d6e336e9cc statichttprepo: don't send Range header when requesting entire file
Alexander Boyd <alex@opengroove.org>
parents: 16115
diff changeset
60 if self.pos or end:
43506
9f70512ae2cf cleanup: remove pointless r-prefixes on single-quoted strings
Augie Fackler <augie@google.com>
parents: 43077
diff changeset
61 req.add_header('Range', 'bytes=%d-%s' % (self.pos, end))
7274
95f3694cc5a4 statichttprepo: cleanups, use url.py (proxy, password support)
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 7211
diff changeset
62
1325
57220daf40e9 Move urllib error handling from revlog into statichttprepo, where it belongs.
Bryan O'Sullivan <bos@serpentine.com>
parents: 1101
diff changeset
63 try:
7274
95f3694cc5a4 statichttprepo: cleanups, use url.py (proxy, password support)
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 7211
diff changeset
64 f = self.opener.open(req)
95f3694cc5a4 statichttprepo: cleanups, use url.py (proxy, password support)
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 7211
diff changeset
65 data = f.read()
25196
7a1af58ab242 statichttprepo: remove wrong getattr ladder
Augie Fackler <raf@durin42.com>
parents: 24377
diff changeset
66 code = f.code
28883
032c4c2f802a pycompat: switch to util.urlreq/util.urlerr for py3 compat
timeless <timeless@mozdev.org>
parents: 27705
diff changeset
67 except urlerr.httperror as inst:
6028
6605a03cbf87 make static-http work with empty repos (issue965)
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents: 5321
diff changeset
68 num = inst.code == 404 and errno.ENOENT or None
46202
5135b393884b statichttprepo: explicitly convert error message to str (issue6247)
Joerg Sonnenberger <joerg@bec.de>
parents: 45434
diff changeset
69 # Explicitly convert the exception to str as Py3 will try
5135b393884b statichttprepo: explicitly convert error message to str (issue6247)
Joerg Sonnenberger <joerg@bec.de>
parents: 45434
diff changeset
70 # convert it to local encoding and with as the HTTPResponse
5135b393884b statichttprepo: explicitly convert error message to str (issue6247)
Joerg Sonnenberger <joerg@bec.de>
parents: 45434
diff changeset
71 # instance doesn't support encode.
5135b393884b statichttprepo: explicitly convert error message to str (issue6247)
Joerg Sonnenberger <joerg@bec.de>
parents: 45434
diff changeset
72 raise IOError(num, str(inst))
28883
032c4c2f802a pycompat: switch to util.urlreq/util.urlerr for py3 compat
timeless <timeless@mozdev.org>
parents: 27705
diff changeset
73 except urlerr.urlerror as inst:
41406
2bf689b13a17 statichttprepo: use URLError.reason directly
Gregory Szorc <gregory.szorc@gmail.com>
parents: 41038
diff changeset
74 raise IOError(None, inst.reason)
1101
2cf5c8a4eae5 Separate out old-http support
mpm@selenic.com
parents:
diff changeset
75
8612
e10e984bea46 statichttprepo: handle remote not supporting Range headers
Patrick Mezard <pmezard@gmail.com>
parents: 8225
diff changeset
76 if code == 200:
e10e984bea46 statichttprepo: handle remote not supporting Range headers
Patrick Mezard <pmezard@gmail.com>
parents: 8225
diff changeset
77 # HTTPRangeHandler does nothing if remote does not support
e10e984bea46 statichttprepo: handle remote not supporting Range headers
Patrick Mezard <pmezard@gmail.com>
parents: 8225
diff changeset
78 # Range headers and returns the full entity. Let's slice it.
e10e984bea46 statichttprepo: handle remote not supporting Range headers
Patrick Mezard <pmezard@gmail.com>
parents: 8225
diff changeset
79 if bytes:
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43025
diff changeset
80 data = data[self.pos : self.pos + bytes]
8612
e10e984bea46 statichttprepo: handle remote not supporting Range headers
Patrick Mezard <pmezard@gmail.com>
parents: 8225
diff changeset
81 else:
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43025
diff changeset
82 data = data[self.pos :]
8612
e10e984bea46 statichttprepo: handle remote not supporting Range headers
Patrick Mezard <pmezard@gmail.com>
parents: 8225
diff changeset
83 elif bytes:
7274
95f3694cc5a4 statichttprepo: cleanups, use url.py (proxy, password support)
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 7211
diff changeset
84 data = data[:bytes]
8612
e10e984bea46 statichttprepo: handle remote not supporting Range headers
Patrick Mezard <pmezard@gmail.com>
parents: 8225
diff changeset
85 self.pos += len(data)
7274
95f3694cc5a4 statichttprepo: cleanups, use url.py (proxy, password support)
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 7211
diff changeset
86 return data
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43025
diff changeset
87
20055
6bb9de1e4d16 statichttprepo.httprangeheader: implement readlines
Siddharth Agarwal <sid0@fb.com>
parents: 20054
diff changeset
88 def readlines(self):
6bb9de1e4d16 statichttprepo.httprangeheader: implement readlines
Siddharth Agarwal <sid0@fb.com>
parents: 20054
diff changeset
89 return self.read().splitlines(True)
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43025
diff changeset
90
11066
26abd91d9e84 static-http: mimic more closely localrepo (issue2164: allow clone -r )
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents: 10263
diff changeset
91 def __iter__(self):
20055
6bb9de1e4d16 statichttprepo.httprangeheader: implement readlines
Siddharth Agarwal <sid0@fb.com>
parents: 20054
diff changeset
92 return iter(self.readlines())
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43025
diff changeset
93
11066
26abd91d9e84 static-http: mimic more closely localrepo (issue2164: allow clone -r )
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents: 10263
diff changeset
94 def close(self):
26abd91d9e84 static-http: mimic more closely localrepo (issue2164: allow clone -r )
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents: 10263
diff changeset
95 pass
7274
95f3694cc5a4 statichttprepo: cleanups, use url.py (proxy, password support)
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 7211
diff changeset
96
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43025
diff changeset
97
36425
24c2c760c1cb statichttprepo: move HTTPRangeHandler from byterange and delete the latter
Augie Fackler <augie@google.com>
parents: 35248
diff changeset
98 # _RangeError and _HTTPRangeHandler were originally in byterange.py,
24c2c760c1cb statichttprepo: move HTTPRangeHandler from byterange and delete the latter
Augie Fackler <augie@google.com>
parents: 35248
diff changeset
99 # which was itself extracted from urlgrabber. See the last version of
24c2c760c1cb statichttprepo: move HTTPRangeHandler from byterange and delete the latter
Augie Fackler <augie@google.com>
parents: 35248
diff changeset
100 # byterange.py from history if you need more information.
24c2c760c1cb statichttprepo: move HTTPRangeHandler from byterange and delete the latter
Augie Fackler <augie@google.com>
parents: 35248
diff changeset
101 class _RangeError(IOError):
24c2c760c1cb statichttprepo: move HTTPRangeHandler from byterange and delete the latter
Augie Fackler <augie@google.com>
parents: 35248
diff changeset
102 """Error raised when an unsatisfiable range is requested."""
24c2c760c1cb statichttprepo: move HTTPRangeHandler from byterange and delete the latter
Augie Fackler <augie@google.com>
parents: 35248
diff changeset
103
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43025
diff changeset
104
36425
24c2c760c1cb statichttprepo: move HTTPRangeHandler from byterange and delete the latter
Augie Fackler <augie@google.com>
parents: 35248
diff changeset
105 class _HTTPRangeHandler(urlreq.basehandler):
24c2c760c1cb statichttprepo: move HTTPRangeHandler from byterange and delete the latter
Augie Fackler <augie@google.com>
parents: 35248
diff changeset
106 """Handler that enables HTTP Range headers.
24c2c760c1cb statichttprepo: move HTTPRangeHandler from byterange and delete the latter
Augie Fackler <augie@google.com>
parents: 35248
diff changeset
107
24c2c760c1cb statichttprepo: move HTTPRangeHandler from byterange and delete the latter
Augie Fackler <augie@google.com>
parents: 35248
diff changeset
108 This was extremely simple. The Range header is a HTTP feature to
24c2c760c1cb statichttprepo: move HTTPRangeHandler from byterange and delete the latter
Augie Fackler <augie@google.com>
parents: 35248
diff changeset
109 begin with so all this class does is tell urllib2 that the
24c2c760c1cb statichttprepo: move HTTPRangeHandler from byterange and delete the latter
Augie Fackler <augie@google.com>
parents: 35248
diff changeset
110 "206 Partial Content" response from the HTTP server is what we
24c2c760c1cb statichttprepo: move HTTPRangeHandler from byterange and delete the latter
Augie Fackler <augie@google.com>
parents: 35248
diff changeset
111 expected.
24c2c760c1cb statichttprepo: move HTTPRangeHandler from byterange and delete the latter
Augie Fackler <augie@google.com>
parents: 35248
diff changeset
112 """
24c2c760c1cb statichttprepo: move HTTPRangeHandler from byterange and delete the latter
Augie Fackler <augie@google.com>
parents: 35248
diff changeset
113
24c2c760c1cb statichttprepo: move HTTPRangeHandler from byterange and delete the latter
Augie Fackler <augie@google.com>
parents: 35248
diff changeset
114 def http_error_206(self, req, fp, code, msg, hdrs):
24c2c760c1cb statichttprepo: move HTTPRangeHandler from byterange and delete the latter
Augie Fackler <augie@google.com>
parents: 35248
diff changeset
115 # 206 Partial Content Response
24c2c760c1cb statichttprepo: move HTTPRangeHandler from byterange and delete the latter
Augie Fackler <augie@google.com>
parents: 35248
diff changeset
116 r = urlreq.addinfourl(fp, hdrs, req.get_full_url())
24c2c760c1cb statichttprepo: move HTTPRangeHandler from byterange and delete the latter
Augie Fackler <augie@google.com>
parents: 35248
diff changeset
117 r.code = code
24c2c760c1cb statichttprepo: move HTTPRangeHandler from byterange and delete the latter
Augie Fackler <augie@google.com>
parents: 35248
diff changeset
118 r.msg = msg
24c2c760c1cb statichttprepo: move HTTPRangeHandler from byterange and delete the latter
Augie Fackler <augie@google.com>
parents: 35248
diff changeset
119 return r
24c2c760c1cb statichttprepo: move HTTPRangeHandler from byterange and delete the latter
Augie Fackler <augie@google.com>
parents: 35248
diff changeset
120
24c2c760c1cb statichttprepo: move HTTPRangeHandler from byterange and delete the latter
Augie Fackler <augie@google.com>
parents: 35248
diff changeset
121 def http_error_416(self, req, fp, code, msg, hdrs):
24c2c760c1cb statichttprepo: move HTTPRangeHandler from byterange and delete the latter
Augie Fackler <augie@google.com>
parents: 35248
diff changeset
122 # HTTP's Range Not Satisfiable error
50379
3eacb4a54313 statichttprepo: unbyteify several IOError messages
Matt Harbison <matt_harbison@yahoo.com>
parents: 50378
diff changeset
123 raise _RangeError('Requested Range Not Satisfiable')
36425
24c2c760c1cb statichttprepo: move HTTPRangeHandler from byterange and delete the latter
Augie Fackler <augie@google.com>
parents: 35248
diff changeset
124
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43025
diff changeset
125
7274
95f3694cc5a4 statichttprepo: cleanups, use url.py (proxy, password support)
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 7211
diff changeset
126 def build_opener(ui, authinfo):
95f3694cc5a4 statichttprepo: cleanups, use url.py (proxy, password support)
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 7211
diff changeset
127 # urllib cannot handle URLs with embedded user or passwd
95f3694cc5a4 statichttprepo: cleanups, use url.py (proxy, password support)
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 7211
diff changeset
128 urlopener = url.opener(ui, authinfo)
36425
24c2c760c1cb statichttprepo: move HTTPRangeHandler from byterange and delete the latter
Augie Fackler <augie@google.com>
parents: 35248
diff changeset
129 urlopener.add_handler(_HTTPRangeHandler())
7274
95f3694cc5a4 statichttprepo: cleanups, use url.py (proxy, password support)
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 7211
diff changeset
130
31241
591fda751c6b vfs: use 'vfs' module directly in 'mercurial.statichttprepo'
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 31148
diff changeset
131 class statichttpvfs(vfsmod.abstractvfs):
14091
0aa60e4e0b76 statichttprepo: make the opener a subclass of abstractopener
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents: 14076
diff changeset
132 def __init__(self, base):
0aa60e4e0b76 statichttprepo: make the opener a subclass of abstractopener
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents: 14076
diff changeset
133 self.base = base
43025
3518da504303 vfs: give all vfs an options attribute by default
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 42231
diff changeset
134 self.options = {}
14091
0aa60e4e0b76 statichttprepo: make the opener a subclass of abstractopener
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents: 14076
diff changeset
135
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
136 def __call__(self, path, mode=b'r', *args, **kw):
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
137 if mode not in (b'r', b'rb'):
50379
3eacb4a54313 statichttprepo: unbyteify several IOError messages
Matt Harbison <matt_harbison@yahoo.com>
parents: 50378
diff changeset
138 raise IOError('Permission denied')
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
139 f = b"/".join((self.base, urlreq.quote(path)))
7274
95f3694cc5a4 statichttprepo: cleanups, use url.py (proxy, password support)
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 7211
diff changeset
140 return httprangereader(f, urlopener)
95f3694cc5a4 statichttprepo: cleanups, use url.py (proxy, password support)
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 7211
diff changeset
141
50378
ebf1a07539b9 statichttprepo: fix the vfs.join() method to match the base class definition
Matt Harbison <matt_harbison@yahoo.com>
parents: 50128
diff changeset
142 def join(self, path, *insidef):
17725
ffd589d4b785 vfs: define "join()" in each classes derived from "abstractvfs"
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 17649
diff changeset
143 if path:
50378
ebf1a07539b9 statichttprepo: fix the vfs.join() method to match the base class definition
Matt Harbison <matt_harbison@yahoo.com>
parents: 50128
diff changeset
144 return pathutil.join(self.base, path, *insidef)
17725
ffd589d4b785 vfs: define "join()" in each classes derived from "abstractvfs"
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 17649
diff changeset
145 else:
ffd589d4b785 vfs: define "join()" in each classes derived from "abstractvfs"
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 17649
diff changeset
146 return self.base
ffd589d4b785 vfs: define "join()" in each classes derived from "abstractvfs"
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 17649
diff changeset
147
17649
f65c6a5f256c scmutil: rename classes from "opener" to "vfs"
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 17193
diff changeset
148 return statichttpvfs
1101
2cf5c8a4eae5 Separate out old-http support
mpm@selenic.com
parents:
diff changeset
149
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43025
diff changeset
150
17192
1ac628cd7113 peer: introduce real peer classes
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 17156
diff changeset
151 class statichttppeer(localrepo.localpeer):
1ac628cd7113 peer: introduce real peer classes
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 17156
diff changeset
152 def local(self):
1ac628cd7113 peer: introduce real peer classes
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 17156
diff changeset
153 return None
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43025
diff changeset
154
17193
1d710fe5ee0e peer: introduce canpush and improve error message
Sune Foldager <cryo@cyanite.org>
parents: 17192
diff changeset
155 def canpush(self):
1d710fe5ee0e peer: introduce canpush and improve error message
Sune Foldager <cryo@cyanite.org>
parents: 17192
diff changeset
156 return False
17192
1ac628cd7113 peer: introduce real peer classes
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 17156
diff changeset
157
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43025
diff changeset
158
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43025
diff changeset
159 class statichttprepository(
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43025
diff changeset
160 localrepo.localrepository, localrepo.revlogfilestorage
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43025
diff changeset
161 ):
19778
55ef79031009 localrepo: make supported features manageable in each repositories individually
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 18915
diff changeset
162 supported = localrepo.localrepository._basesupported
55ef79031009 localrepo: make supported features manageable in each repositories individually
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 18915
diff changeset
163
51826
0338fb200a30 typing: lock in new pytype gains from making revlog related classes typeable
Matt Harbison <matt_harbison@yahoo.com>
parents: 51286
diff changeset
164 manifestlog: manifest.ManifestLog
0338fb200a30 typing: lock in new pytype gains from making revlog related classes typeable
Matt Harbison <matt_harbison@yahoo.com>
parents: 51286
diff changeset
165
1101
2cf5c8a4eae5 Separate out old-http support
mpm@selenic.com
parents:
diff changeset
166 def __init__(self, ui, path):
2673
109a22f5434a hooks: add url to changegroup, incoming, prechangegroup, pretxnchangegroup hooks
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2072
diff changeset
167 self._url = path
1101
2cf5c8a4eae5 Separate out old-http support
mpm@selenic.com
parents:
diff changeset
168 self.ui = ui
3853
c0b449154a90 switch to the .hg/store layout, fix the tests
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 3851
diff changeset
169
11066
26abd91d9e84 static-http: mimic more closely localrepo (issue2164: allow clone -r )
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents: 10263
diff changeset
170 self.root = path
46907
ffd3e823a7e5 urlutil: extract `url` related code from `util` into the new module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46819
diff changeset
171 u = urlutil.url(path.rstrip(b'/') + b"/.hg")
13819
d16894e29f91 httprepo/sshrepo: use url.url
Brodie Rao <brodie@bitheap.org>
parents: 13533
diff changeset
172 self.path, authinfo = u.authinfo()
7274
95f3694cc5a4 statichttprepo: cleanups, use url.py (proxy, password support)
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 7211
diff changeset
173
31147
e04ab2a5bf90 statichttp: use 'repo.vfs' as the main attribute
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30219
diff changeset
174 vfsclass = build_opener(ui, authinfo)
e04ab2a5bf90 statichttp: use 'repo.vfs' as the main attribute
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30219
diff changeset
175 self.vfs = vfsclass(self.path)
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
176 self.cachevfs = vfsclass(self.vfs.join(b'cache'))
15922
23921c17299a phases: mechanism to allow extension to alter initial computation of phase
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents: 14962
diff changeset
177 self._phasedefaults = []
6028
6605a03cbf87 make static-http work with empty repos (issue965)
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents: 5321
diff changeset
178
23561
3c2419e07df5 namespaces: remove weakref; always pass in repo
Ryan McElroy <rmcelroy@fb.com>
parents: 23558
diff changeset
179 self.names = namespaces.namespaces()
32730
b8ff7d0ff361 localrepo: move filtername to __init__
Gregory Szorc <gregory.szorc@gmail.com>
parents: 31241
diff changeset
180 self.filtername = None
42231
d345627d104b repoview: introduce a `experimental.extra-filter-revs` config
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 41615
diff changeset
181 self._extrafilterid = None
46713
bc2519513ae0 sidedata-exchange: add `wanted_sidedata` and `sidedata_computers` to repos
Raphaël Gomès <rgomes@octobus.net>
parents: 46202
diff changeset
182 self._wanted_sidedata = set()
47225
d00177d08139 statichttp: add the missing `features` attribute
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46907
diff changeset
183 self.features = set()
23558
3198aac7a95d namespaces: add bookmarks to the names data structure
Sean Farley <sean.michael.farley@gmail.com>
parents: 23552
diff changeset
184
3851
8f18e31c4441 add "requires" file to the repo, specifying the requirements
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 3794
diff changeset
185 try:
39694
6192980553b4 statichttprepo: use new functions for requirements validation
Gregory Szorc <gregory.szorc@gmail.com>
parents: 39549
diff changeset
186 requirements = set(self.vfs.read(b'requires').splitlines())
49306
2e726c934fcd py3: catch FileNotFoundError instead of checking errno == ENOENT
Manuel Jacob <me@manueljacob.de>
parents: 48946
diff changeset
187 except FileNotFoundError:
14482
58b36e9ea783 introduce new function scmutil.readrequires
Adrian Buehlmann <adrian@cadifra.com>
parents: 14168
diff changeset
188 requirements = set()
58b36e9ea783 introduce new function scmutil.readrequires
Adrian Buehlmann <adrian@cadifra.com>
parents: 14168
diff changeset
189
7178
98b6c3dde237 Fix Debian bug #494889 (fetching from static-http://... broken)
Thomas Arendsen Hein <thomas@intevation.de>
parents: 6312
diff changeset
190 # check if it is a non-empty old-style repository
98b6c3dde237 Fix Debian bug #494889 (fetching from static-http://... broken)
Thomas Arendsen Hein <thomas@intevation.de>
parents: 6312
diff changeset
191 try:
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
192 fp = self.vfs(b"00changelog.i")
13400
14f3795a5ed7 explicitly close files
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents: 13253
diff changeset
193 fp.read(1)
14f3795a5ed7 explicitly close files
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents: 13253
diff changeset
194 fp.close()
49306
2e726c934fcd py3: catch FileNotFoundError instead of checking errno == ENOENT
Manuel Jacob <me@manueljacob.de>
parents: 48946
diff changeset
195 except FileNotFoundError:
7178
98b6c3dde237 Fix Debian bug #494889 (fetching from static-http://... broken)
Thomas Arendsen Hein <thomas@intevation.de>
parents: 6312
diff changeset
196 # we do not care about empty old-style repositories here
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
197 msg = _(b"'%s' does not appear to be an hg repository") % path
7637
1d54e2f6c0b7 error: move repo errors
Matt Mackall <mpm@selenic.com>
parents: 7274
diff changeset
198 raise error.RepoError(msg)
48668
4a9570e389b2 share-safe: add support for static-http repository
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 47225
diff changeset
199 if requirementsmod.SHARESAFE_REQUIREMENT in requirements:
4a9570e389b2 share-safe: add support for static-http repository
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 47225
diff changeset
200 storevfs = vfsclass(self.vfs.join(b'store'))
4a9570e389b2 share-safe: add support for static-http repository
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 47225
diff changeset
201 requirements |= set(storevfs.read(b'requires').splitlines())
3851
8f18e31c4441 add "requires" file to the repo, specifying the requirements
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 3794
diff changeset
202
39694
6192980553b4 statichttprepo: use new functions for requirements validation
Gregory Szorc <gregory.szorc@gmail.com>
parents: 39549
diff changeset
203 supportedrequirements = localrepo.gathersupportedrequirements(ui)
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43025
diff changeset
204 localrepo.ensurerequirementsrecognized(
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43025
diff changeset
205 requirements, supportedrequirements
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43025
diff changeset
206 )
39695
cb2dcfa5cade localrepo: move requirements reasonability testing to own function
Gregory Szorc <gregory.szorc@gmail.com>
parents: 39694
diff changeset
207 localrepo.ensurerequirementscompatible(ui, requirements)
46780
6266d19556ad node: introduce nodeconstants class
Joerg Sonnenberger <joerg@bec.de>
parents: 46713
diff changeset
208 self.nodeconstants = sha1nodeconstants
6266d19556ad node: introduce nodeconstants class
Joerg Sonnenberger <joerg@bec.de>
parents: 46713
diff changeset
209 self.nullid = self.nodeconstants.nullid
39694
6192980553b4 statichttprepo: use new functions for requirements validation
Gregory Szorc <gregory.szorc@gmail.com>
parents: 39549
diff changeset
210
3851
8f18e31c4441 add "requires" file to the repo, specifying the requirements
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 3794
diff changeset
211 # setup store
39698
f44187605315 localrepo: move store() from store module
Gregory Szorc <gregory.szorc@gmail.com>
parents: 39695
diff changeset
212 self.store = localrepo.makestore(requirements, self.path, vfsclass)
6897
faea0d27e38f statichttp: use store class
Matt Mackall <mpm@selenic.com>
parents: 6840
diff changeset
213 self.spath = self.store.path
23878
37a92908a382 localrepo: remove all external users of localrepo.sopener
Angel Ezquerra <angel.ezquerra@gmail.com>
parents: 23877
diff changeset
214 self.svfs = self.store.opener
6897
faea0d27e38f statichttp: use store class
Matt Mackall <mpm@selenic.com>
parents: 6840
diff changeset
215 self.sjoin = self.store.join
16115
236bb604dc39 scmutil: update cached copy when filecached attribute is assigned (issue3263)
Idan Kamara <idankk86@gmail.com>
parents: 15922
diff changeset
216 self._filecache = {}
17192
1ac628cd7113 peer: introduce real peer classes
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 17156
diff changeset
217 self.requirements = requirements
3851
8f18e31c4441 add "requires" file to the repo, specifying the requirements
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 3794
diff changeset
218
46780
6266d19556ad node: introduce nodeconstants class
Joerg Sonnenberger <joerg@bec.de>
parents: 46713
diff changeset
219 rootmanifest = manifest.manifestrevlog(self.nodeconstants, self.svfs)
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43025
diff changeset
220 self.manifestlog = manifest.manifestlog(
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43025
diff changeset
221 self.svfs, self, rootmanifest, self.narrowmatch()
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43025
diff changeset
222 )
23878
37a92908a382 localrepo: remove all external users of localrepo.sopener
Angel Ezquerra <angel.ezquerra@gmail.com>
parents: 23877
diff changeset
223 self.changelog = changelog.changelog(self.svfs)
9146
5614a628d173 localrepo: rename in-memory tag cache instance attributes (issue548).
Greg Ward <greg-hg@gerg.ca>
parents: 8612
diff changeset
224 self._tags = None
1101
2cf5c8a4eae5 Separate out old-http support
mpm@selenic.com
parents:
diff changeset
225 self.nodetagscache = None
41615
328ca3b9e545 branchmap: encapsulate cache updating in the map itself
Martijn Pieters <mj@octobus.net>
parents: 41407
diff changeset
226 self._branchcaches = branchmap.BranchMapCache()
24373
59cc09240afb revbranchcache: move out of branchmap onto localrepo
Durham Goode <durham@fb.com>
parents: 23878
diff changeset
227 self._revbranchcache = None
1598
14d1f1868bf6 cleanup of revlog.group when repository is local
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1325
diff changeset
228 self.encodepats = None
14d1f1868bf6 cleanup of revlog.group when repository is local
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1325
diff changeset
229 self.decodepats = None
24377
656f93ce66d5 revbranchcache: move cache writing to the transaction finalizer
Durham Goode <durham@fb.com>
parents: 24373
diff changeset
230 self._transref = None
50128
2f60cd6442fd dirstate: only reload the dirstate when it may have changed
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49762
diff changeset
231 self._dirstate = None
17192
1ac628cd7113 peer: introduce real peer classes
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 17156
diff changeset
232
1ac628cd7113 peer: introduce real peer classes
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 17156
diff changeset
233 def _restrictcapabilities(self, caps):
20962
af4158b8876b statichttp: respect localrepo _restrictcapabilities
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 20055
diff changeset
234 caps = super(statichttprepository, self)._restrictcapabilities(caps)
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
235 return caps.difference([b"pushkey"])
1101
2cf5c8a4eae5 Separate out old-http support
mpm@selenic.com
parents:
diff changeset
236
2673
109a22f5434a hooks: add url to changegroup, incoming, prechangegroup, pretxnchangegroup hooks
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2072
diff changeset
237 def url(self):
7211
25c0dee16ee0 Autodetect static-http
Matt Mackall <mpm@selenic.com>
parents: 7179
diff changeset
238 return self._url
2673
109a22f5434a hooks: add url to changegroup, incoming, prechangegroup, pretxnchangegroup hooks
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2072
diff changeset
239
1101
2cf5c8a4eae5 Separate out old-http support
mpm@selenic.com
parents:
diff changeset
240 def local(self):
2cf5c8a4eae5 Separate out old-http support
mpm@selenic.com
parents:
diff changeset
241 return False
2740
386f04d6ecb3 clean up hg.py: move repo constructor code into each repo module
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2673
diff changeset
242
50440
3a2df812e1c7 pull: add --remote-hidden option and pass it through peer creation
Manuel Jacob <me@manueljacob.de>
parents: 50379
diff changeset
243 def peer(self, path=None, remotehidden=False):
3a2df812e1c7 pull: add --remote-hidden option and pass it through peer creation
Manuel Jacob <me@manueljacob.de>
parents: 50379
diff changeset
244 return statichttppeer(self, path=path, remotehidden=remotehidden)
17192
1ac628cd7113 peer: introduce real peer classes
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 17156
diff changeset
245
33604
8b00c723cee1 statichttprepo: implement wlock() (issue5613)
Gregory Szorc <gregory.szorc@gmail.com>
parents: 33533
diff changeset
246 def wlock(self, wait=True):
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43025
diff changeset
247 raise error.LockUnavailable(
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43025
diff changeset
248 0,
51286
81224afd938d lock: properly convert error to bytes
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50440
diff changeset
249 pycompat.sysstr(_(b'lock not available')),
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
250 b'lock',
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
251 _(b'cannot lock static-http repository'),
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43025
diff changeset
252 )
33604
8b00c723cee1 statichttprepo: implement wlock() (issue5613)
Gregory Szorc <gregory.szorc@gmail.com>
parents: 33533
diff changeset
253
7005
7739b61897df do not pretend to lock static-http repositories (issue994)
Martin Geisler <mg@daimi.au.dk>
parents: 6988
diff changeset
254 def lock(self, wait=True):
45434
5523e3e1bc71 statichttprepo: use LockUnavailable() instead of Abort() for lock (API)
Pulkit Goyal <7895pulkit@gmail.com>
parents: 43506
diff changeset
255 raise error.LockUnavailable(
5523e3e1bc71 statichttprepo: use LockUnavailable() instead of Abort() for lock (API)
Pulkit Goyal <7895pulkit@gmail.com>
parents: 43506
diff changeset
256 0,
51286
81224afd938d lock: properly convert error to bytes
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50440
diff changeset
257 pycompat.sysstr(_(b'lock not available')),
45434
5523e3e1bc71 statichttprepo: use LockUnavailable() instead of Abort() for lock (API)
Pulkit Goyal <7895pulkit@gmail.com>
parents: 43506
diff changeset
258 b'lock',
5523e3e1bc71 statichttprepo: use LockUnavailable() instead of Abort() for lock (API)
Pulkit Goyal <7895pulkit@gmail.com>
parents: 43506
diff changeset
259 _(b'cannot lock static-http repository'),
5523e3e1bc71 statichttprepo: use LockUnavailable() instead of Abort() for lock (API)
Pulkit Goyal <7895pulkit@gmail.com>
parents: 43506
diff changeset
260 )
7005
7739b61897df do not pretend to lock static-http repositories (issue994)
Martin Geisler <mg@daimi.au.dk>
parents: 6988
diff changeset
261
29738
c1696430254f statichttprepo: do not try to write caches
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 28883
diff changeset
262 def _writecaches(self):
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43025
diff changeset
263 pass # statichttprepository are read only
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 43025
diff changeset
264
29738
c1696430254f statichttprepo: do not try to write caches
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 28883
diff changeset
265
50440
3a2df812e1c7 pull: add --remote-hidden option and pass it through peer creation
Manuel Jacob <me@manueljacob.de>
parents: 50379
diff changeset
266 def make_peer(
3a2df812e1c7 pull: add --remote-hidden option and pass it through peer creation
Manuel Jacob <me@manueljacob.de>
parents: 50379
diff changeset
267 ui, path, create, intents=None, createopts=None, remotehidden=False
3a2df812e1c7 pull: add --remote-hidden option and pass it through peer creation
Manuel Jacob <me@manueljacob.de>
parents: 50379
diff changeset
268 ):
2740
386f04d6ecb3 clean up hg.py: move repo constructor code into each repo module
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2673
diff changeset
269 if create:
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
270 raise error.Abort(_(b'cannot create new static-http repository'))
49762
c4d587fa161c peer: pass the `path` to the statichttp peer
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49757
diff changeset
271 url = path.loc[7:]
50440
3a2df812e1c7 pull: add --remote-hidden option and pass it through peer creation
Manuel Jacob <me@manueljacob.de>
parents: 50379
diff changeset
272 return statichttprepository(ui, url).peer(
3a2df812e1c7 pull: add --remote-hidden option and pass it through peer creation
Manuel Jacob <me@manueljacob.de>
parents: 50379
diff changeset
273 path=path, remotehidden=remotehidden
3a2df812e1c7 pull: add --remote-hidden option and pass it through peer creation
Manuel Jacob <me@manueljacob.de>
parents: 50379
diff changeset
274 )