Mercurial > public > mercurial-scm > hg
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 | mercurial/hg.py@221b5252864c mercurial/hg.py@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 " + |