comparison mercurial/localrepo.py @ 1839:876e4e6ad82b

Create local ui object per repository, so .hg/hgrc don't get mixed. This is needed for hooks, but may be important for other settings, too. Fixes issue113, also integrated push-hook-lock.sh as a test case for this.
author Thomas Arendsen Hein <thomas@intevation.de>
date Mon, 06 Mar 2006 17:47:41 +0100
parents 429bf036f2cb
children 5ac811b720de
comparison
equal deleted inserted replaced
1838:429bf036f2cb 1839:876e4e6ad82b
8 import struct, os, util 8 import struct, 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") 13 demandload(globals(), "re lock transaction tempfile stat mdiff errno ui")
14 14
15 class localrepository(object): 15 class localrepository(object):
16 def __del__(self): 16 def __del__(self):
17 self.transhandle = None 17 self.transhandle = None
18 def __init__(self, ui, path=None, create=0): 18 def __init__(self, parentui, path=None, create=0):
19 if not path: 19 if not path:
20 p = os.getcwd() 20 p = os.getcwd()
21 while not os.path.isdir(os.path.join(p, ".hg")): 21 while not os.path.isdir(os.path.join(p, ".hg")):
22 oldp = p 22 oldp = p
23 p = os.path.dirname(p) 23 p = os.path.dirname(p)
28 28
29 if not create and not os.path.isdir(self.path): 29 if not create and not os.path.isdir(self.path):
30 raise repo.RepoError(_("repository %s not found") % path) 30 raise repo.RepoError(_("repository %s not found") % path)
31 31
32 self.root = os.path.abspath(path) 32 self.root = os.path.abspath(path)
33 self.ui = ui 33 self.ui = ui.ui(parentui=parentui)
34 self.opener = util.opener(self.path) 34 self.opener = util.opener(self.path)
35 self.wopener = util.opener(self.root) 35 self.wopener = util.opener(self.root)
36 self.manifest = manifest.manifest(self.opener) 36 self.manifest = manifest.manifest(self.opener)
37 self.changelog = changelog.changelog(self.opener) 37 self.changelog = changelog.changelog(self.opener)
38 self.tagscache = None 38 self.tagscache = None
43 43
44 if create: 44 if create:
45 os.mkdir(self.path) 45 os.mkdir(self.path)
46 os.mkdir(self.join("data")) 46 os.mkdir(self.join("data"))
47 47
48 self.dirstate = dirstate.dirstate(self.opener, ui, self.root) 48 self.dirstate = dirstate.dirstate(self.opener, self.ui, self.root)
49 try: 49 try:
50 self.ui.readconfig(self.join("hgrc")) 50 self.ui.readconfig(self.join("hgrc"))
51 except IOError: 51 except IOError:
52 pass 52 pass
53 53