hgext/evolve.py
changeset 1112 c3e23fbf7bd7
parent 1111 6328e005b6c8
child 1116 d4977b04ef98
equal deleted inserted replaced
1111:6328e005b6c8 1112:c3e23fbf7bd7
  1449         tr.close()
  1449         tr.close()
  1450         repo.ui.status(_('committed as %s\n') % node.short(newid))
  1450         repo.ui.status(_('committed as %s\n') % node.short(newid))
  1451     finally:
  1451     finally:
  1452         tr.release()
  1452         tr.release()
  1453     # reroute the working copy parent to the new changeset
  1453     # reroute the working copy parent to the new changeset
       
  1454     repo.dirstate.beginparentchange()
  1454     repo.dirstate.setparents(newid, node.nullid)
  1455     repo.dirstate.setparents(newid, node.nullid)
       
  1456     repo.dirstate.endparentchange()
  1455 
  1457 
  1456 def _solvedivergent(ui, repo, divergent, dryrun=False, confirm=False,
  1458 def _solvedivergent(ui, repo, divergent, dryrun=False, confirm=False,
  1457                     progresscb=None):
  1459                     progresscb=None):
  1458     base, others = divergentdata(divergent)
  1460     base, others = divergentdata(divergent)
  1459     if len(others) > 1:
  1461     if len(others) > 1:
  1537 /!\ * hg kill -n Y W Z
  1539 /!\ * hg kill -n Y W Z
  1538 """)
  1540 """)
  1539     if progresscb: progresscb()
  1541     if progresscb: progresscb()
  1540     tr = repo.transaction('stabilize-divergent')
  1542     tr = repo.transaction('stabilize-divergent')
  1541     try:
  1543     try:
       
  1544         repo.dirstate.beginparentchange()
  1542         repo.dirstate.setparents(divergent.node(), node.nullid)
  1545         repo.dirstate.setparents(divergent.node(), node.nullid)
       
  1546         repo.dirstate.endparentchange()
  1543         oldlen = len(repo)
  1547         oldlen = len(repo)
  1544         amend(ui, repo, message='', logfile='')
  1548         amend(ui, repo, message='', logfile='')
  1545         if oldlen == len(repo):
  1549         if oldlen == len(repo):
  1546             new = divergent
  1550             new = divergent
  1547             # no changes
  1551             # no changes
  1986             raise util.Abort(_('nothing to uncommit'),
  1990             raise util.Abort(_('nothing to uncommit'),
  1987                              hint=_("use --all to uncommit all files"))
  1991                              hint=_("use --all to uncommit all files"))
  1988         # Move local changes on filtered changeset
  1992         # Move local changes on filtered changeset
  1989         obsolete.createmarkers(repo, [(old, (repo[newid],))])
  1993         obsolete.createmarkers(repo, [(old, (repo[newid],))])
  1990         phases.retractboundary(repo, tr, oldphase, [newid])
  1994         phases.retractboundary(repo, tr, oldphase, [newid])
       
  1995         repo.dirstate.beginparentchange()
  1991         repo.dirstate.setparents(newid, node.nullid)
  1996         repo.dirstate.setparents(newid, node.nullid)
  1992         _uncommitdirstate(repo, old, match)
  1997         _uncommitdirstate(repo, old, match)
       
  1998         repo.dirstate.endparentchange()
  1993         updatebookmarks(newid)
  1999         updatebookmarks(newid)
  1994         if not repo[newid].files():
  2000         if not repo[newid].files():
  1995             ui.warn(_("new changeset is empty\n"))
  2001             ui.warn(_("new changeset is empty\n"))
  1996             ui.status(_('(use "hg prune ." to remove it)\n'))
  2002             ui.status(_('(use "hg prune ." to remove it)\n'))
  1997         tr.close()
  2003         tr.close()
  2073                 newmapping[ctx.node()] = new
  2079                 newmapping[ctx.node()] = new
  2074                 if not duplicate:
  2080                 if not duplicate:
  2075                     obsolete.createmarkers(repo, [(ctx, (repo[new],))])
  2081                     obsolete.createmarkers(repo, [(ctx, (repo[new],))])
  2076                 phases.retractboundary(repo, tr, ctx.phase(), [new])
  2082                 phases.retractboundary(repo, tr, ctx.phase(), [new])
  2077                 if ctx in repo[None].parents():
  2083                 if ctx in repo[None].parents():
       
  2084                     repo.dirstate.beginparentchange()
  2078                     repo.dirstate.setparents(new, node.nullid)
  2085                     repo.dirstate.setparents(new, node.nullid)
       
  2086                     repo.dirstate.endparentchange()
  2079             tr.close()
  2087             tr.close()
  2080         finally:
  2088         finally:
  2081             tr.release()
  2089             tr.release()
  2082     finally:
  2090     finally:
  2083         lockmod.release(lock, wlock)
  2091         lockmod.release(lock, wlock)