Mercurial > hg
annotate hgext/largefiles/wirestore.py @ 30886:2aaa8bfc7bd9
runtests: check ports on IPv6 address
Previously, checkportisavailable only checks ports on the IPv4 address. This
patch makes it check IPv6 as well. It'll be useful if "localhost" does not
have an IPv4 address, or its IPv4 address does not exist somehow.
author | Jun Wu <quark@fb.com> |
---|---|
date | Thu, 09 Feb 2017 05:57:54 -0800 |
parents | 28dfcf3d0ad3 |
children | 6c55ce51d6c3 |
rev | line source |
---|---|
15168 | 1 # Copyright 2010-2011 Fog Creek Software |
2 # | |
3 # This software may be used and distributed according to the terms of the | |
4 # GNU General Public License version 2 or any later version. | |
5 | |
15252
6e809bb4f969
largefiles: improve comments, internal docstrings
Greg Ward <greg@gerg.ca>
parents:
15168
diff
changeset
|
6 '''largefile store working over Mercurial's wire protocol''' |
29316
28dfcf3d0ad3
py3: make largefiles/wirestore.py use absolute_import
liscju <piotr.listkiewicz@gmail.com>
parents:
28439
diff
changeset
|
7 from __future__ import absolute_import |
15168 | 8 |
29316
28dfcf3d0ad3
py3: make largefiles/wirestore.py use absolute_import
liscju <piotr.listkiewicz@gmail.com>
parents:
28439
diff
changeset
|
9 from . import ( |
28dfcf3d0ad3
py3: make largefiles/wirestore.py use absolute_import
liscju <piotr.listkiewicz@gmail.com>
parents:
28439
diff
changeset
|
10 lfutil, |
28dfcf3d0ad3
py3: make largefiles/wirestore.py use absolute_import
liscju <piotr.listkiewicz@gmail.com>
parents:
28439
diff
changeset
|
11 remotestore, |
28dfcf3d0ad3
py3: make largefiles/wirestore.py use absolute_import
liscju <piotr.listkiewicz@gmail.com>
parents:
28439
diff
changeset
|
12 ) |
15168 | 13 |
14 class wirestore(remotestore.remotestore): | |
15 def __init__(self, ui, repo, remote): | |
16 cap = remote.capable('largefiles') | |
17 if not cap: | |
18 raise lfutil.storeprotonotcapable([]) | |
19 storetypes = cap.split(',') | |
16686
67964cda8701
cleanup: "not x in y" -> "x not in y"
Brodie Rao <brodie@sf.io>
parents:
15252
diff
changeset
|
20 if 'serve' not in storetypes: |
15168 | 21 raise lfutil.storeprotonotcapable(storetypes) |
22 self.remote = remote | |
23 super(wirestore, self).__init__(ui, repo, remote.url()) | |
24 | |
25 def _put(self, hash, fd): | |
26 return self.remote.putlfile(hash, fd) | |
27 | |
28 def _get(self, hash): | |
29 return self.remote.getlfile(hash) | |
30 | |
17127
9e1616307c4c
largefiles: batch statlfile requests when pushing a largefiles repo (issue3386)
Na'Tosha Bard <natosha@unity3d.com>
parents:
16686
diff
changeset
|
31 def _stat(self, hashes): |
19008
9d33d6e0d442
largefiles: stat all largefiles in one batch before downloading
Mads Kiilerich <madski@unity3d.com>
parents:
18481
diff
changeset
|
32 '''For each hash, return 0 if it is available, other values if not. |
9d33d6e0d442
largefiles: stat all largefiles in one batch before downloading
Mads Kiilerich <madski@unity3d.com>
parents:
18481
diff
changeset
|
33 It is usually 2 if the largefile is missing, but might be 1 the server |
9d33d6e0d442
largefiles: stat all largefiles in one batch before downloading
Mads Kiilerich <madski@unity3d.com>
parents:
18481
diff
changeset
|
34 has a corrupted copy.''' |
28439
b6e71f8af5b8
largefiles: use iterbatch instead of batch
Augie Fackler <augie@google.com>
parents:
19008
diff
changeset
|
35 batch = self.remote.iterbatch() |
17127
9e1616307c4c
largefiles: batch statlfile requests when pushing a largefiles repo (issue3386)
Na'Tosha Bard <natosha@unity3d.com>
parents:
16686
diff
changeset
|
36 for hash in hashes: |
28439
b6e71f8af5b8
largefiles: use iterbatch instead of batch
Augie Fackler <augie@google.com>
parents:
19008
diff
changeset
|
37 batch.statlfile(hash) |
17127
9e1616307c4c
largefiles: batch statlfile requests when pushing a largefiles repo (issue3386)
Na'Tosha Bard <natosha@unity3d.com>
parents:
16686
diff
changeset
|
38 batch.submit() |
28439
b6e71f8af5b8
largefiles: use iterbatch instead of batch
Augie Fackler <augie@google.com>
parents:
19008
diff
changeset
|
39 return dict(zip(hashes, batch.results())) |