annotate hgext/largefiles/wirestore.py @ 29272:e82ca7d0967c stable

Added signature for changeset a9764ab80e11
author Matt Mackall <mpm@selenic.com>
date Wed, 01 Jun 2016 15:48:38 -0500
parents b6e71f8af5b8
children 28dfcf3d0ad3
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
cfccd3bee7b3 hgext: add largefiles extension
various
parents:
diff changeset
8 import lfutil
cfccd3bee7b3 hgext: add largefiles extension
various
parents:
diff changeset
9 import remotestore
cfccd3bee7b3 hgext: add largefiles extension
various
parents:
diff changeset
10
cfccd3bee7b3 hgext: add largefiles extension
various
parents:
diff changeset
11 class wirestore(remotestore.remotestore):
cfccd3bee7b3 hgext: add largefiles extension
various
parents:
diff changeset
12 def __init__(self, ui, repo, remote):
cfccd3bee7b3 hgext: add largefiles extension
various
parents:
diff changeset
13 cap = remote.capable('largefiles')
cfccd3bee7b3 hgext: add largefiles extension
various
parents:
diff changeset
14 if not cap:
cfccd3bee7b3 hgext: add largefiles extension
various
parents:
diff changeset
15 raise lfutil.storeprotonotcapable([])
cfccd3bee7b3 hgext: add largefiles extension
various
parents:
diff changeset
16 storetypes = cap.split(',')
16686
67964cda8701 cleanup: "not x in y" -> "x not in y"
Brodie Rao <brodie@sf.io>
parents: 15252
diff changeset
17 if 'serve' not in storetypes:
15168
cfccd3bee7b3 hgext: add largefiles extension
various
parents:
diff changeset
18 raise lfutil.storeprotonotcapable(storetypes)
cfccd3bee7b3 hgext: add largefiles extension
various
parents:
diff changeset
19 self.remote = remote
cfccd3bee7b3 hgext: add largefiles extension
various
parents:
diff changeset
20 super(wirestore, self).__init__(ui, repo, remote.url())
cfccd3bee7b3 hgext: add largefiles extension
various
parents:
diff changeset
21
cfccd3bee7b3 hgext: add largefiles extension
various
parents:
diff changeset
22 def _put(self, hash, fd):
cfccd3bee7b3 hgext: add largefiles extension
various
parents:
diff changeset
23 return self.remote.putlfile(hash, fd)
cfccd3bee7b3 hgext: add largefiles extension
various
parents:
diff changeset
24
cfccd3bee7b3 hgext: add largefiles extension
various
parents:
diff changeset
25 def _get(self, hash):
cfccd3bee7b3 hgext: add largefiles extension
various
parents:
diff changeset
26 return self.remote.getlfile(hash)
cfccd3bee7b3 hgext: add largefiles extension
various
parents:
diff changeset
27
17127
9e1616307c4c largefiles: batch statlfile requests when pushing a largefiles repo (issue3386)
Na'Tosha Bard <natosha@unity3d.com>
parents: 16686
diff changeset
28 def _stat(self, hashes):
19008
9d33d6e0d442 largefiles: stat all largefiles in one batch before downloading
Mads Kiilerich <madski@unity3d.com>
parents: 18481
diff changeset
29 '''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
30 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
31 has a corrupted copy.'''
28439
b6e71f8af5b8 largefiles: use iterbatch instead of batch
Augie Fackler <augie@google.com>
parents: 19008
diff changeset
32 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
33 for hash in hashes:
28439
b6e71f8af5b8 largefiles: use iterbatch instead of batch
Augie Fackler <augie@google.com>
parents: 19008
diff changeset
34 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
35 batch.submit()
28439
b6e71f8af5b8 largefiles: use iterbatch instead of batch
Augie Fackler <augie@google.com>
parents: 19008
diff changeset
36 return dict(zip(hashes, batch.results()))