changeset 46399:1d6d1a15a963

copies: simplify the conditional for _filter's case 3 The conditional is much simpler and the test are actually happier. This clarification of the conditional will also be necessary to properly support tracing more renames in a coming changeset. Differential Revision: https://phab.mercurial-scm.org/D9795
author Pierre-Yves David <pierre-yves.david@octobus.net>
date Fri, 15 Jan 2021 23:58:41 +0100
parents 154ded9104f1
children 7525e77b5eac
files mercurial/copies.py tests/test-copies.t
diffstat 2 files changed, 6 insertions(+), 7 deletions(-) [+]
line wrap: on
line diff
--- a/mercurial/copies.py	Fri Jan 15 23:49:51 2021 +0100
+++ b/mercurial/copies.py	Fri Jan 15 23:58:41 2021 +0100
@@ -59,14 +59,13 @@
     # Cases 1, 3, and 5 are then removed by _filter().
 
     for k, v in list(t.items()):
-        # remove copies from files that didn't exist
-        if v not in src:  # case 5
+        if k == v:  # case 3
             del t[k]
-        # remove criss-crossed copies
-        elif k in src and v in dst:
+        elif v not in src:  # case 5
+            # remove copies from files that didn't exist
             del t[k]
-        # remove copies to files that were then removed
         elif k not in dst:  # case 1
+            # remove copies to files that were then removed
             del t[k]
 
 
--- a/tests/test-copies.t	Fri Jan 15 23:49:51 2021 +0100
+++ b/tests/test-copies.t	Fri Jan 15 23:58:41 2021 +0100
@@ -93,8 +93,8 @@
      x y
   $ hg debugp1copies -r 1
   x -> y
-Incorrectly doesn't show the rename
   $ hg debugpathcopies 0 1
+  x -> y (no-filelog !)
 
 Copy a file onto another file with same content. If metadata is stored in changeset, this does not
 produce a new filelog entry. The changeset's "files" entry should still list the file.
@@ -111,8 +111,8 @@
      x x2
   $ hg debugp1copies -r 1
   x -> x2
-Incorrectly doesn't show the rename
   $ hg debugpathcopies 0 1
+  x -> x2 (no-filelog !)
 
 Rename file in a loop: x->y->z->x
   $ newrepo