diff -r 1fcfff09cac5 -r 929054848d6c mercurial/copies.py --- a/mercurial/copies.py Sun Dec 13 20:26:27 2020 +0100 +++ b/mercurial/copies.py Sun Dec 13 20:16:34 2020 +0100 @@ -196,9 +196,7 @@ changelogrevision = cl.changelogrevision - alwaysmatch = match.always() - - if rustmod is not None and alwaysmatch: + if rustmod is not None: def revinfo(rev): p1, p2 = parents(rev) @@ -356,7 +354,7 @@ alwaysmatch = match.always() - if rustmod is not None and alwaysmatch: + if rustmod is not None: final_copies = rustmod.combine_changeset_copies( list(revs), children_count, targetrev, revinfo, isancestor ) @@ -396,12 +394,6 @@ elif parent == 2: childcopies = changes.copied_from_p2 - if not alwaysmatch: - childcopies = { - dst: src - for dst, src in childcopies.items() - if match(dst) - } if childcopies: newcopies = copies.copy() for dest, source in pycompat.iteritems(childcopies): @@ -447,6 +439,10 @@ for dest, (tt, source) in all_copies[targetrev].items(): if source is not None: final_copies[dest] = source + if not alwaysmatch: + for filename in list(final_copies.keys()): + if not match(filename): + del final_copies[filename] return final_copies