annotate hgext/largefiles/localstore.py @ 15252:6e809bb4f969

largefiles: improve comments, internal docstrings - fix some ungrammatical/unclear/incorrect comments/docstrings - rewrite some really unclear comments/docstrings - make formatting/style more consistent with the rest of Mercurial (lowercase without period unless it's really multiple sentences) - wrap to 75 columns - always say "largefile(s)", not "lfile(s)" (or "big files") - one space between sentences, not two
author Greg Ward <greg@gerg.ca>
date Wed, 12 Oct 2011 20:59:27 -0400
parents cfccd3bee7b3
children c65f5b6e26d4
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):
cfccd3bee7b3 hgext: add largefiles extension
various
parents:
diff changeset
34 return lfutil.insystemcache(self.repo.ui, hash)
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):
cfccd3bee7b3 hgext: add largefiles extension
various
parents:
diff changeset
37 if lfutil.insystemcache(self.ui, hash):
cfccd3bee7b3 hgext: add largefiles extension
various
parents:
diff changeset
38 return lfutil.systemcachepath(self.ui, hash)
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)
cfccd3bee7b3 hgext: add largefiles extension
various
parents:
diff changeset
53 if not lfutil.insystemcache(self.ui, expecthash):
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:
cfccd3bee7b3 hgext: add largefiles extension
various
parents:
diff changeset
61 storepath = lfutil.systemcachepath(self.ui, expecthash)
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