equal
deleted
inserted
replaced
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 |