copies: fix crash on in changeset-centric tracing from commit to itself
When we trace copies from a changeset to itself, the "work" queue ends
up empty and we hit the "assert False" after it.
It was only the last of the three added tests that failed before this
patch. That is because the other two cases have fast paths, so
_committedforwardcopies() is never reached.
Differential Revision: https://phab.mercurial-scm.org/D6675
--- a/mercurial/copies.py Tue Jul 23 12:03:24 2019 +0530
+++ b/mercurial/copies.py Mon Jul 22 17:44:19 2019 -0700
@@ -246,7 +246,7 @@
return cm
def _changesetforwardcopies(a, b, match):
- if a.rev() == node.nullrev:
+ if a.rev() in (node.nullrev, b.rev()):
return {}
repo = a.repo()
--- a/tests/test-copies.t Tue Jul 23 12:03:24 2019 +0530
+++ b/tests/test-copies.t Mon Jul 22 17:44:19 2019 -0700
@@ -58,6 +58,17 @@
x -> y
$ hg debugpathcopies 1 0 y
+Copies not including commit changes
+ $ newrepo
+ $ echo x > x
+ $ hg ci -Aqm 'add x'
+ $ hg mv x y
+ $ hg debugpathcopies . .
+ $ hg debugpathcopies . 'wdir()'
+ x -> y
+ $ hg debugpathcopies 'wdir()' .
+ y -> x
+
Copy a file onto another file
$ newrepo
$ echo x > x