[Updated] [+- ] D9130: salvaged: properly deal with salvaged file during copy tracing

marmoute (Pierre-Yves David) phabricator at mercurial-scm.org
Fri Oct 2 09:10:04 UTC 2020


marmoute updated this revision to Diff 22997.

REPOSITORY
  rHG Mercurial

CHANGES SINCE LAST UPDATE
  https://phab.mercurial-scm.org/D9130?vs=22950&id=22997

BRANCH
  default

CHANGES SINCE LAST ACTION
  https://phab.mercurial-scm.org/D9130/new/

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

AFFECTED FILES
  mercurial/copies.py
  tests/test-copies-chain-merge.t

CHANGE DETAILS

diff --git a/tests/test-copies-chain-merge.t b/tests/test-copies-chain-merge.t
--- a/tests/test-copies-chain-merge.t
+++ b/tests/test-copies-chain-merge.t
@@ -910,15 +910,15 @@
   o  0 i-0 initial commit: a b h
   
 
-BROKEN: 'a' should be the the source of 'd' in the changeset centric algorithm too
+'a' is the copy source of 'd'
 
   $ hg status --copies --rev 'desc("i-0")' --rev 'desc("mCGm-0")'
   A d
-    a (filelog !)
+    a (no-compatibility !)
   R a
   $ hg status --copies --rev 'desc("i-0")' --rev 'desc("mGCm-0")'
   A d
-    a (filelog !)
+    a (no-compatibility !)
   R a
   $ hg status --copies --rev 'desc("c-1")' --rev 'desc("mCGm-0")'
   A d
@@ -973,17 +973,17 @@
   o  0 i-0 initial commit: a b h
   
 
-BROKEN: 'a' should be the the source of 'd' in the changeset centric algorithm too
+'a' is the the copy source of 'd'
 
   $ hg status --copies --rev 'desc("i-0")' --rev 'desc("mCB-revert-m-0")'
   M b
   A d
-    a (filelog !)
+    a (no-compatibility !)
   R a
   $ hg status --copies --rev 'desc("i-0")' --rev 'desc("mBC-revert-m-0")'
   M b
   A d
-    a (filelog !)
+    a (no-compatibility !)
   R a
   $ hg status --copies --rev 'desc("c-1")' --rev 'desc("mCB-revert-m-0")'
   M b
diff --git a/mercurial/copies.py b/mercurial/copies.py
--- a/mercurial/copies.py
+++ b/mercurial/copies.py
@@ -371,11 +371,15 @@
                 continue
             # content from "major" wins, unless it is older
             # than the branch point or there is a merge
-            if (
-                new_tt == other_tt
-                or not isancestor(new_tt, other_tt)
-                or dest in changes.merged
-            ):
+            if new_tt == other_tt:
+                minor[dest] = value
+            elif value[1] is None and dest in changes.salvaged:
+                pass
+            elif other[1] is None and dest in changes.salvaged:
+                minor[dest] = value
+            elif not isancestor(new_tt, other_tt):
+                minor[dest] = value
+            elif dest in changes.merged:
                 minor[dest] = value
 
 



To: marmoute, #hg-reviewers
Cc: mercurial-patches
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mercurial-scm.org/pipermail/mercurial-patches/attachments/20201002/f208a881/attachment-0001.html>


More information about the Mercurial-patches mailing list