changeset 42114:aa84bc48c2f7

getrenamedfn: get copy data from context object if configured The function returned from getrenamedfn() calls filelog.renamed(). That won't work when storing copy metadata in the changeset. I've just switched to a simple implementation here. We may or may not need to optimize it later, possibly by optimizing the callers. No more tests fail with "--extra-config-opt experimental.copies.read-from=compatibility)" than they did before this patch. Differential Revision: https://phab.mercurial-scm.org/D6162
author Martin von Zweigbergk <martinvonz@google.com>
date Fri, 18 Jan 2019 13:13:48 -0800
parents f0def07fa82f
children 27475ae67676
files mercurial/scmutil.py
diffstat 1 files changed, 12 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/mercurial/scmutil.py	Sun Mar 31 16:27:10 2019 +0300
+++ b/mercurial/scmutil.py	Fri Jan 18 13:13:48 2019 -0800
@@ -1205,6 +1205,18 @@
             wctx.copy(old, new)
 
 def getrenamedfn(repo, endrev=None):
+    if repo.ui.config('experimental', 'copies.read-from') == 'compatibility':
+        def getrenamed(fn, rev):
+            ctx = repo[rev]
+            p1copies = ctx.p1copies()
+            if fn in p1copies:
+                return p1copies[fn]
+            p2copies = ctx.p2copies()
+            if fn in p2copies:
+                return p2copies[fn]
+            return None
+        return getrenamed
+
     rcache = {}
     if endrev is None:
         endrev = len(repo)