Mercurial > hg
annotate hgext/largefiles/wirestore.py @ 45049:513b3ef277a3
rhg: add RootCommand using hg-core FindRoot operation to prepare `hg root`
The println macro is not used to avoid string usage.
Dealing only with bytes allows us to be compatible with any encoding
and not just UTF8.
Later on, format macro will be made to have more readable code.
Differential Revision: https://phab.mercurial-scm.org/D8612
author | Antoine Cezar <antoine.cezar@octobus.net> |
---|---|
date | Fri, 05 Jun 2020 09:01:35 +0200 |
parents | 687b865b95ad |
children | 89a2afe31e82 |
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 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
37632
diff
changeset
|
14 |
15168 | 15 class wirestore(remotestore.remotestore): |
16 def __init__(self, ui, repo, remote): | |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
17 cap = remote.capable(b'largefiles') |
15168 | 18 if not cap: |
19 raise lfutil.storeprotonotcapable([]) | |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
20 storetypes = cap.split(b',') |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
21 if b'serve' not in storetypes: |
15168 | 22 raise lfutil.storeprotonotcapable(storetypes) |
23 self.remote = remote | |
24 super(wirestore, self).__init__(ui, repo, remote.url()) | |
25 | |
26 def _put(self, hash, fd): | |
27 return self.remote.putlfile(hash, fd) | |
28 | |
29 def _get(self, hash): | |
30 return self.remote.getlfile(hash) | |
31 | |
17127
9e1616307c4c
largefiles: batch statlfile requests when pushing a largefiles repo (issue3386)
Na'Tosha Bard <natosha@unity3d.com>
parents:
16686
diff
changeset
|
32 def _stat(self, hashes): |
19008
9d33d6e0d442
largefiles: stat all largefiles in one batch before downloading
Mads Kiilerich <madski@unity3d.com>
parents:
18481
diff
changeset
|
33 '''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
|
34 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
|
35 has a corrupted copy.''' |
37632
6c55ce51d6c3
largefiles: use command executor for batch operation
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29316
diff
changeset
|
36 |
6c55ce51d6c3
largefiles: use command executor for batch operation
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29316
diff
changeset
|
37 with self.remote.commandexecutor() as e: |
6c55ce51d6c3
largefiles: use command executor for batch operation
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29316
diff
changeset
|
38 fs = [] |
6c55ce51d6c3
largefiles: use command executor for batch operation
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29316
diff
changeset
|
39 for hash in hashes: |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
40 fs.append((hash, e.callcommand(b'statlfile', {b'sha': hash,}))) |
37632
6c55ce51d6c3
largefiles: use command executor for batch operation
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29316
diff
changeset
|
41 |
6c55ce51d6c3
largefiles: use command executor for batch operation
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29316
diff
changeset
|
42 return {hash: f.result() for hash, f in fs} |