Mercurial > hg
annotate hgext/largefiles/wirestore.py @ 51907:bd7359c18d69
rev-branch-cache: fallback on "v1" data if no v2 is found
This will help smooth the transition to the v2 format for existing large
repository.
author | Pierre-Yves David <pierre-yves.david@octobus.net> |
---|---|
date | Tue, 24 Sep 2024 15:44:10 +0200 |
parents | f4733654f144 |
children |
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''' |
15168 | 7 |
51863
f4733654f144
typing: add `from __future__ import annotations` to most files
Matt Harbison <matt_harbison@yahoo.com>
parents:
48875
diff
changeset
|
8 from __future__ import annotations |
f4733654f144
typing: add `from __future__ import annotations` to most files
Matt Harbison <matt_harbison@yahoo.com>
parents:
48875
diff
changeset
|
9 |
29316
28dfcf3d0ad3
py3: make largefiles/wirestore.py use absolute_import
liscju <piotr.listkiewicz@gmail.com>
parents:
28439
diff
changeset
|
10 from . import ( |
28dfcf3d0ad3
py3: make largefiles/wirestore.py use absolute_import
liscju <piotr.listkiewicz@gmail.com>
parents:
28439
diff
changeset
|
11 lfutil, |
28dfcf3d0ad3
py3: make largefiles/wirestore.py use absolute_import
liscju <piotr.listkiewicz@gmail.com>
parents:
28439
diff
changeset
|
12 remotestore, |
28dfcf3d0ad3
py3: make largefiles/wirestore.py use absolute_import
liscju <piotr.listkiewicz@gmail.com>
parents:
28439
diff
changeset
|
13 ) |
15168 | 14 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
37632
diff
changeset
|
15 |
15168 | 16 class wirestore(remotestore.remotestore): |
17 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
|
18 cap = remote.capable(b'largefiles') |
15168 | 19 if not cap: |
20 raise lfutil.storeprotonotcapable([]) | |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
21 storetypes = cap.split(b',') |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
22 if b'serve' not in storetypes: |
15168 | 23 raise lfutil.storeprotonotcapable(storetypes) |
24 self.remote = remote | |
25 super(wirestore, self).__init__(ui, repo, remote.url()) | |
26 | |
27 def _put(self, hash, fd): | |
28 return self.remote.putlfile(hash, fd) | |
29 | |
30 def _get(self, hash): | |
31 return self.remote.getlfile(hash) | |
32 | |
17127
9e1616307c4c
largefiles: batch statlfile requests when pushing a largefiles repo (issue3386)
Na'Tosha Bard <natosha@unity3d.com>
parents:
16686
diff
changeset
|
33 def _stat(self, hashes): |
45942
89a2afe31e82
formating: upgrade to black 20.8b1
Augie Fackler <raf@durin42.com>
parents:
43077
diff
changeset
|
34 """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
|
35 It is usually 2 if the largefile is missing, but might be 1 the server |
45942
89a2afe31e82
formating: upgrade to black 20.8b1
Augie Fackler <raf@durin42.com>
parents:
43077
diff
changeset
|
36 has a corrupted copy.""" |
37632
6c55ce51d6c3
largefiles: use command executor for batch operation
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29316
diff
changeset
|
37 |
6c55ce51d6c3
largefiles: use command executor for batch operation
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29316
diff
changeset
|
38 with self.remote.commandexecutor() as e: |
6c55ce51d6c3
largefiles: use command executor for batch operation
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29316
diff
changeset
|
39 fs = [] |
6c55ce51d6c3
largefiles: use command executor for batch operation
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29316
diff
changeset
|
40 for hash in hashes: |
45942
89a2afe31e82
formating: upgrade to black 20.8b1
Augie Fackler <raf@durin42.com>
parents:
43077
diff
changeset
|
41 fs.append( |
89a2afe31e82
formating: upgrade to black 20.8b1
Augie Fackler <raf@durin42.com>
parents:
43077
diff
changeset
|
42 ( |
89a2afe31e82
formating: upgrade to black 20.8b1
Augie Fackler <raf@durin42.com>
parents:
43077
diff
changeset
|
43 hash, |
89a2afe31e82
formating: upgrade to black 20.8b1
Augie Fackler <raf@durin42.com>
parents:
43077
diff
changeset
|
44 e.callcommand( |
89a2afe31e82
formating: upgrade to black 20.8b1
Augie Fackler <raf@durin42.com>
parents:
43077
diff
changeset
|
45 b'statlfile', |
89a2afe31e82
formating: upgrade to black 20.8b1
Augie Fackler <raf@durin42.com>
parents:
43077
diff
changeset
|
46 { |
89a2afe31e82
formating: upgrade to black 20.8b1
Augie Fackler <raf@durin42.com>
parents:
43077
diff
changeset
|
47 b'sha': hash, |
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 ) |
89a2afe31e82
formating: upgrade to black 20.8b1
Augie Fackler <raf@durin42.com>
parents:
43077
diff
changeset
|
51 ) |
37632
6c55ce51d6c3
largefiles: use command executor for batch operation
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29316
diff
changeset
|
52 |
6c55ce51d6c3
largefiles: use command executor for batch operation
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29316
diff
changeset
|
53 return {hash: f.result() for hash, f in fs} |