8 import os, util |
8 import os, util |
9 import filelog, manifest, changelog, dirstate, repo |
9 import filelog, manifest, changelog, dirstate, repo |
10 from node import * |
10 from node import * |
11 from i18n import gettext as _ |
11 from i18n import gettext as _ |
12 from demandload import * |
12 from demandload import * |
13 demandload(globals(), "re lock transaction tempfile stat mdiff errno ui") |
|
14 demandload(globals(), "appendfile changegroup") |
13 demandload(globals(), "appendfile changegroup") |
|
14 demandload(globals(), "re lock transaction tempfile stat mdiff errno ui revlog") |
15 |
15 |
16 class localrepository(object): |
16 class localrepository(object): |
17 def __del__(self): |
17 def __del__(self): |
18 self.transhandle = None |
18 self.transhandle = None |
19 def __init__(self, parentui, path=None, create=0): |
19 def __init__(self, parentui, path=None, create=0): |
33 self.root = os.path.abspath(path) |
33 self.root = os.path.abspath(path) |
34 self.origroot = path |
34 self.origroot = path |
35 self.ui = ui.ui(parentui=parentui) |
35 self.ui = ui.ui(parentui=parentui) |
36 self.opener = util.opener(self.path) |
36 self.opener = util.opener(self.path) |
37 self.wopener = util.opener(self.root) |
37 self.wopener = util.opener(self.root) |
38 self.manifest = manifest.manifest(self.opener) |
38 |
39 self.changelog = changelog.changelog(self.opener) |
39 try: |
|
40 self.ui.readconfig(self.join("hgrc"), self.root) |
|
41 except IOError: |
|
42 pass |
|
43 |
|
44 v = self.ui.revlogopts |
|
45 self.revlogversion = int(v.get('format', 0)) |
|
46 for x in v.get('flags', "").split(): |
|
47 self.revlogversion |= revlog.flagstr(x) |
|
48 |
|
49 self.manifest = manifest.manifest(self.opener, self.revlogversion) |
|
50 self.changelog = changelog.changelog(self.opener, self.revlogversion) |
|
51 self.revlogversion = self.changelog.version |
40 self.tagscache = None |
52 self.tagscache = None |
41 self.nodetagscache = None |
53 self.nodetagscache = None |
42 self.encodepats = None |
54 self.encodepats = None |
43 self.decodepats = None |
55 self.decodepats = None |
44 self.transhandle = None |
56 self.transhandle = None |
46 if create: |
58 if create: |
47 os.mkdir(self.path) |
59 os.mkdir(self.path) |
48 os.mkdir(self.join("data")) |
60 os.mkdir(self.join("data")) |
49 |
61 |
50 self.dirstate = dirstate.dirstate(self.opener, self.ui, self.root) |
62 self.dirstate = dirstate.dirstate(self.opener, self.ui, self.root) |
51 try: |
|
52 self.ui.readconfig(self.join("hgrc"), self.root) |
|
53 except IOError: |
|
54 pass |
|
55 |
|
56 def hook(self, name, throw=False, **args): |
63 def hook(self, name, throw=False, **args): |
57 def runhook(name, cmd): |
64 def runhook(name, cmd): |
58 self.ui.note(_("running hook %s: %s\n") % (name, cmd)) |
65 self.ui.note(_("running hook %s: %s\n") % (name, cmd)) |
59 env = dict([('HG_' + k.upper(), v) for k, v in args.iteritems()] + |
66 env = dict([('HG_' + k.upper(), v) for k, v in args.iteritems()] + |
60 [(k.upper(), v) for k, v in args.iteritems()]) |
67 [(k.upper(), v) for k, v in args.iteritems()]) |
165 return os.path.join(self.root, f) |
172 return os.path.join(self.root, f) |
166 |
173 |
167 def file(self, f): |
174 def file(self, f): |
168 if f[0] == '/': |
175 if f[0] == '/': |
169 f = f[1:] |
176 f = f[1:] |
170 return filelog.filelog(self.opener, f) |
177 return filelog.filelog(self.opener, f, self.revlogversion) |
171 |
178 |
172 def getcwd(self): |
179 def getcwd(self): |
173 return self.dirstate.getcwd() |
180 return self.dirstate.getcwd() |
174 |
181 |
175 def wfile(self, f, mode='r'): |
182 def wfile(self, f, mode='r'): |