rollback: improve readability; clarify that the return value is an int.
--- 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')