# HG changeset patch # User Martin von Zweigbergk # Date 1563842659 25200 # Node ID 8c5a36805d5d1297dc3b588ae0884637e5688aee # Parent 0795bbe8ed1967613f42b4d6905af482350522fd 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 diff -r 0795bbe8ed19 -r 8c5a36805d5d mercurial/copies.py --- 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() diff -r 0795bbe8ed19 -r 8c5a36805d5d tests/test-copies.t --- 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