diff -r c929f612afac -r 88ba0ff94605 mercurial/scmutil.py --- a/mercurial/scmutil.py Tue Jun 18 23:19:24 2019 -0700 +++ b/mercurial/scmutil.py Wed Jun 19 09:59:45 2019 -0700 @@ -1247,6 +1247,28 @@ return getrenamed +def getcopiesfn(repo, endrev=None): + if copiesmod.usechangesetcentricalgo(repo): + def copiesfn(ctx): + if ctx.p2copies(): + allcopies = ctx.p1copies().copy() + # There should be no overlap + allcopies.update(ctx.p2copies()) + return sorted(allcopies.items()) + else: + return sorted(ctx.p1copies().items()) + else: + getrenamed = getrenamedfn(repo, endrev) + def copiesfn(ctx): + copies = [] + for fn in ctx.files(): + rename = getrenamed(fn, ctx.rev()) + if rename: + copies.append((fn, rename)) + return copies + + return copiesfn + def dirstatecopy(ui, repo, wctx, src, dst, dryrun=False, cwd=None): """Update the dirstate to reflect the intent of copying src to dst. For different reasons it might not end with dst being marked as copied from src.