Mercurial > hg
changeset 785:46a8dd3145cc
Fix undo after aborted commit bug
Commit would overwrite undo.dirstate unconditionally, so an undo after
an aborted commit would restore the dirstate from the aborted commit
and not the prior transaction.
This copies dirstate to journal.dirstate and moves it after a
successful transaction.
author | mpm@selenic.com |
---|---|
date | Wed, 27 Jul 2005 18:16:20 -0800 |
parents | 853bfbf1a312 |
children | 902b12d55751 |
files | mercurial/hg.py mercurial/transaction.py tests/test-hup.out |
diffstat | 3 files changed, 10 insertions(+), 6 deletions(-) [+] |
line wrap: on
line diff
--- a/mercurial/hg.py Wed Jul 27 10:21:19 2005 -0800 +++ b/mercurial/hg.py Wed Jul 27 18:16:20 2005 -0800 @@ -675,11 +675,15 @@ ds = self.opener("dirstate").read() except IOError: ds = "" - self.opener("undo.dirstate", "w").write(ds) + self.opener("journal.dirstate", "w").write(ds) - return transaction.transaction(self.ui.warn, - self.opener, self.join("journal"), - self.join("undo")) + def after(): + util.rename(self.join("journal"), self.join("undo")) + util.rename(self.join("journal.dirstate"), + self.join("undo.dirstate")) + + return transaction.transaction(self.ui.warn, self.opener, + self.join("journal"), after) def recover(self): lock = self.lock()