Mercurial > hg
comparison hgext/uncommit.py @ 41342:fe83040400b7
uncommit: set dirstateparents from within _fixdirstate()
It's now done in the same way for uncommit and unamend, so we can
share the code.
Differential Revision: https://phab.mercurial-scm.org/D5662
author | Martin von Zweigbergk <martinvonz@google.com> |
---|---|
date | Sun, 20 Jan 2019 21:49:58 -0800 |
parents | 19c590ce8661 |
children | 0bd56c291359 |
comparison
equal
deleted
inserted
replaced
41341:19c590ce8661 | 41342:fe83040400b7 |
---|---|
96 def _fixdirstate(repo, oldctx, newctx, match=None): | 96 def _fixdirstate(repo, oldctx, newctx, match=None): |
97 """ fix the dirstate after switching the working directory from oldctx to | 97 """ fix the dirstate after switching the working directory from oldctx to |
98 newctx which can be result of either unamend or uncommit. | 98 newctx which can be result of either unamend or uncommit. |
99 """ | 99 """ |
100 ds = repo.dirstate | 100 ds = repo.dirstate |
101 ds.setparents(newctx.node(), node.nullid) | |
101 copies = dict(ds.copies()) | 102 copies = dict(ds.copies()) |
102 s = newctx.status(oldctx, match=match) | 103 s = newctx.status(oldctx, match=match) |
103 for f in s.modified: | 104 for f in s.modified: |
104 if ds[f] == 'r': | 105 if ds[f] == 'r': |
105 # modified + removed -> removed | 106 # modified + removed -> removed |
174 else: | 175 else: |
175 # Fully removed the old commit | 176 # Fully removed the old commit |
176 mapping[old.node()] = () | 177 mapping[old.node()] = () |
177 | 178 |
178 with repo.dirstate.parentchange(): | 179 with repo.dirstate.parentchange(): |
179 repo.dirstate.setparents(newid, node.nullid) | |
180 _fixdirstate(repo, old, repo[newid], match) | 180 _fixdirstate(repo, old, repo[newid], match) |
181 | 181 |
182 scmutil.cleanupnodes(repo, mapping, 'uncommit', fixphase=True) | 182 scmutil.cleanupnodes(repo, mapping, 'uncommit', fixphase=True) |
183 | 183 |
184 def predecessormarkers(ctx): | 184 def predecessormarkers(ctx): |
237 newprednode = repo.commitctx(newctx) | 237 newprednode = repo.commitctx(newctx) |
238 newpredctx = repo[newprednode] | 238 newpredctx = repo[newprednode] |
239 dirstate = repo.dirstate | 239 dirstate = repo.dirstate |
240 | 240 |
241 with dirstate.parentchange(): | 241 with dirstate.parentchange(): |
242 dirstate.setparents(newprednode, node.nullid) | |
243 _fixdirstate(repo, curctx, newpredctx) | 242 _fixdirstate(repo, curctx, newpredctx) |
244 | 243 |
245 mapping = {curctx.node(): (newprednode,)} | 244 mapping = {curctx.node(): (newprednode,)} |
246 scmutil.cleanupnodes(repo, mapping, 'unamend', fixphase=True) | 245 scmutil.cleanupnodes(repo, mapping, 'unamend', fixphase=True) |