# HG changeset patch # User Greg Ward # Date 1315790518 14400 # Node ID cda7a87c187159d3e2fba5b761aff038d6cd3512 # Parent 868282fa29d81a123f576e7bde8cfe4f7183f18c rollback: improve readability; clarify that the return value is an int. diff -r 868282fa29d8 -r cda7a87c1871 mercurial/localrepo.py --- a/mercurial/localrepo.py Mon Aug 22 22:50:52 2011 +0200 +++ b/mercurial/localrepo.py Sun Sep 11 21:21:58 2011 -0400 @@ -760,50 +760,54 @@ wlock = self.wlock() lock = self.lock() if os.path.exists(self.sjoin("undo")): - try: - args = self.opener.read("undo.desc").splitlines() - if len(args) >= 3 and self.ui.verbose: - desc = _("repository tip rolled back to revision %s" - " (undo %s: %s)\n") % ( - int(args[0]) - 1, args[1], args[2]) - elif len(args) >= 2: - desc = _("repository tip rolled back to revision %s" - " (undo %s)\n") % ( - int(args[0]) - 1, args[1]) - except IOError: - 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")) - if os.path.exists(self.join('undo.bookmarks')): - util.rename(self.join('undo.bookmarks'), - self.join('bookmarks')) - try: - branch = self.opener.read("undo.branch") - self.dirstate.setbranch(branch) - except IOError: - self.ui.warn(_("named branch could not be reset, " - "current branch is still: %s\n") - % self.dirstate.branch()) - self.invalidate() - self.dirstate.invalidate() - self.destroyed() - parents = tuple([p.rev() for p in self.parents()]) - if len(parents) > 1: - self.ui.status(_("working directory now based on " - "revisions %d and %d\n") % parents) - else: - self.ui.status(_("working directory now based on " - "revision %d\n") % parents) + return self._rollback(dryrun) else: self.ui.warn(_("no rollback information available\n")) return 1 finally: release(lock, wlock) + def _rollback(self, dryrun): + try: + args = self.opener.read("undo.desc").splitlines() + if len(args) >= 3 and self.ui.verbose: + desc = _("repository tip rolled back to revision %s" + " (undo %s: %s)\n") % ( + int(args[0]) - 1, args[1], args[2]) + elif len(args) >= 2: + desc = _("repository tip rolled back to revision %s" + " (undo %s)\n") % ( + int(args[0]) - 1, args[1]) + except IOError: + desc = _("rolling back unknown transaction\n") + self.ui.status(desc) + if dryrun: + return 0 + transaction.rollback(self.sopener, self.sjoin("undo"), + self.ui.warn) + util.rename(self.join("undo.dirstate"), self.join("dirstate")) + if os.path.exists(self.join('undo.bookmarks')): + util.rename(self.join('undo.bookmarks'), + self.join('bookmarks')) + try: + branch = self.opener.read("undo.branch") + self.dirstate.setbranch(branch) + except IOError: + self.ui.warn(_("named branch could not be reset, " + "current branch is still: %s\n") + % self.dirstate.branch()) + self.invalidate() + self.dirstate.invalidate() + self.destroyed() + parents = tuple([p.rev() for p in self.parents()]) + if len(parents) > 1: + self.ui.status(_("working directory now based on " + "revisions %d and %d\n") % parents) + else: + self.ui.status(_("working directory now based on " + "revision %d\n") % parents) + return 0 + def invalidatecaches(self): try: delattr(self, '_tagscache')