annotate hgext/largefiles/localstore.py @ 15316:c65f5b6e26d4 stable

largefiles: rename functions and methods to match desired behavior The original intent was that the largefiles would primarily be in the repository, with the global cache being only that--a cache. The naming conventions and actual intent have both strayed. In this first patch, the naming conventions are switched to match the actual intent, as are the configuration options.
author Benjamin Pollack <benjamin@bitquabit.com>
date Thu, 20 Oct 2011 13:24:09 -0400
parents 6e809bb4f969
children 41f371150ccb
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 2009-2010 Gregory P. Ward
cfccd3bee7b3 hgext: add largefiles extension
various
parents:
diff changeset
2 # Copyright 2009-2010 Intelerad Medical Systems Incorporated
cfccd3bee7b3 hgext: add largefiles extension
various
parents:
diff changeset
3 # Copyright 2010-2011 Fog Creek Software
cfccd3bee7b3 hgext: add largefiles extension
various
parents:
diff changeset
4 # Copyright 2010-2011 Unity Technologies
cfccd3bee7b3 hgext: add largefiles extension
various
parents:
diff changeset
5 #
cfccd3bee7b3 hgext: add largefiles extension
various
parents:
diff changeset
6 # This software may be used and distributed according to the terms of the
cfccd3bee7b3 hgext: add largefiles extension
various
parents:
diff changeset
7 # GNU General Public License version 2 or any later version.
cfccd3bee7b3 hgext: add largefiles extension
various
parents:
diff changeset
8
15252
6e809bb4f969 largefiles: improve comments, internal docstrings
Greg Ward <greg@gerg.ca>
parents: 15168
diff changeset
9 '''store class for local filesystem'''
15168
cfccd3bee7b3 hgext: add largefiles extension
various
parents:
diff changeset
10
cfccd3bee7b3 hgext: add largefiles extension
various
parents:
diff changeset
11 import os
cfccd3bee7b3 hgext: add largefiles extension
various
parents:
diff changeset
12
cfccd3bee7b3 hgext: add largefiles extension
various
parents:
diff changeset
13 from mercurial import util
cfccd3bee7b3 hgext: add largefiles extension
various
parents:
diff changeset
14 from mercurial.i18n import _
cfccd3bee7b3 hgext: add largefiles extension
various
parents:
diff changeset
15
cfccd3bee7b3 hgext: add largefiles extension
various
parents:
diff changeset
16 import lfutil
cfccd3bee7b3 hgext: add largefiles extension
various
parents:
diff changeset
17 import basestore
cfccd3bee7b3 hgext: add largefiles extension
various
parents:
diff changeset
18
cfccd3bee7b3 hgext: add largefiles extension
various
parents:
diff changeset
19 class localstore(basestore.basestore):
15252
6e809bb4f969 largefiles: improve comments, internal docstrings
Greg Ward <greg@gerg.ca>
parents: 15168
diff changeset
20 '''Because there is a system-wide cache, the local store always
6e809bb4f969 largefiles: improve comments, internal docstrings
Greg Ward <greg@gerg.ca>
parents: 15168
diff changeset
21 uses that cache. Since the cache is updated elsewhere, we can
6e809bb4f969 largefiles: improve comments, internal docstrings
Greg Ward <greg@gerg.ca>
parents: 15168
diff changeset
22 just read from it here as if it were the store.'''
15168
cfccd3bee7b3 hgext: add largefiles extension
various
parents:
diff changeset
23
cfccd3bee7b3 hgext: add largefiles extension
various
parents:
diff changeset
24 def __init__(self, ui, repo, remote):
cfccd3bee7b3 hgext: add largefiles extension
various
parents:
diff changeset
25 url = os.path.join(remote.path, '.hg', lfutil.longname)
cfccd3bee7b3 hgext: add largefiles extension
various
parents:
diff changeset
26 super(localstore, self).__init__(ui, repo, util.expandpath(url))
cfccd3bee7b3 hgext: add largefiles extension
various
parents:
diff changeset
27
cfccd3bee7b3 hgext: add largefiles extension
various
parents:
diff changeset
28 def put(self, source, filename, hash):
15252
6e809bb4f969 largefiles: improve comments, internal docstrings
Greg Ward <greg@gerg.ca>
parents: 15168
diff changeset
29 '''Any file that is put must already be in the system-wide
6e809bb4f969 largefiles: improve comments, internal docstrings
Greg Ward <greg@gerg.ca>
parents: 15168
diff changeset
30 cache so do nothing.'''
15168
cfccd3bee7b3 hgext: add largefiles extension
various
parents:
diff changeset
31 return
cfccd3bee7b3 hgext: add largefiles extension
various
parents:
diff changeset
32
cfccd3bee7b3 hgext: add largefiles extension
various
parents:
diff changeset
33 def exists(self, hash):
15316
c65f5b6e26d4 largefiles: rename functions and methods to match desired behavior
Benjamin Pollack <benjamin@bitquabit.com>
parents: 15252
diff changeset
34 return lfutil.inusercache(self.repo.ui, hash)
15168
cfccd3bee7b3 hgext: add largefiles extension
various
parents:
diff changeset
35
cfccd3bee7b3 hgext: add largefiles extension
various
parents:
diff changeset
36 def _getfile(self, tmpfile, filename, hash):
15316
c65f5b6e26d4 largefiles: rename functions and methods to match desired behavior
Benjamin Pollack <benjamin@bitquabit.com>
parents: 15252
diff changeset
37 if lfutil.inusercache(self.ui, hash):
c65f5b6e26d4 largefiles: rename functions and methods to match desired behavior
Benjamin Pollack <benjamin@bitquabit.com>
parents: 15252
diff changeset
38 return lfutil.usercachepath(self.ui, hash)
15168
cfccd3bee7b3 hgext: add largefiles extension
various
parents:
diff changeset
39 raise basestore.StoreError(filename, hash, '',
cfccd3bee7b3 hgext: add largefiles extension
various
parents:
diff changeset
40 _("Can't get file locally"))
cfccd3bee7b3 hgext: add largefiles extension
various
parents:
diff changeset
41
cfccd3bee7b3 hgext: add largefiles extension
various
parents:
diff changeset
42 def _verifyfile(self, cctx, cset, contents, standin, verified):
cfccd3bee7b3 hgext: add largefiles extension
various
parents:
diff changeset
43 filename = lfutil.splitstandin(standin)
cfccd3bee7b3 hgext: add largefiles extension
various
parents:
diff changeset
44 if not filename:
cfccd3bee7b3 hgext: add largefiles extension
various
parents:
diff changeset
45 return False
cfccd3bee7b3 hgext: add largefiles extension
various
parents:
diff changeset
46 fctx = cctx[standin]
cfccd3bee7b3 hgext: add largefiles extension
various
parents:
diff changeset
47 key = (filename, fctx.filenode())
cfccd3bee7b3 hgext: add largefiles extension
various
parents:
diff changeset
48 if key in verified:
cfccd3bee7b3 hgext: add largefiles extension
various
parents:
diff changeset
49 return False
cfccd3bee7b3 hgext: add largefiles extension
various
parents:
diff changeset
50
cfccd3bee7b3 hgext: add largefiles extension
various
parents:
diff changeset
51 expecthash = fctx.data()[0:40]
cfccd3bee7b3 hgext: add largefiles extension
various
parents:
diff changeset
52 verified.add(key)
15316
c65f5b6e26d4 largefiles: rename functions and methods to match desired behavior
Benjamin Pollack <benjamin@bitquabit.com>
parents: 15252
diff changeset
53 if not lfutil.inusercache(self.ui, expecthash):
15168
cfccd3bee7b3 hgext: add largefiles extension
various
parents:
diff changeset
54 self.ui.warn(
cfccd3bee7b3 hgext: add largefiles extension
various
parents:
diff changeset
55 _('changeset %s: %s missing\n'
cfccd3bee7b3 hgext: add largefiles extension
various
parents:
diff changeset
56 ' (looked for hash %s)\n')
cfccd3bee7b3 hgext: add largefiles extension
various
parents:
diff changeset
57 % (cset, filename, expecthash))
cfccd3bee7b3 hgext: add largefiles extension
various
parents:
diff changeset
58 return True # failed
cfccd3bee7b3 hgext: add largefiles extension
various
parents:
diff changeset
59
cfccd3bee7b3 hgext: add largefiles extension
various
parents:
diff changeset
60 if contents:
15316
c65f5b6e26d4 largefiles: rename functions and methods to match desired behavior
Benjamin Pollack <benjamin@bitquabit.com>
parents: 15252
diff changeset
61 storepath = lfutil.usercachepath(self.ui, expecthash)
15168
cfccd3bee7b3 hgext: add largefiles extension
various
parents:
diff changeset
62 actualhash = lfutil.hashfile(storepath)
cfccd3bee7b3 hgext: add largefiles extension
various
parents:
diff changeset
63 if actualhash != expecthash:
cfccd3bee7b3 hgext: add largefiles extension
various
parents:
diff changeset
64 self.ui.warn(
cfccd3bee7b3 hgext: add largefiles extension
various
parents:
diff changeset
65 _('changeset %s: %s: contents differ\n'
cfccd3bee7b3 hgext: add largefiles extension
various
parents:
diff changeset
66 ' (%s:\n'
cfccd3bee7b3 hgext: add largefiles extension
various
parents:
diff changeset
67 ' expected hash %s,\n'
cfccd3bee7b3 hgext: add largefiles extension
various
parents:
diff changeset
68 ' but got %s)\n')
cfccd3bee7b3 hgext: add largefiles extension
various
parents:
diff changeset
69 % (cset, filename, storepath, expecthash, actualhash))
cfccd3bee7b3 hgext: add largefiles extension
various
parents:
diff changeset
70 return True # failed
cfccd3bee7b3 hgext: add largefiles extension
various
parents:
diff changeset
71 return False