Patchwork D6276: copies: clarify mutually exclusive cases in _chain() with a s/if/elif/

login
register
mail settings
Submitter phabricator
Date April 18, 2019, 4:55 p.m.
Message ID <differential-rev-PHID-DREV-fyy5y6k3hyr35kjfkbcj-req@phab.mercurial-scm.org>
Download mbox | patch
Permalink /patch/39746/
State Superseded
Headers show

Comments

phabricator - April 18, 2019, 4:55 p.m.
martinvonz created this revision.
Herald added a subscriber: mercurial-devel.
Herald added a reviewer: hg-reviewers.

REVISION SUMMARY
  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.

REPOSITORY
  rHG Mercurial

REVISION DETAIL
  https://phab.mercurial-scm.org/D6276

AFFECTED FILES
  mercurial/copies.py

CHANGE DETAILS




To: martinvonz, #hg-reviewers
Cc: mercurial-devel

Patch

diff --git a/mercurial/copies.py b/mercurial/copies.py
--- a/mercurial/copies.py
+++ b/mercurial/copies.py
@@ -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