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) |