Mercurial > hg > mercurial-crew-with-dirclash
comparison mercurial/hg.py @ 793:445970ccf57a
Merge with upstream
author | Thomas Arendsen Hein <thomas@intevation.de> |
---|---|
date | Fri, 29 Jul 2005 06:43:21 +0100 |
parents | 20e95c245bc3 902b12d55751 |
children | 8f5637f0a0c0 |
comparison
equal
deleted
inserted
replaced
792:49ec802b4a16 | 793:445970ccf57a |
---|---|
14 demandload(globals(), "bisect select") | 14 demandload(globals(), "bisect select") |
15 | 15 |
16 class filelog(revlog): | 16 class filelog(revlog): |
17 def __init__(self, opener, path): | 17 def __init__(self, opener, path): |
18 revlog.__init__(self, opener, | 18 revlog.__init__(self, opener, |
19 os.path.join("data", path + ".i"), | 19 os.path.join("data", self.encodedir(path + ".i")), |
20 os.path.join("data", path + ".d")) | 20 os.path.join("data", self.encodedir(path + ".d"))) |
21 | |
22 # This avoids a collision between a file named foo and a dir named | |
23 # foo.i or foo.d | |
24 def encodedir(self, path): | |
25 path.replace(".hg/", ".hg.hg/") | |
26 path.replace(".i/", ".i.hg/") | |
27 path.replace(".d/", ".i.hg/") | |
28 return path | |
29 | |
30 def decodedir(self, path): | |
31 path.replace(".d.hg/", ".d/") | |
32 path.replace(".i.hg/", ".i/") | |
33 path.replace(".hg.hg/", ".hg/") | |
34 return path | |
21 | 35 |
22 def read(self, node): | 36 def read(self, node): |
23 t = self.revision(node) | 37 t = self.revision(node) |
24 if not t.startswith('\1\n'): | 38 if not t.startswith('\1\n'): |
25 return t | 39 return t |
673 # save dirstate for undo | 687 # save dirstate for undo |
674 try: | 688 try: |
675 ds = self.opener("dirstate").read() | 689 ds = self.opener("dirstate").read() |
676 except IOError: | 690 except IOError: |
677 ds = "" | 691 ds = "" |
678 self.opener("undo.dirstate", "w").write(ds) | 692 self.opener("journal.dirstate", "w").write(ds) |
679 | 693 |
680 return transaction.transaction(self.ui.warn, | 694 def after(): |
681 self.opener, self.join("journal"), | 695 util.rename(self.join("journal"), self.join("undo")) |
682 self.join("undo")) | 696 util.rename(self.join("journal.dirstate"), |
697 self.join("undo.dirstate")) | |
698 | |
699 return transaction.transaction(self.ui.warn, self.opener, | |
700 self.join("journal"), after) | |
683 | 701 |
684 def recover(self): | 702 def recover(self): |
685 lock = self.lock() | 703 lock = self.lock() |
686 if os.path.exists(self.join("journal")): | 704 if os.path.exists(self.join("journal")): |
687 self.ui.status("rolling back interrupted transaction\n") | 705 self.ui.status("rolling back interrupted transaction\n") |
957 else: | 975 else: |
958 self.dirstate.update([f], "r") | 976 self.dirstate.update([f], "r") |
959 | 977 |
960 def copy(self, source, dest): | 978 def copy(self, source, dest): |
961 p = self.wjoin(dest) | 979 p = self.wjoin(dest) |
962 if not os.path.exists(dest): | 980 if not os.path.exists(p): |
963 self.ui.warn("%s does not exist!\n" % dest) | 981 self.ui.warn("%s does not exist!\n" % dest) |
964 elif not os.path.isfile(dest): | 982 elif not os.path.isfile(p): |
965 self.ui.warn("copy failed: %s is not a file\n" % dest) | 983 self.ui.warn("copy failed: %s is not a file\n" % dest) |
966 else: | 984 else: |
967 if self.dirstate.state(dest) == '?': | 985 if self.dirstate.state(dest) == '?': |
968 self.dirstate.update([dest], "a") | 986 self.dirstate.update([dest], "a") |
969 self.dirstate.copy(source, dest) | 987 self.dirstate.copy(source, dest) |
1276 self.ui.status("adding manifests\n") | 1294 self.ui.status("adding manifests\n") |
1277 mm = self.manifest.tip() | 1295 mm = self.manifest.tip() |
1278 mo = self.manifest.addgroup(getgroup(), revmap, tr) | 1296 mo = self.manifest.addgroup(getgroup(), revmap, tr) |
1279 | 1297 |
1280 # process the files | 1298 # process the files |
1281 self.ui.status("adding file revisions\n") | 1299 self.ui.status("adding file changes\n") |
1282 while 1: | 1300 while 1: |
1283 f = getchunk() | 1301 f = getchunk() |
1284 if not f: break | 1302 if not f: break |
1285 self.ui.debug("adding %s revisions\n" % f) | 1303 self.ui.debug("adding %s revisions\n" % f) |
1286 fl = self.file(f) | 1304 fl = self.file(f) |
1287 o = fl.count() | 1305 o = fl.count() |
1288 n = fl.addgroup(getgroup(), revmap, tr) | 1306 n = fl.addgroup(getgroup(), revmap, tr) |
1289 revisions += fl.count() - o | 1307 revisions += fl.count() - o |
1290 files += 1 | 1308 files += 1 |
1291 | 1309 |
1292 self.ui.status(("modified %d files, added %d changesets" + | 1310 self.ui.status(("added %d changesets" + |
1293 " and %d new revisions\n") | 1311 " with %d changes to %d files\n") |
1294 % (files, changesets, revisions)) | 1312 % (changesets, revisions, files)) |
1295 | 1313 |
1296 tr.close() | 1314 tr.close() |
1315 | |
1316 if not self.hook("changegroup"): | |
1317 return 1 | |
1318 | |
1297 return | 1319 return |
1298 | 1320 |
1299 def update(self, node, allow=False, force=False, choose=None, | 1321 def update(self, node, allow=False, force=False, choose=None, |
1300 moddirstate=True): | 1322 moddirstate=True): |
1301 pl = self.dirstate.parents() | 1323 pl = self.dirstate.parents() |