# HG changeset patch # User Martin von Zweigbergk # Date 1555571576 25200 # Node ID 5a3979529740182658459788704f4a8934a13e55 # Parent df7ad90edbd4c31e744619a00fb5a95a7b558970 copies: clarify mutually exclusive cases in _chain() with a s/if/elif/ If the 'b' dict has a rename from 'x' to 'y', it shouldn't be possible for 'x' to be both (a key) in 'a' and in 'src'. That would mean that 'x' is a file in the source commit and also a rename destination in the intermediate commit. But we currently don't allow renaming files onto existing files, so that shouldn't happen. So let's clarify that by using an "elif" instead of an "if". And if we did allow renaming files onto existing files, we should prefer to use the rename destination in the intermediate commit as source anyway. Differential Revision: https://phab.mercurial-scm.org/D6276 diff -r df7ad90edbd4 -r 5a3979529740 mercurial/copies.py --- a/mercurial/copies.py Thu Apr 18 00:05:05 2019 -0700 +++ b/mercurial/copies.py Thu Apr 18 00:12:56 2019 -0700 @@ -134,7 +134,7 @@ if t[v] != k: # file wasn't renamed back to itself (i.e. case 4, not 3) t[k] = t[v] - if v in src: + elif v in src: # file is a copy of an existing file, i.e. case 6. t[k] = v