comparison mercurial/localrepo.py @ 1101:2cf5c8a4eae5

Separate out old-http support - create new statichttprepo class - pull remote bits out of localrepo - pull remote bits out of util.opener - switch hg.repository to use statichttprepo
author mpm@selenic.com
date Sat, 27 Aug 2005 16:28:53 -0700
parents d6b6a15cc7c6
children c81d264cd17d
comparison
equal deleted inserted replaced
1100:d6b6a15cc7c6 1101:2cf5c8a4eae5
11 from demandload import * 11 from demandload import *
12 demandload(globals(), "re lock transaction tempfile stat mdiff") 12 demandload(globals(), "re lock transaction tempfile stat mdiff")
13 13
14 class localrepository: 14 class localrepository:
15 def __init__(self, ui, opener, path=None, create=0): 15 def __init__(self, ui, opener, path=None, create=0):
16 self.remote = 0 16 if not path:
17 if path and path.startswith("http://"): 17 p = os.getcwd()
18 self.remote = 1 18 while not os.path.isdir(os.path.join(p, ".hg")):
19 self.path = path 19 oldp = p
20 else: 20 p = os.path.dirname(p)
21 if not path: 21 if p == oldp: raise repo.RepoError("no repo found")
22 p = os.getcwd() 22 path = p
23 while not os.path.isdir(os.path.join(p, ".hg")): 23 self.path = os.path.join(path, ".hg")
24 oldp = p 24
25 p = os.path.dirname(p) 25 if not create and not os.path.isdir(self.path):
26 if p == oldp: raise repo.RepoError("no repo found") 26 raise repo.RepoError("repository %s not found" % self.path)
27 path = p
28 self.path = os.path.join(path, ".hg")
29
30 if not create and not os.path.isdir(self.path):
31 raise repo.RepoError("repository %s not found" % self.path)
32 27
33 self.root = os.path.abspath(path) 28 self.root = os.path.abspath(path)
34 self.ui = ui 29 self.ui = ui
35 30
36 if create: 31 if create:
42 self.manifest = manifest.manifest(self.opener) 37 self.manifest = manifest.manifest(self.opener)
43 self.changelog = changelog.changelog(self.opener) 38 self.changelog = changelog.changelog(self.opener)
44 self.tagscache = None 39 self.tagscache = None
45 self.nodetagscache = None 40 self.nodetagscache = None
46 41
47 if not self.remote: 42 self.dirstate = dirstate.dirstate(self.opener, ui, self.root)
48 self.dirstate = dirstate.dirstate(self.opener, ui, self.root) 43 try:
49 try: 44 self.ui.readconfig(self.opener("hgrc"))
50 self.ui.readconfig(self.opener("hgrc")) 45 except IOError: pass
51 except IOError: pass
52 46
53 def hook(self, name, **args): 47 def hook(self, name, **args):
54 s = self.ui.config("hooks", name) 48 s = self.ui.config("hooks", name)
55 if s: 49 if s:
56 self.ui.note("running hook %s: %s\n" % (name, s)) 50 self.ui.note("running hook %s: %s\n" % (name, s))
140 return self.changelog.lookup(key) 134 return self.changelog.lookup(key)
141 except: 135 except:
142 raise repo.RepoError("unknown revision '%s'" % key) 136 raise repo.RepoError("unknown revision '%s'" % key)
143 137
144 def dev(self): 138 def dev(self):
145 if self.remote: return -1
146 return os.stat(self.path).st_dev 139 return os.stat(self.path).st_dev
147 140
148 def local(self): 141 def local(self):
149 return not self.remote 142 return True
150 143
151 def join(self, f): 144 def join(self, f):
152 return os.path.join(self.path, f) 145 return os.path.join(self.path, f)
153 146
154 def wjoin(self, f): 147 def wjoin(self, f):