comparison mercurial/localrepo.py @ 3851:8f18e31c4441

add "requires" file to the repo, specifying the requirements
author Benoit Boissinot <benoit.boissinot@ens-lyon.org>
date Sun, 10 Dec 2006 00:06:59 +0100
parents a4457828ca1a
children c0b449154a90
comparison
equal deleted inserted replaced
3850:a4457828ca1a 3851:8f18e31c4441
14 demandload(globals(), "re lock transaction tempfile stat mdiff errno ui") 14 demandload(globals(), "re lock transaction tempfile stat mdiff errno ui")
15 demandload(globals(), "os revlog time util") 15 demandload(globals(), "os revlog time util")
16 16
17 class localrepository(repo.repository): 17 class localrepository(repo.repository):
18 capabilities = ('lookup', 'changegroupsubset') 18 capabilities = ('lookup', 'changegroupsubset')
19 supported = ('revlogv1',)
19 20
20 def __del__(self): 21 def __del__(self):
21 self.transhandle = None 22 self.transhandle = None
22 def __init__(self, parentui, path=None, create=0): 23 def __init__(self, parentui, path=None, create=0):
23 repo.repository.__init__(self) 24 repo.repository.__init__(self)
42 if not os.path.exists(path): 43 if not os.path.exists(path):
43 os.mkdir(path) 44 os.mkdir(path)
44 os.mkdir(self.path) 45 os.mkdir(self.path)
45 #if self.spath != self.path: 46 #if self.spath != self.path:
46 # os.mkdir(self.spath) 47 # os.mkdir(self.spath)
48 requirements = ("revlogv1",)
49 reqfile = self.opener("requires", "w")
50 for r in requirements:
51 reqfile.write("%s\n" % r)
52 reqfile.close()
47 else: 53 else:
48 raise repo.RepoError(_("repository %s not found") % path) 54 raise repo.RepoError(_("repository %s not found") % path)
49 elif create: 55 elif create:
50 raise repo.RepoError(_("repository %s already exists") % path) 56 raise repo.RepoError(_("repository %s already exists") % path)
57 else:
58 # find requirements
59 try:
60 requirements = self.opener("requires").read().splitlines()
61 except IOError, inst:
62 if inst.errno != errno.ENOENT:
63 raise
64 requirements = []
65 # check them
66 for r in requirements:
67 if r not in self.supported:
68 raise repo.RepoError(_("requirement '%s' not supported") % r)
51 69
52 # setup store 70 # setup store
53 self.spath = self.path 71 self.spath = self.path
54 self.sopener = util.opener(self.spath) 72 self.sopener = util.opener(self.spath)
55 73