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 |