annotate hgext/largefiles/wirestore.py @ 50916:98b8836d0e82

hgweb: use sysstr to set attribute on diff option Attribute identifier should be `str` not `bytes`.
author Pierre-Yves David <pierre-yves.david@octobus.net>
date Fri, 01 Sep 2023 12:09:54 +0200
parents 6000f5b25c9b
children f4733654f144
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
15168
cfccd3bee7b3 hgext: add largefiles extension
various
parents:
diff changeset
1 # Copyright 2010-2011 Fog Creek Software
cfccd3bee7b3 hgext: add largefiles extension
various
parents:
diff changeset
2 #
cfccd3bee7b3 hgext: add largefiles extension
various
parents:
diff changeset
3 # This software may be used and distributed according to the terms of the
cfccd3bee7b3 hgext: add largefiles extension
various
parents:
diff changeset
4 # GNU General Public License version 2 or any later version.
cfccd3bee7b3 hgext: add largefiles extension
various
parents:
diff changeset
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
cfccd3bee7b3 hgext: add largefiles extension
various
parents:
diff changeset
7
29316
28dfcf3d0ad3 py3: make largefiles/wirestore.py use absolute_import
liscju <piotr.listkiewicz@gmail.com>
parents: 28439
diff changeset
8 from . import (
28dfcf3d0ad3 py3: make largefiles/wirestore.py use absolute_import
liscju <piotr.listkiewicz@gmail.com>
parents: 28439
diff changeset
9 lfutil,
28dfcf3d0ad3 py3: make largefiles/wirestore.py use absolute_import
liscju <piotr.listkiewicz@gmail.com>
parents: 28439
diff changeset
10 remotestore,
28dfcf3d0ad3 py3: make largefiles/wirestore.py use absolute_import
liscju <piotr.listkiewicz@gmail.com>
parents: 28439
diff changeset
11 )
15168
cfccd3bee7b3 hgext: add largefiles extension
various
parents:
diff changeset
12
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 37632
diff changeset
13
15168
cfccd3bee7b3 hgext: add largefiles extension
various
parents:
diff changeset
14 class wirestore(remotestore.remotestore):
cfccd3bee7b3 hgext: add largefiles extension
various
parents:
diff changeset
15 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
16 cap = remote.capable(b'largefiles')
15168
cfccd3bee7b3 hgext: add largefiles extension
various
parents:
diff changeset
17 if not cap:
cfccd3bee7b3 hgext: add largefiles extension
various
parents:
diff changeset
18 raise lfutil.storeprotonotcapable([])
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
19 storetypes = cap.split(b',')
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
20 if b'serve' not in storetypes:
15168
cfccd3bee7b3 hgext: add largefiles extension
various
parents:
diff changeset
21 raise lfutil.storeprotonotcapable(storetypes)
cfccd3bee7b3 hgext: add largefiles extension
various
parents:
diff changeset
22 self.remote = remote
cfccd3bee7b3 hgext: add largefiles extension
various
parents:
diff changeset
23 super(wirestore, self).__init__(ui, repo, remote.url())
cfccd3bee7b3 hgext: add largefiles extension
various
parents:
diff changeset
24
cfccd3bee7b3 hgext: add largefiles extension
various
parents:
diff changeset
25 def _put(self, hash, fd):
cfccd3bee7b3 hgext: add largefiles extension
various
parents:
diff changeset
26 return self.remote.putlfile(hash, fd)
cfccd3bee7b3 hgext: add largefiles extension
various
parents:
diff changeset
27
cfccd3bee7b3 hgext: add largefiles extension
various
parents:
diff changeset
28 def _get(self, hash):
cfccd3bee7b3 hgext: add largefiles extension
various
parents:
diff changeset
29 return self.remote.getlfile(hash)
cfccd3bee7b3 hgext: add largefiles extension
various
parents:
diff changeset
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):
45942
89a2afe31e82 formating: upgrade to black 20.8b1
Augie Fackler <raf@durin42.com>
parents: 43077
diff changeset
32 """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
33 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
34 has a corrupted copy."""
37632
6c55ce51d6c3 largefiles: use command executor for batch operation
Gregory Szorc <gregory.szorc@gmail.com>
parents: 29316
diff changeset
35
6c55ce51d6c3 largefiles: use command executor for batch operation
Gregory Szorc <gregory.szorc@gmail.com>
parents: 29316
diff changeset
36 with self.remote.commandexecutor() as e:
6c55ce51d6c3 largefiles: use command executor for batch operation
Gregory Szorc <gregory.szorc@gmail.com>
parents: 29316
diff changeset
37 fs = []
6c55ce51d6c3 largefiles: use command executor for batch operation
Gregory Szorc <gregory.szorc@gmail.com>
parents: 29316
diff changeset
38 for hash in hashes:
45942
89a2afe31e82 formating: upgrade to black 20.8b1
Augie Fackler <raf@durin42.com>
parents: 43077
diff changeset
39 fs.append(
89a2afe31e82 formating: upgrade to black 20.8b1
Augie Fackler <raf@durin42.com>
parents: 43077
diff changeset
40 (
89a2afe31e82 formating: upgrade to black 20.8b1
Augie Fackler <raf@durin42.com>
parents: 43077
diff changeset
41 hash,
89a2afe31e82 formating: upgrade to black 20.8b1
Augie Fackler <raf@durin42.com>
parents: 43077
diff changeset
42 e.callcommand(
89a2afe31e82 formating: upgrade to black 20.8b1
Augie Fackler <raf@durin42.com>
parents: 43077
diff changeset
43 b'statlfile',
89a2afe31e82 formating: upgrade to black 20.8b1
Augie Fackler <raf@durin42.com>
parents: 43077
diff changeset
44 {
89a2afe31e82 formating: upgrade to black 20.8b1
Augie Fackler <raf@durin42.com>
parents: 43077
diff changeset
45 b'sha': hash,
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 ),
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 )
37632
6c55ce51d6c3 largefiles: use command executor for batch operation
Gregory Szorc <gregory.szorc@gmail.com>
parents: 29316
diff changeset
50
6c55ce51d6c3 largefiles: use command executor for batch operation
Gregory Szorc <gregory.szorc@gmail.com>
parents: 29316
diff changeset
51 return {hash: f.result() for hash, f in fs}