hgext/evolve.py
changeset 1024 9d538ebf3985
parent 1023 7c8e3941241f
child 1032 0fcddde7dae6
equal deleted inserted replaced
1023:7c8e3941241f 1024:9d538ebf3985
    94 #####################################################################
    94 #####################################################################
    95 ### Compatibility with core                                       ###
    95 ### Compatibility with core                                       ###
    96 #####################################################################
    96 #####################################################################
    97 
    97 
    98 
    98 
    99 def retractboundary(repo, targetphase, nodes):
    99 def retractboundary(repo, tr, targetphase, nodes):
   100     return phases.retractboundary(repo, targetphase, nodes)
   100     """Older mercurial version does not move phase within a transaction"""
       
   101     try:
       
   102         return phases.retractboundary(repo, tr, targetphase, nodes)
       
   103     except TypeError:
       
   104         return phases.retractboundary(repo, targetphase, nodes)
   101 
   105 
   102 
   106 
   103 #####################################################################
   107 #####################################################################
   104 ### Extension helper                                              ###
   108 ### Extension helper                                              ###
   105 #####################################################################
   109 #####################################################################
   868                 pass
   872                 pass
   869             exc.__class__ = LocalMergeFailure
   873             exc.__class__ = LocalMergeFailure
   870             raise
   874             raise
   871         oldbookmarks = repo.nodebookmarks(nodesrc)
   875         oldbookmarks = repo.nodebookmarks(nodesrc)
   872         if nodenew is not None:
   876         if nodenew is not None:
   873             retractboundary(repo, destphase, [nodenew])
   877             retractboundary(repo, tr, destphase, [nodenew])
   874             createmarkers(repo, [(repo[nodesrc], (repo[nodenew],))])
   878             createmarkers(repo, [(repo[nodesrc], (repo[nodenew],))])
   875             for book in oldbookmarks:
   879             for book in oldbookmarks:
   876                 repo._bookmarks[book] = nodenew
   880                 repo._bookmarks[book] = nodenew
   877         else:
   881         else:
   878             createmarkers(repo, [(repo[nodesrc], ())])
   882             createmarkers(repo, [(repo[nodesrc], ())])
  1461             newid = repo.commitctx(new)
  1465             newid = repo.commitctx(new)
  1462         if newid is None:
  1466         if newid is None:
  1463             createmarkers(repo, [(tmpctx, ())])
  1467             createmarkers(repo, [(tmpctx, ())])
  1464             newid = prec.node()
  1468             newid = prec.node()
  1465         else:
  1469         else:
  1466             retractboundary(repo, bumped.phase(), [newid])
  1470             retractboundary(repo, tr, bumped.phase(), [newid])
  1467             createmarkers(repo, [(tmpctx, (repo[newid],))],
  1471             createmarkers(repo, [(tmpctx, (repo[newid],))],
  1468                                    flag=obsolete.bumpedfix)
  1472                                    flag=obsolete.bumpedfix)
  1469         bmupdate(newid)
  1473         bmupdate(newid)
  1470         tr.close()
  1474         tr.close()
  1471         repo.ui.status(_('committed as %s\n') % node.short(newid))
  1475         repo.ui.status(_('committed as %s\n') % node.short(newid))
  1566             new = divergent
  1570             new = divergent
  1567             # no changes
  1571             # no changes
  1568         else:
  1572         else:
  1569             new = repo['.']
  1573             new = repo['.']
  1570         createmarkers(repo, [(other, (new,))])
  1574         createmarkers(repo, [(other, (new,))])
  1571         retractboundary(repo, other.phase(), [new.node()])
  1575         retractboundary(repo, tr, other.phase(), [new.node()])
  1572         tr.close()
  1576         tr.close()
  1573     finally:
  1577     finally:
  1574         tr.release()
  1578         tr.release()
  1575 
  1579 
  1576 def divergentdata(ctx):
  1580 def divergentdata(ctx):
  1967         if newid is None:
  1971         if newid is None:
  1968             raise util.Abort(_('nothing to uncommit'),
  1972             raise util.Abort(_('nothing to uncommit'),
  1969                              hint=_("use --all to uncommit all files"))
  1973                              hint=_("use --all to uncommit all files"))
  1970         # Move local changes on filtered changeset
  1974         # Move local changes on filtered changeset
  1971         createmarkers(repo, [(old, (repo[newid],))])
  1975         createmarkers(repo, [(old, (repo[newid],))])
  1972         retractboundary(repo, oldphase, [newid])
  1976         retractboundary(repo, tr, oldphase, [newid])
  1973         repo.dirstate.setparents(newid, node.nullid)
  1977         repo.dirstate.setparents(newid, node.nullid)
  1974         _uncommitdirstate(repo, old, match)
  1978         _uncommitdirstate(repo, old, match)
  1975         updatebookmarks(newid)
  1979         updatebookmarks(newid)
  1976         if not repo[newid].files():
  1980         if not repo[newid].files():
  1977             ui.warn(_("new changeset is empty\n"))
  1981             ui.warn(_("new changeset is empty\n"))
  2053                                               commitopts={'extra': extra})
  2057                                               commitopts={'extra': extra})
  2054                 # store touched version to help potential children
  2058                 # store touched version to help potential children
  2055                 newmapping[ctx.node()] = new
  2059                 newmapping[ctx.node()] = new
  2056                 if not duplicate:
  2060                 if not duplicate:
  2057                     createmarkers(repo, [(ctx, (repo[new],))])
  2061                     createmarkers(repo, [(ctx, (repo[new],))])
  2058                 retractboundary(repo, ctx.phase(), [new])
  2062                 retractboundary(repo, tr, ctx.phase(), [new])
  2059                 if ctx in repo[None].parents():
  2063                 if ctx in repo[None].parents():
  2060                     repo.dirstate.setparents(new, node.nullid)
  2064                     repo.dirstate.setparents(new, node.nullid)
  2061             tr.close()
  2065             tr.close()
  2062         finally:
  2066         finally:
  2063             tr.release()
  2067             tr.release()
  2156                 commitopts['edit'] = True
  2160                 commitopts['edit'] = True
  2157 
  2161 
  2158             newid, unusedvariable = rewrite(repo, root, allctx, head,
  2162             newid, unusedvariable = rewrite(repo, root, allctx, head,
  2159                                             [root.p1().node(), root.p2().node()],
  2163                                             [root.p1().node(), root.p2().node()],
  2160                                             commitopts=commitopts)
  2164                                             commitopts=commitopts)
  2161             retractboundary(repo, targetphase, [newid])
  2165             retractboundary(repo, tr, targetphase, [newid])
  2162             createmarkers(repo, [(ctx, (repo[newid],))
  2166             createmarkers(repo, [(ctx, (repo[newid],))
  2163                                  for ctx in allctx])
  2167                                  for ctx in allctx])
  2164             tr.close()
  2168             tr.close()
  2165         finally:
  2169         finally:
  2166             tr.release()
  2170             tr.release()