comparison mercurial/localrepo.py @ 1100:d6b6a15cc7c6

localrepo: more import/namespace tidying
author mpm@selenic.com
date Sat, 27 Aug 2005 15:35:37 -0700
parents 1f89ccbab6ce
children 2cf5c8a4eae5
comparison
equal deleted inserted replaced
1099:0cb9c72b6c03 1100:d6b6a15cc7c6
4 # 4 #
5 # This software may be used and distributed according to the terms 5 # This software may be used and distributed according to the terms
6 # of the GNU General Public License, incorporated herein by reference. 6 # of the GNU General Public License, incorporated herein by reference.
7 7
8 import struct, os, util 8 import struct, os, util
9 from repo import * 9 import filelog, manifest, changelog, dirstate, repo
10 from revlog import * 10 from node import *
11 from filelog import *
12 from manifest import *
13 from changelog import *
14 from dirstate import *
15 from demandload import * 11 from demandload import *
16 demandload(globals(), "re lock transaction tempfile stat") 12 demandload(globals(), "re lock transaction tempfile stat mdiff")
17 13
18 class localrepository: 14 class localrepository:
19 def __init__(self, ui, opener, path=None, create=0): 15 def __init__(self, ui, opener, path=None, create=0):
20 self.remote = 0 16 self.remote = 0
21 if path and path.startswith("http://"): 17 if path and path.startswith("http://"):
25 if not path: 21 if not path:
26 p = os.getcwd() 22 p = os.getcwd()
27 while not os.path.isdir(os.path.join(p, ".hg")): 23 while not os.path.isdir(os.path.join(p, ".hg")):
28 oldp = p 24 oldp = p
29 p = os.path.dirname(p) 25 p = os.path.dirname(p)
30 if p == oldp: raise RepoError("no repo found") 26 if p == oldp: raise repo.RepoError("no repo found")
31 path = p 27 path = p
32 self.path = os.path.join(path, ".hg") 28 self.path = os.path.join(path, ".hg")
33 29
34 if not create and not os.path.isdir(self.path): 30 if not create and not os.path.isdir(self.path):
35 raise RepoError("repository %s not found" % self.path) 31 raise repo.RepoError("repository %s not found" % self.path)
36 32
37 self.root = os.path.abspath(path) 33 self.root = os.path.abspath(path)
38 self.ui = ui 34 self.ui = ui
39 35
40 if create: 36 if create:
41 os.mkdir(self.path) 37 os.mkdir(self.path)
42 os.mkdir(self.join("data")) 38 os.mkdir(self.join("data"))
43 39
44 self.opener = opener(self.path) 40 self.opener = opener(self.path)
45 self.wopener = opener(self.root) 41 self.wopener = opener(self.root)
46 self.manifest = manifest(self.opener) 42 self.manifest = manifest.manifest(self.opener)
47 self.changelog = changelog(self.opener) 43 self.changelog = changelog.changelog(self.opener)
48 self.tagscache = None 44 self.tagscache = None
49 self.nodetagscache = None 45 self.nodetagscache = None
50 46
51 if not self.remote: 47 if not self.remote:
52 self.dirstate = dirstate(self.opener, ui, self.root) 48 self.dirstate = dirstate.dirstate(self.opener, ui, self.root)
53 try: 49 try:
54 self.ui.readconfig(self.opener("hgrc")) 50 self.ui.readconfig(self.opener("hgrc"))
55 except IOError: pass 51 except IOError: pass
56 52
57 def hook(self, name, **args): 53 def hook(self, name, **args):
141 return self.tags()[key] 137 return self.tags()[key]
142 except KeyError: 138 except KeyError:
143 try: 139 try:
144 return self.changelog.lookup(key) 140 return self.changelog.lookup(key)
145 except: 141 except:
146 raise RepoError("unknown revision '%s'" % key) 142 raise repo.RepoError("unknown revision '%s'" % key)
147 143
148 def dev(self): 144 def dev(self):
149 if self.remote: return -1 145 if self.remote: return -1
150 return os.stat(self.path).st_dev 146 return os.stat(self.path).st_dev
151 147
158 def wjoin(self, f): 154 def wjoin(self, f):
159 return os.path.join(self.root, f) 155 return os.path.join(self.root, f)
160 156
161 def file(self, f): 157 def file(self, f):
162 if f[0] == '/': f = f[1:] 158 if f[0] == '/': f = f[1:]
163 return filelog(self.opener, f) 159 return filelog.filelog(self.opener, f)
164 160
165 def getcwd(self): 161 def getcwd(self):
166 return self.dirstate.getcwd() 162 return self.dirstate.getcwd()
167 163
168 def wfile(self, f, mode='r'): 164 def wfile(self, f, mode='r'):
205 if os.path.exists(self.join("undo")): 201 if os.path.exists(self.join("undo")):
206 self.ui.status("rolling back last transaction\n") 202 self.ui.status("rolling back last transaction\n")
207 transaction.rollback(self.opener, self.join("undo")) 203 transaction.rollback(self.opener, self.join("undo"))
208 self.dirstate = None 204 self.dirstate = None
209 util.rename(self.join("undo.dirstate"), self.join("dirstate")) 205 util.rename(self.join("undo.dirstate"), self.join("dirstate"))
210 self.dirstate = dirstate(self.opener, self.ui, self.root) 206 self.dirstate = dirstate.dirstate(self.opener, self.ui, self.root)
211 else: 207 else:
212 self.ui.warn("no undo information available\n") 208 self.ui.warn("no undo information available\n")
213 209
214 def lock(self, wait=1): 210 def lock(self, wait=1):
215 try: 211 try:
808 p, f = i, f * 2 804 p, f = i, f * 2
809 805
810 # sanity check our fetch list 806 # sanity check our fetch list
811 for f in fetch.keys(): 807 for f in fetch.keys():
812 if f in m: 808 if f in m:
813 raise RepoError("already have changeset " + short(f[:4])) 809 raise repo.RepoError("already have changeset " + short(f[:4]))
814 810
815 if base.keys() == [nullid]: 811 if base.keys() == [nullid]:
816 self.ui.warn("warning: pulling from an unrelated repository!\n") 812 self.ui.warn("warning: pulling from an unrelated repository!\n")
817 813
818 self.ui.note("found new changesets starting at " + 814 self.ui.note("found new changesets starting at " +