Mercurial > hg-stable
changeset 41763:d5edb5d3a337
copies: filter out copies when target is not in destination manifest
When chaining a series of commits that copied a file with a series
that removed the destination file, we would still include the copy in
the result. Similar to the previous patch, I have checked that `hg
status --copies` is not affected by this bug, but I wouldn't be
surprised if some commands are.
Differential Revision: https://phab.mercurial-scm.org/D5989
author | Martin von Zweigbergk <martinvonz@google.com> |
---|---|
date | Thu, 14 Feb 2019 22:46:18 -0800 |
parents | 3158cb74fbca |
children | a4358f7345b4 |
files | mercurial/copies.py tests/test-copies.t |
diffstat | 2 files changed, 4 insertions(+), 3 deletions(-) [+] |
line wrap: on
line diff
--- a/mercurial/copies.py Tue Feb 19 10:45:22 2019 -0800 +++ b/mercurial/copies.py Thu Feb 14 22:46:18 2019 -0800 @@ -124,10 +124,13 @@ # file is a copy of an existing file t[k] = v - # remove criss-crossed copies for k, v in list(t.items()): + # remove criss-crossed copies if k in src and v in dst: del t[k] + # remove copies to files that were then removed + elif k not in dst: + del t[k] return t