diff mercurial/localrepo.py @ 10882:f0bfe42c7b1f

rollback: add dry-run argument, emit transaction description
author Steve Borho <steve@borho.org>
date Fri, 09 Apr 2010 17:23:37 -0500
parents a685011ed38e
children 38f2ef9c134b
line wrap: on
line diff
--- a/mercurial/localrepo.py	Fri Apr 09 17:23:35 2010 -0500
+++ b/mercurial/localrepo.py	Fri Apr 09 17:23:37 2010 -0500
@@ -599,13 +599,25 @@
         finally:
             lock.release()
 
-    def rollback(self):
+    def rollback(self, dryrun=False):
         wlock = lock = None
         try:
             wlock = self.wlock()
             lock = self.lock()
             if os.path.exists(self.sjoin("undo")):
-                self.ui.status(_("rolling back last transaction\n"))
+                try:
+                    args = self.opener("undo.desc", "r").read().split(",")
+                    if len(args) == 3 and self.ui.verbose:
+                        desc = _("rolling back %s (%s) to revision %s\n") % (
+                                 args[1], args[2], args[0])
+                    else:
+                        desc = _("rolling back %s to revision %s\n") % (
+                                 args[1], args[0])
+                except (IOError, IndexError):
+                    desc = _("rolling back unknown transaction\n")
+                self.ui.status(desc)
+                if dryrun:
+                    return
                 transaction.rollback(self.sopener, self.sjoin("undo"),
                                      self.ui.warn)
                 util.rename(self.join("undo.dirstate"), self.join("dirstate"))