Mercurial > hg
changeset 47766:3feda1e779d4 stable
fix: rewrite writeworkingdir() to explicitly not work with merges
`hg fix` errors out early if there is an unfinished merge, so we
should have only one parent here. Making that explicit makes my next
patches simpler.
Differential Revision: https://phab.mercurial-scm.org/D11209
author | Martin von Zweigbergk <martinvonz@google.com> |
---|---|
date | Mon, 11 Mar 2019 10:56:56 -0700 |
parents | 184d83ef2e59 |
children | 66ad7e32011f |
files | hgext/fix.py |
diffstat | 1 files changed, 7 insertions(+), 4 deletions(-) [+] |
line wrap: on
line diff
--- a/hgext/fix.py Thu Jul 22 17:12:56 2021 -0700 +++ b/hgext/fix.py Mon Mar 11 10:56:56 2019 -0700 @@ -132,6 +132,7 @@ from mercurial.i18n import _ from mercurial.node import ( + nullid, nullrev, wdirrev, ) @@ -753,16 +754,18 @@ Directly updates the dirstate for the affected files. """ + assert repo.dirstate.p2() == nullid + for path, data in pycompat.iteritems(filedata): fctx = ctx[path] fctx.write(data, fctx.flags()) if repo.dirstate[path] == b'n': repo.dirstate.set_possibly_dirty(path) - oldparentnodes = repo.dirstate.parents() - newparentnodes = [replacements.get(n, n) for n in oldparentnodes] - if newparentnodes != oldparentnodes: - repo.setparents(*newparentnodes) + oldp1 = repo.dirstate.p1() + newp1 = replacements.get(oldp1, oldp1) + if newp1 != oldp1: + repo.setparents(newp1, nullid) def replacerev(ui, repo, ctx, filedata, replacements):