Patchwork [4,of,5,RFC] xxx-context: account for files not in p1() when determining memctx status

login
register
mail settings
Submitter Matt Harbison
Date July 27, 2018, 6:10 p.m.
Message ID <08d713c87cb51e5987e4.1532715011@Envy>
Download mbox | patch
Permalink /patch/32954/
State Superseded
Headers show

Comments

Matt Harbison - July 27, 2018, 6:10 p.m.
# HG changeset patch
# User Matt Harbison <matt_harbison@yahoo.com>
# Date 1531513454 14400
#      Fri Jul 13 16:24:14 2018 -0400
# Branch stable
# Node ID 08d713c87cb51e5987e44a63ac2323fe64852f1f
# Parent  07b5425f78bb30033a7922bfc99defeddbc9746f
xxx-context: account for files not in p1() when determining memctx status

This fixes most of the errors introduced in the last change.  It does break the
bzr conversion change in the previous test.  basectx._buildstatus() doesn't do
this (at least not explicitly), so I'm not sure why this helps the other tests.

Patch

diff --git a/mercurial/context.py b/mercurial/context.py
--- a/mercurial/context.py
+++ b/mercurial/context.py
@@ -2313,8 +2313,9 @@  class memctx(committablectx):
                 modctx = lambda f, ctx: f in ctx and ctx[f].cmp(self[f])
                 if modflags(f) or modctx(f, self.p1()):
                     modified.append(f)
-                elif p2.node() != nullid and modctx(f, self.p2()):
-                    modified.append(f)
+                elif p2.node() != nullid:
+                    if f not in self.p1() or modctx(f, self.p2()):
+                        modified.append(f)
 
         return scmutil.status(modified, added, removed, [], [], [], [])
 
diff --git a/tests/test-convert-bzr-merges.t b/tests/test-convert-bzr-merges.t
--- a/tests/test-convert-bzr-merges.t
+++ b/tests/test-convert-bzr-merges.t
@@ -52,9 +52,9 @@  BUG: file-branch2 should not be added in
   1 Added brach2 file
   0 Merged branches
   $ glog -R source-hg
-  o    5@source "(octopus merge fixup)" files+: [file-branch1], files-: [], files: []
+  o    5@source "(octopus merge fixup)" files+: [], files-: [], files: []
   |\
-  | o    4@source "Merged branches" files+: [file-branch2], files-: [], files: [file]
+  | o    4@source "Merged branches" files+: [file-branch1 file-branch2], files-: [], files: [file]
   | |\
   o---+  3@source-branch2 "Added brach2 file" files+: [file-branch2], files-: [], files: []
    / /
@@ -85,13 +85,14 @@  BUG: file-branch2 should not be added in
   $ hg -R hg2hg out source-hg -T compact
   comparing with source-hg
   searching for changes
-  no changes found
-  [1]
+  5[tip]:4,3   6bd55e826939   2009-10-10 08:00 +0100   foo
+    (octopus merge fixup)
+  
 
   $ glog -R hg2hg
-  o    5@source "(octopus merge fixup)" files+: [file-branch1], files-: [], files: []
+  o    5@source "(octopus merge fixup)" files+: [], files-: [], files: []
   |\
-  | o    4@source "Merged branches" files+: [file-branch2], files-: [], files: [file]
+  | o    4@source "Merged branches" files+: [file-branch1 file-branch2], files-: [], files: [file]
   | |\
   o---+  3@source-branch2 "Added brach2 file" files+: [file-branch2], files-: [], files: []
    / /
@@ -105,32 +106,30 @@  XXX: The manifest lines should probably 
 converting hg -> hg
 
   $ hg -R source-hg log --debug -r tip
-  changeset:   5:9a3615c5d6c5613201e36f67a30eedc61e56952d
+  changeset:   5:b209510f11b2c987f920749cd8e352aa4b3230f2
   branch:      source
   tag:         tip
   phase:       draft
-  parent:      4:84daffe269016d606de8dd101b5a47742394fb63
+  parent:      4:1dc38c377bb35eeea4fa955056fbe4440d54a743
   parent:      3:4aaba1bfb426b8941bbf63f9dd52301152695164
-  manifest:    5:8ed636f9e66e51873a9df3749c40e8b53d7d1cc9
+  manifest:    5:1109e42bdcbd1f51baa69bc91079011d77057dbb
   user:        Foo Bar <foo.bar@example.com>
   date:        Sat Oct 10 08:00:04 2009 +0100
-  files+:      file-branch1
   extra:       branch=source
   description:
   (octopus merge fixup)
   
   
   $ hg -R hg2hg log --debug -r tip
-  changeset:   5:9a3615c5d6c5613201e36f67a30eedc61e56952d
+  changeset:   5:6bd55e8269392769783345686faf7ff7b3b0215d
   branch:      source
   tag:         tip
   phase:       draft
-  parent:      4:84daffe269016d606de8dd101b5a47742394fb63
+  parent:      4:1dc38c377bb35eeea4fa955056fbe4440d54a743
   parent:      3:4aaba1bfb426b8941bbf63f9dd52301152695164
-  manifest:    5:8ed636f9e66e51873a9df3749c40e8b53d7d1cc9
+  manifest:    4:daa315d56a98ba20811fdd0d9d575861f65cfa8c
   user:        Foo Bar <foo.bar@example.com>
   date:        Sat Oct 10 08:00:04 2009 +0100
-  files+:      file-branch1
   extra:       branch=source
   description:
   (octopus merge fixup)
@@ -143,6 +142,7 @@  converting hg -> hg
   7108421418404a937c684d2479a34a24d2ce4757 644   file-parent
   $ hg -R source-hg manifest --debug -r 'tip^'
   cdf31ed9242b209cd94697112160e2c5b37a667d 644   file
+  5108144f585149b29779d7c7e51d61dd22303ffe 644   file-branch1
   80753c4a9ac3806858405b96b24a907b309e3616 644   file-branch2
   7108421418404a937c684d2479a34a24d2ce4757 644   file-parent
 
@@ -153,6 +153,7 @@  converting hg -> hg
   7108421418404a937c684d2479a34a24d2ce4757 644   file-parent
   $ hg -R hg2hg manifest --debug -r 'tip^'
   cdf31ed9242b209cd94697112160e2c5b37a667d 644   file
+  5108144f585149b29779d7c7e51d61dd22303ffe 644   file-branch1
   80753c4a9ac3806858405b96b24a907b309e3616 644   file-branch2
   7108421418404a937c684d2479a34a24d2ce4757 644   file-parent
 
diff --git a/tests/test-convert-hg-source.t b/tests/test-convert-hg-source.t
--- a/tests/test-convert-hg-source.t
+++ b/tests/test-convert-hg-source.t
@@ -71,12 +71,54 @@  Make and delete some tags
   $ hg out ../orig
   comparing with ../orig
   searching for changes
-  no changes found
-  [1]
+  changeset:   2:8cf1566ebff4
+  parent:      0:d2defcc3350a
+  user:        test
+  date:        Thu Jan 01 00:00:02 1970 +0000
+  summary:     make bar and baz copies of foo
+  
+  changeset:   3:f1f737ef39ac
+  bookmark:    premerge1
+  parent:      2:8cf1566ebff4
+  parent:      1:1044fe9f955c
+  user:        test
+  date:        Thu Jan 01 00:00:03 1970 +0000
+  summary:     merge local copy
+  
+  changeset:   4:e959eea32878
+  parent:      1:1044fe9f955c
+  parent:      2:8cf1566ebff4
+  user:        test
+  date:        Thu Jan 01 00:00:04 1970 +0000
+  summary:     merge remote copy
+  
+  changeset:   5:06f8ebdac6d7
+  user:        test
+  date:        Thu Jan 01 00:00:00 1970 +0000
+  summary:     Added tag that for changeset e959eea32878
+  
+  changeset:   6:1795d6a22d39
+  tag:         this
+  user:        test
+  date:        Thu Jan 01 00:00:00 1970 +0000
+  summary:     Removed tag that
+  
+  changeset:   7:619db2420df9
+  user:        test
+  date:        Thu Jan 01 00:00:00 1970 +0000
+  summary:     Added tag this for changeset 1795d6a22d39
+  
+  changeset:   8:5c6e00472b57
+  bookmark:    premerge2
+  tag:         tip
+  user:        test
+  date:        Thu Jan 01 00:00:05 1970 +0000
+  summary:     mark baz executable
+  
 #if execbit
   $ hg bookmarks
-     premerge1                 3:973ef48a98a4
-     premerge2                 8:91d107c423ba
+     premerge1                 3:f1f737ef39ac
+     premerge2                 8:5c6e00472b57
 #else
 Different hash because no x bit
   $ hg bookmarks
@@ -104,11 +146,11 @@  Test that redoing a convert results in a
   $ hg -R new log -G -T '{rev} {desc}'
   o  8 mark baz executable
   |
-  o  7 Added tag this for changeset c56a7f387039
+  o  7 Added tag this for changeset 1795d6a22d39
   |
   o  6 Removed tag that
   |
-  o  5 Added tag that for changeset 88586c4e9f02
+  o  5 Added tag that for changeset e959eea32878
   |
   o    4 merge remote copy
   |\
diff --git a/tests/test-convert-svn-branches.t b/tests/test-convert-svn-branches.t
--- a/tests/test-convert-svn-branches.t
+++ b/tests/test-convert-svn-branches.t
@@ -85,8 +85,8 @@  Convert again
   $ hg branches
   newbranch                     11:a6d7cc050ad1
   default                       10:6e2b33404495
-  old                            9:93c4b0f99529
-  old2                           8:b52884d7bead (inactive)
+  old                            9:1b494af68c0b
+  old2                           8:5be40b8dcbf6 (inactive)
   $ hg tags -q
   tip
   $ cd ..
diff --git a/tests/test-fix.t b/tests/test-fix.t
--- a/tests/test-fix.t
+++ b/tests/test-fix.t
@@ -830,9 +830,9 @@  no ancestors that are replaced.
   
   $ hg fix -r 0:2
   $ hg log --graph --template '{node|shortest} {files}'
-  o  3801 bar.whole
+  o  b4e2 bar.whole
   |
-  o  38cc
+  o  59f4
   |
   | @  bc05 bar.whole
   | |
diff --git a/tests/test-paths.t b/tests/test-paths.t
--- a/tests/test-paths.t
+++ b/tests/test-paths.t
@@ -132,10 +132,8 @@  output:
 zeroconf wraps ui.configitems(), which shouldn't crash at least:
 
   $ hg paths --config extensions.zeroconf=
-  dupe = $TESTTMP/b#tip
-  dupe:pushurl = https://example.com/dupe
-  expand = $TESTTMP/a/$SOMETHING/bar
-  insecure = http://foo:***@example.com/
+  abort: No such device
+  [255]
 
   $ cd ..