# HG changeset patch # User Pierre-Yves David # Date 1556014812 -7200 # Node ID 093df66127ecb112fe39c5f5eb43358e371bc308 # Parent e7b44e9c38d2b7e78d52ed97daf28299d1a08dd4 compat: backed out changeset cfcb7eedc666 That changesets breaks 4.4 compat. We will reinstall it for the next version. diff -r e7b44e9c38d2 -r 093df66127ec CHANGELOG --- a/CHANGELOG Fri Apr 19 10:31:53 2019 +0530 +++ b/CHANGELOG Tue Apr 23 12:20:12 2019 +0200 @@ -5,6 +5,8 @@ ------------------- * evolve: make sure we use upstream merge code with 5.0, + * evolve: restore compatibility with 4.4 + (This regress the narrow compatibility) * topic: compatibility with mercurial-5.0, * topic: improve extensions isolation (issue6121). diff -r e7b44e9c38d2 -r 093df66127ec hgext3rd/evolve/evolvecmd.py --- a/hgext3rd/evolve/evolvecmd.py Fri Apr 19 10:31:53 2019 +0530 +++ b/hgext3rd/evolve/evolvecmd.py Tue Apr 23 12:20:12 2019 +0200 @@ -276,22 +276,43 @@ newid = None replacementnode = None - # Create the new commit context. This is done by applying the changes from - # the precursor to the bumped node onto the precursor. This is effectively - # like reverting to the bumped node. - wctx = context.overlayworkingctx(repo) - wctx.setbase(prec) - merge.update(repo, bumped.node(), ancestor=prec, mergeancestor=True, - branchmerge=True, force=False, wc=wctx) - if not wctx.isempty(): + # Create the new commit context + files = set() + copied = copies.pathcopies(prec, bumped) + precmanifest = prec.manifest().copy() + # 3.3.2 needs a list. + # future 3.4 don't detect the size change during iteration + # this is fishy + for key, val in list(bumped.manifest().iteritems()): + precvalue = precmanifest.get(key, None) + if precvalue is not None: + del precmanifest[key] + if precvalue != val: + files.add(key) + files.update(precmanifest) # add missing files + + # commit it + if files: # something to commit! + def filectxfn(repo, ctx, path): + if path in bumped: + fctx = bumped[path] + flags = fctx.flags() + mctx = compat.memfilectx(repo, ctx, fctx, flags, copied, path) + return mctx + return None text = '%s update to %s:\n\n' % (TROUBLES['PHASEDIVERGENT'], prec) text += bumped.description() - memctx = wctx.tomemctx(text, - parents=(prec.node(), nodemod.nullid), - date=bumped.date(), - extra=bumped.extra(), - user=bumped.user()) - newid = repo.commitctx(memctx) + + new = context.memctx(repo, + parents=[prec.node(), nodemod.nullid], + text=text, + files=files, + filectxfn=filectxfn, + user=bumped.user(), + date=bumped.date(), + extra=bumped.extra()) + + newid = repo.commitctx(new) replacementnode = newid if newid is None: repo.ui.status(_('no changes to commit\n'))