hgext/evolve.py
changeset 1024 9d538ebf3985
parent 1023 7c8e3941241f
child 1032 0fcddde7dae6
--- a/hgext/evolve.py	Wed Aug 06 18:10:00 2014 -0700
+++ b/hgext/evolve.py	Wed Aug 06 17:05:57 2014 -0700
@@ -96,8 +96,12 @@
 #####################################################################
 
 
-def retractboundary(repo, targetphase, nodes):
-    return phases.retractboundary(repo, targetphase, nodes)
+def retractboundary(repo, tr, targetphase, nodes):
+    """Older mercurial version does not move phase within a transaction"""
+    try:
+        return phases.retractboundary(repo, tr, targetphase, nodes)
+    except TypeError:
+        return phases.retractboundary(repo, targetphase, nodes)
 
 
 #####################################################################
@@ -870,7 +874,7 @@
             raise
         oldbookmarks = repo.nodebookmarks(nodesrc)
         if nodenew is not None:
-            retractboundary(repo, destphase, [nodenew])
+            retractboundary(repo, tr, destphase, [nodenew])
             createmarkers(repo, [(repo[nodesrc], (repo[nodenew],))])
             for book in oldbookmarks:
                 repo._bookmarks[book] = nodenew
@@ -1463,7 +1467,7 @@
             createmarkers(repo, [(tmpctx, ())])
             newid = prec.node()
         else:
-            retractboundary(repo, bumped.phase(), [newid])
+            retractboundary(repo, tr, bumped.phase(), [newid])
             createmarkers(repo, [(tmpctx, (repo[newid],))],
                                    flag=obsolete.bumpedfix)
         bmupdate(newid)
@@ -1568,7 +1572,7 @@
         else:
             new = repo['.']
         createmarkers(repo, [(other, (new,))])
-        retractboundary(repo, other.phase(), [new.node()])
+        retractboundary(repo, tr, other.phase(), [new.node()])
         tr.close()
     finally:
         tr.release()
@@ -1969,7 +1973,7 @@
                              hint=_("use --all to uncommit all files"))
         # Move local changes on filtered changeset
         createmarkers(repo, [(old, (repo[newid],))])
-        retractboundary(repo, oldphase, [newid])
+        retractboundary(repo, tr, oldphase, [newid])
         repo.dirstate.setparents(newid, node.nullid)
         _uncommitdirstate(repo, old, match)
         updatebookmarks(newid)
@@ -2055,7 +2059,7 @@
                 newmapping[ctx.node()] = new
                 if not duplicate:
                     createmarkers(repo, [(ctx, (repo[new],))])
-                retractboundary(repo, ctx.phase(), [new])
+                retractboundary(repo, tr, ctx.phase(), [new])
                 if ctx in repo[None].parents():
                     repo.dirstate.setparents(new, node.nullid)
             tr.close()
@@ -2158,7 +2162,7 @@
             newid, unusedvariable = rewrite(repo, root, allctx, head,
                                             [root.p1().node(), root.p2().node()],
                                             commitopts=commitopts)
-            retractboundary(repo, targetphase, [newid])
+            retractboundary(repo, tr, targetphase, [newid])
             createmarkers(repo, [(ctx, (repo[newid],))
                                  for ctx in allctx])
             tr.close()