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): |