Mercurial > hg-stable
annotate hgext/largefiles/wirestore.py @ 48118:82e142b9ad18
dirstate-item: use item's property instead of `state` in largefile
Differential Revision: https://phab.mercurial-scm.org/D11543
author | Pierre-Yves David <pierre-yves.david@octobus.net> |
---|---|
date | Wed, 29 Sep 2021 18:39:02 +0200 |
parents | 89a2afe31e82 |
children | 6000f5b25c9b |
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): |
45957
89a2afe31e82
formating: upgrade to black 20.8b1
Augie Fackler <raf@durin42.com>
parents:
43077
diff
changeset
|
33 """For each hash, return 0 if it is available, other values if not. |
19008
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 |
45957
89a2afe31e82
formating: upgrade to black 20.8b1
Augie Fackler <raf@durin42.com>
parents:
43077
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: |
45957
89a2afe31e82
formating: upgrade to black 20.8b1
Augie Fackler <raf@durin42.com>
parents:
43077
diff
changeset
|
40 fs.append( |
89a2afe31e82
formating: upgrade to black 20.8b1
Augie Fackler <raf@durin42.com>
parents:
43077
diff
changeset
|
41 ( |
89a2afe31e82
formating: upgrade to black 20.8b1
Augie Fackler <raf@durin42.com>
parents:
43077
diff
changeset
|
42 hash, |
89a2afe31e82
formating: upgrade to black 20.8b1
Augie Fackler <raf@durin42.com>
parents:
43077
diff
changeset
|
43 e.callcommand( |
89a2afe31e82
formating: upgrade to black 20.8b1
Augie Fackler <raf@durin42.com>
parents:
43077
diff
changeset
|
44 b'statlfile', |
89a2afe31e82
formating: upgrade to black 20.8b1
Augie Fackler <raf@durin42.com>
parents:
43077
diff
changeset
|
45 { |
89a2afe31e82
formating: upgrade to black 20.8b1
Augie Fackler <raf@durin42.com>
parents:
43077
diff
changeset
|
46 b'sha': hash, |
89a2afe31e82
formating: upgrade to black 20.8b1
Augie Fackler <raf@durin42.com>
parents:
43077
diff
changeset
|
47 }, |
89a2afe31e82
formating: upgrade to black 20.8b1
Augie Fackler <raf@durin42.com>
parents:
43077
diff
changeset
|
48 ), |
89a2afe31e82
formating: upgrade to black 20.8b1
Augie Fackler <raf@durin42.com>
parents:
43077
diff
changeset
|
49 ) |
89a2afe31e82
formating: upgrade to black 20.8b1
Augie Fackler <raf@durin42.com>
parents:
43077
diff
changeset
|
50 ) |
37632
6c55ce51d6c3
largefiles: use command executor for batch operation
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29316
diff
changeset
|
51 |
6c55ce51d6c3
largefiles: use command executor for batch operation
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29316
diff
changeset
|
52 return {hash: f.result() for hash, f in fs} |