hgext3rd/evolve/evolvecmd.py
changeset 3760 88601e1cd5d8
parent 3759 3fe3f3070df9
child 3772 6240579fd0c0
equal deleted inserted replaced
3759:3fe3f3070df9 3760:88601e1cd5d8
    31 )
    31 )
    32 
    32 
    33 from mercurial.i18n import _
    33 from mercurial.i18n import _
    34 
    34 
    35 from . import (
    35 from . import (
    36     cmdrewrite,
       
    37     compat,
    36     compat,
    38     exthelper,
    37     exthelper,
    39     rewriteutil,
    38     rewriteutil,
    40     state,
    39     state,
    41     utility,
    40     utility,
   445         progresscb()
   444         progresscb()
   446     emtpycommitallowed = repo.ui.backupconfig('ui', 'allowemptycommit')
   445     emtpycommitallowed = repo.ui.backupconfig('ui', 'allowemptycommit')
   447     tr = repo.currenttransaction()
   446     tr = repo.currenttransaction()
   448     assert tr is not None
   447     assert tr is not None
   449     try:
   448     try:
   450         repo.ui.setconfig('ui', 'allowemptycommit', True, 'evolve')
       
   451         with repo.dirstate.parentchange():
   449         with repo.dirstate.parentchange():
   452             repo.dirstate.setparents(divergent.node(), node.nullid)
   450             repo.dirstate.setparents(divergent.p1().node(), node.nullid)
   453         oldlen = len(repo)
   451 
   454         # temporary hack because we can't use cmdrewrite.amend() during an
   452         newnode = repo.commit(text=divergent.description(), user=repo.ui.username())
   455         # interrupted evolve
   453         if newnode == divergent.node() or newnode is None:
   456         evolvestate.delete()
   454             # no changes
   457 
       
   458         # XXX: we should not use amend here, rather create a new commit
       
   459         cmdrewrite.amend(ui, repo, message='', logfile='')
       
   460         # XXX: we can get rid of this len() call also by creating a new commit
       
   461         if oldlen == len(repo):
       
   462             new = divergent
   455             new = divergent
   463             # no changes
   456             repo.ui.status(_("nothing changed\n"))
       
   457             hg.updaterepo(repo, divergent.rev(), False)
       
   458             obsolete.createmarkers(repo, [(other, (new,))], operation='evolve')
   464         else:
   459         else:
   465             new = repo['.']
   460             new = repo[newnode]
       
   461             hg.updaterepo(repo, new.rev(), False)
       
   462             obsolete.createmarkers(repo, [(other, (new,))], operation='evolve')
       
   463             obsolete.createmarkers(repo, [(divergent, (new,))], operation='evolve')
   466 
   464 
   467         # creating markers and moving phases post-resolution
   465         # creating markers and moving phases post-resolution
   468         obsolete.createmarkers(repo, [(other, (new,))], operation='evolve')
       
   469         phases.retractboundary(repo, tr, other.phase(), [new.node()])
   466         phases.retractboundary(repo, tr, other.phase(), [new.node()])
   470         return (True, new.node())
   467         return (True, new.node())
   471     finally:
   468     finally:
   472         repo.ui.restoreconfig(emtpycommitallowed)
   469         repo.ui.restoreconfig(emtpycommitallowed)
   473 
   470