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