comparison mercurial/localrepo.py @ 3853:c0b449154a90

switch to the .hg/store layout, fix the tests
author Benoit Boissinot <benoit.boissinot@ens-lyon.org>
date Fri, 01 Dec 2006 13:34:09 +0100
parents 8f18e31c4441
children 4f6db0233606
comparison
equal deleted inserted replaced
3852:8a9a1a7e1698 3853:c0b449154a90
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 supported = ('revlogv1', 'store')
20 20
21 def __del__(self): 21 def __del__(self):
22 self.transhandle = None 22 self.transhandle = None
23 def __init__(self, parentui, path=None, create=0): 23 def __init__(self, parentui, path=None, create=0):
24 repo.repository.__init__(self) 24 repo.repository.__init__(self)
41 if not os.path.isdir(self.path): 41 if not os.path.isdir(self.path):
42 if create: 42 if create:
43 if not os.path.exists(path): 43 if not os.path.exists(path):
44 os.mkdir(path) 44 os.mkdir(path)
45 os.mkdir(self.path) 45 os.mkdir(self.path)
46 #if self.spath != self.path: 46 os.mkdir(os.path.join(self.path, "store"))
47 # os.mkdir(self.spath) 47 requirements = ("revlogv1", "store")
48 requirements = ("revlogv1",)
49 reqfile = self.opener("requires", "w") 48 reqfile = self.opener("requires", "w")
50 for r in requirements: 49 for r in requirements:
51 reqfile.write("%s\n" % r) 50 reqfile.write("%s\n" % r)
52 reqfile.close() 51 reqfile.close()
52 # create an invalid changelog
53 self.opener("00changelog.i", "a").write('\0\0\0\2')
53 else: 54 else:
54 raise repo.RepoError(_("repository %s not found") % path) 55 raise repo.RepoError(_("repository %s not found") % path)
55 elif create: 56 elif create:
56 raise repo.RepoError(_("repository %s already exists") % path) 57 raise repo.RepoError(_("repository %s already exists") % path)
57 else: 58 else:
66 for r in requirements: 67 for r in requirements:
67 if r not in self.supported: 68 if r not in self.supported:
68 raise repo.RepoError(_("requirement '%s' not supported") % r) 69 raise repo.RepoError(_("requirement '%s' not supported") % r)
69 70
70 # setup store 71 # setup store
71 self.spath = self.path 72 if "store" in requirements:
72 self.sopener = util.opener(self.spath) 73 self.encodefn = util.encodefilename
74 self.decodefn = util.decodefilename
75 self.spath = os.path.join(self.path, "store")
76 else:
77 self.encodefn = lambda x: x
78 self.decodefn = lambda x: x
79 self.spath = self.path
80 self.sopener = util.encodedopener(util.opener(self.spath), self.encodefn)
73 81
74 self.ui = ui.ui(parentui=parentui) 82 self.ui = ui.ui(parentui=parentui)
75 try: 83 try:
76 self.ui.readconfig(self.join("hgrc"), self.root) 84 self.ui.readconfig(self.join("hgrc"), self.root)
77 except IOError: 85 except IOError:
418 426
419 def join(self, f): 427 def join(self, f):
420 return os.path.join(self.path, f) 428 return os.path.join(self.path, f)
421 429
422 def sjoin(self, f): 430 def sjoin(self, f):
431 f = self.encodefn(f)
423 return os.path.join(self.spath, f) 432 return os.path.join(self.spath, f)
424 433
425 def wjoin(self, f): 434 def wjoin(self, f):
426 return os.path.join(self.root, f) 435 return os.path.join(self.root, f)
427 436