Mercurial > public > mercurial-scm > hg-stable
diff mercurial/hg.py @ 210:d2badbd7d1ad
hg undo: fixup working dir state
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
hg undo: fixup working dir state
manifest hash: 60fd7a5621f7c4e87c7c36097aaf11b22e7ee0b4
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.0 (GNU/Linux)
iD8DBQFCngETywK+sNU5EO8RAiC/AKChvIgy61YfOLJcTQg5BKkTLLErRgCgnJMr
+xb+XsjeNfK+83MzeuE8UOk=
=EIlj
-----END PGP SIGNATURE-----
author | mpm@selenic.com |
---|---|
date | Wed, 01 Jun 2005 10:40:19 -0800 |
parents | ec327cf0d3a9 |
children | 201115f2859b |
line wrap: on
line diff
--- a/mercurial/hg.py Wed Jun 01 00:25:42 2005 -0800 +++ b/mercurial/hg.py Wed Jun 01 10:40:19 2005 -0800 @@ -329,13 +329,35 @@ return transaction(self.opener, self.join("journal"), self.join("undo")) - def recover(self, f = "journal"): + def recover(self): + self.lock() + if os.path.exists(self.join("recover")): + self.ui.status("attempting to rollback interrupted transaction\n") + return rollback(self.opener, self.join("recover")) + else: + self.ui.warn("no interrupted transaction available\n") + + def undo(self): self.lock() - if os.path.exists(self.join(f)): - self.ui.status("attempting to rollback %s information\n" % f) - return rollback(self.opener, self.join(f)) + if os.path.exists(self.join("undo")): + self.ui.status("attempting to rollback last transaction\n") + rollback(self.opener, self.join("undo")) + self.manifest = manifest(self.opener) + self.changelog = changelog(self.opener) + + self.ui.status("discarding dircache\n") + node = self.changelog.tip() + mf = self.changelog.read(node)[0] + mm = self.manifest.read(mf) + f = mm.keys() + f.sort() + + self.setcurrent(node) + self.dircache.clear() + self.dircache.taint(f) + else: - self.ui.warn("no %s information available\n" % f) + self.ui.warn("no undo information available\n") def lock(self, wait = 1): try: @@ -476,7 +498,7 @@ if fn in dc: c = dc[fn] del dc[fn] - if not c: + if not c or c[1] < 0: if fcmp(fn): changed.append(fn) elif c[1] != s.st_size: