comparison mercurial/localrepo.py @ 8262:3d7b1d97230d

localrepo: use set for requirements
author Matt Mackall <mpm@selenic.com>
date Wed, 29 Apr 2009 20:47:28 -0500
parents 54a4b520bd7d
children c214a895f62c
comparison
equal deleted inserted replaced
8261:0fe1f57ac2bd 8262:3d7b1d97230d
17 from lock import release 17 from lock import release
18 propertycache = util.propertycache 18 propertycache = util.propertycache
19 19
20 class localrepository(repo.repository): 20 class localrepository(repo.repository):
21 capabilities = set(('lookup', 'changegroupsubset')) 21 capabilities = set(('lookup', 'changegroupsubset'))
22 supported = ('revlogv1', 'store', 'fncache') 22 supported = set('revlogv1 store fncache'.split())
23 23
24 def __init__(self, baseui, path=None, create=0): 24 def __init__(self, baseui, path=None, create=0):
25 repo.repository.__init__(self) 25 repo.repository.__init__(self)
26 self.root = os.path.realpath(path) 26 self.root = os.path.realpath(path)
27 self.path = os.path.join(self.root, ".hg") 27 self.path = os.path.join(self.root, ".hg")
53 raise error.RepoError(_("repository %s not found") % path) 53 raise error.RepoError(_("repository %s not found") % path)
54 elif create: 54 elif create:
55 raise error.RepoError(_("repository %s already exists") % path) 55 raise error.RepoError(_("repository %s already exists") % path)
56 else: 56 else:
57 # find requirements 57 # find requirements
58 requirements = [] 58 requirements = set()
59 try: 59 try:
60 requirements = self.opener("requires").read().splitlines() 60 requirements = set(self.opener("requires").read().splitlines())
61 for r in requirements:
62 if r not in self.supported:
63 raise error.RepoError(_("requirement '%s' not supported") % r)
64 except IOError, inst: 61 except IOError, inst:
65 if inst.errno != errno.ENOENT: 62 if inst.errno != errno.ENOENT:
66 raise 63 raise
64 for r in requirements - self.supported:
65 raise error.RepoError(_("requirement '%s' not supported") % r)
67 66
68 self.store = store.store(requirements, self.path, util.opener) 67 self.store = store.store(requirements, self.path, util.opener)
69 self.spath = self.store.path 68 self.spath = self.store.path
70 self.sopener = self.store.opener 69 self.sopener = self.store.opener
71 self.sjoin = self.store.join 70 self.sjoin = self.store.join