changeset 110:18897318f6e1

Merge from pmezard/hgforest-crew
author Michael Tharp <mtharp@rpath.com>
date Fri, 03 Dec 2010 14:02:18 -0500
parents 765bee053287 (diff) 3647b4bed1a1 (current diff)
children b3aa740a13f8
files forest.py
diffstat 1 files changed, 15 insertions(+), 12 deletions(-) [+]
line wrap: on
line diff
--- a/forest.py	Thu Nov 18 23:49:39 2010 +0100
+++ b/forest.py	Fri Dec 03 14:02:18 2010 -0500
@@ -580,6 +580,16 @@
             parents = ctx.parents()
             return [node.hex(parents[0].node())]
 
+        def rollback(self):
+            if self._repo:
+                try:
+                    self._repo.transaction('forest').__del__()
+                except TypeError, err:
+                    # Wrong number of arguments for hg < 1.6
+                    if '2 given' not in str(err):
+                        raise
+                    self._repo.transaction().__del__()
+
         def __repr__(self):
             return ("<forest.Tree object "
                     "- repo: %s "
@@ -923,10 +933,7 @@
             fetch.fetch(ui, tree.getrepo(ui), srcpath, **opts)
         except Exception, err:
             ui.warn(_("skipped: %s\n") % err)
-            try:
-                tree.repo.transaction().__del__()
-            except AttributeError:
-                pass
+            tree.rollback()
 
     @Forest.Tree.skip
     def check_mq(tree):
@@ -1100,8 +1107,7 @@
             commands.pull(ui, tree.getrepo(ui), srcpath, **opts)
         except Exception, err:
             ui.warn(_("skipped: %s\n") % err)
-            if tree._repo:
-                tree.repo.transaction().__del__()
+            tree.rollback()
 
     @Forest.Tree.skip
     def check_mq(tree):
@@ -1141,10 +1147,7 @@
             commands.push(ui, tree.getrepo(ui), destpath, **opts)
         except Exception, err:
             ui.warn(_("skipped: %s\n") % err)
-            try:
-                tree.repo.transaction().__del__()
-            except AttributeError:
-                pass
+            tree.rollback()
 
     @Forest.Tree.skip
     def check_mq(tree):
@@ -1316,7 +1319,7 @@
             commands.tag(ui, tree.getrepo(ui), name, rev_=None, **opts)
         except Exception, err:
             ui.warn(_("skipped: %s\n") % err)
-            tree.repo.transaction().__del__()
+            tree.rollback()
 
     @Forest.Tree.skip
     def check_mq(tree):
@@ -1388,7 +1391,7 @@
                                 clean=opts['clean'], date=opts['date'])
         except Exception, err:
             ui.warn(_("skipped: %s\n") % err)
-            tree.repo.transaction().__del__()
+            tree.rollback()
 
     @Forest.Tree.skip
     def check_mq(tree):