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
--- 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