Mercurial > evolve
changeset 4560:c6843baf36fc mercurial-4.6
test-compat: merge mercurial-4.7 into mercurial-4.6
author | Pierre-Yves David <pierre-yves.david@octobus.net> |
---|---|
date | Tue, 23 Apr 2019 12:29:47 +0200 |
parents | c67a6998b8ba (diff) 160fa01e832b (current diff) |
children | 4f98144368f3 2545d4e962e3 |
files | |
diffstat | 2 files changed, 37 insertions(+), 14 deletions(-) [+] |
line wrap: on
line diff
--- a/CHANGELOG Sat Apr 20 03:55:09 2019 +0200 +++ b/CHANGELOG Tue Apr 23 12:29:47 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).
--- a/hgext3rd/evolve/evolvecmd.py Sat Apr 20 03:55:09 2019 +0200 +++ b/hgext3rd/evolve/evolvecmd.py Tue Apr 23 12:29:47 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'))