merge: refactor manifestmerge init to better report effective ancestor
authorMatt Mackall <mpm@selenic.com>
Mon, 08 Jun 2009 18:14:44 -0500
changeset 8753 af5f099d932b
parent 8752 f177bdab261b
child 8755 a2b4ddee3785
merge: refactor manifestmerge init to better report effective ancestor
mercurial/merge.py
tests/test-copy-move-merge.out
tests/test-double-merge.out
tests/test-issue522.out
tests/test-issue672.out
tests/test-merge-commit.out
tests/test-merge-types.out
tests/test-merge7.out
tests/test-rename-dir-merge.out
tests/test-rename-merge1.out
tests/test-rename-merge2.out
tests/test-up-local-change.out
tests/test-update-reverse.out
--- a/mercurial/merge.py	Mon Jun 08 18:14:44 2009 -0500
+++ b/mercurial/merge.py	Mon Jun 08 18:14:44 2009 -0500
@@ -125,15 +125,6 @@
     partial = function to filter file lists
     """
 
-    repo.ui.note(_("resolving manifests\n"))
-    repo.ui.debug(_(" overwrite %s partial %s\n") % (overwrite, bool(partial)))
-    repo.ui.debug(_(" ancestor %s local %s remote %s\n") % (pa, p1, p2))
-
-    action = []
-    copy, copied = {}, {}
-    m1 = p1.manifest()
-    m2 = p2.manifest()
-
     def fmerge(f, f2, fa):
         """merge flags"""
         a, m, n = ma.flags(fa), m1.flags(f), m2.flags(f2)
@@ -155,18 +146,24 @@
         repo.ui.debug(" %s: %s -> %s\n" % (f, msg, m))
         action.append((f, m) + args)
 
+    action, copy = [], {}
+
     if overwrite:
-        ma = m1
-    elif p2 == pa: # backwards
-        ma = p1.p1().manifest()
-    else:
-        ma = pa.manifest()
-        if pa and repo.ui.configbool("merge", "followcopies", True):
-            dirs = repo.ui.configbool("merge", "followdirs", True)
-            copy, diverge = copies.copies(repo, p1, p2, pa, dirs)
-            for of, fl in diverge.iteritems():
-                act("divergent renames", "dr", of, fl)
-            copied = set(copy.values())
+        pa = p1
+    elif pa == p2: # backwards
+        pa = p1.p1()
+    elif pa and repo.ui.configbool("merge", "followcopies", True):
+        dirs = repo.ui.configbool("merge", "followdirs", True)
+        copy, diverge = copies.copies(repo, p1, p2, pa, dirs)
+        for of, fl in diverge.iteritems():
+            act("divergent renames", "dr", of, fl)
+
+    repo.ui.note(_("resolving manifests\n"))
+    repo.ui.debug(_(" overwrite %s partial %s\n") % (overwrite, bool(partial)))
+    repo.ui.debug(_(" ancestor %s local %s remote %s\n") % (pa, p1, p2))
+
+    m1, m2, ma = p1.manifest(), p2.manifest(), pa.manifest()
+    copied = set(copy.values())
 
     # Compare manifests
     for f, n in m1.iteritems():
--- a/tests/test-copy-move-merge.out	Mon Jun 08 18:14:44 2009 -0500
+++ b/tests/test-copy-move-merge.out	Mon Jun 08 18:14:44 2009 -0500
@@ -1,7 +1,4 @@
 1 files updated, 0 files merged, 2 files removed, 0 files unresolved
-resolving manifests
- overwrite None partial False
- ancestor 583c7b748052 local fb3948d97f07+ remote 40da226db0f0
   searching for copies back to rev 1
   unmatched files in other:
    b
@@ -10,6 +7,9 @@
    c -> a *
    b -> a *
   checking for directory renames
+resolving manifests
+ overwrite None partial False
+ ancestor 583c7b748052 local fb3948d97f07+ remote 40da226db0f0
  a: remote moved to c -> m
  a: remote moved to b -> m
 preserving a for resolve of b
--- a/tests/test-double-merge.out	Mon Jun 08 18:14:44 2009 -0500
+++ b/tests/test-double-merge.out	Mon Jun 08 18:14:44 2009 -0500
@@ -9,15 +9,15 @@
 date:        Mon Jan 12 13:46:40 1970 +0000
 summary:     cp foo bar; change both
 
-resolving manifests
- overwrite None partial False
- ancestor 310fd17130da local 2092631ce82b+ remote 7731dad1c2b9
   searching for copies back to rev 1
   unmatched files in other:
    bar
   all copies found (* = to merge, ! = divergent):
    bar -> foo *
   checking for directory renames
+resolving manifests
+ overwrite None partial False
+ ancestor 310fd17130da local 2092631ce82b+ remote 7731dad1c2b9
  foo: versions differ -> m
  foo: remote copied to bar -> m
 preserving foo for resolve of bar
--- a/tests/test-issue522.out	Mon Jun 08 18:14:44 2009 -0500
+++ b/tests/test-issue522.out	Mon Jun 08 18:14:44 2009 -0500
@@ -1,12 +1,12 @@
 reverting foo
 changeset 2:4d9e78aaceee backs out changeset 1:b515023e500e
 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
+  searching for copies back to rev 1
+  unmatched files in local:
+   bar
 resolving manifests
  overwrite None partial False
  ancestor bbd179dfa0a7 local 71766447bdbb+ remote 4d9e78aaceee
-  searching for copies back to rev 1
-  unmatched files in local:
-   bar
  foo: remote is newer -> g
 getting foo
 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
--- a/tests/test-issue672.out	Mon Jun 08 18:14:44 2009 -0500
+++ b/tests/test-issue672.out	Mon Jun 08 18:14:44 2009 -0500
@@ -2,15 +2,15 @@
 adding 2
 1 files updated, 0 files merged, 1 files removed, 0 files unresolved
 created new head
-resolving manifests
- overwrite None partial False
- ancestor 81f4b099af3d local c64f439569a9+ remote 2f8037f47a5c
   searching for copies back to rev 1
   unmatched files in other:
    1a
   all copies found (* = to merge, ! = divergent):
    1a -> 1 
   checking for directory renames
+resolving manifests
+ overwrite None partial False
+ ancestor 81f4b099af3d local c64f439569a9+ remote 2f8037f47a5c
  1: other deleted -> r
  1a: remote created -> g
 removing 1
@@ -20,15 +20,15 @@
 1 files updated, 0 files merged, 1 files removed, 0 files unresolved
 created new head
 1 files updated, 0 files merged, 1 files removed, 0 files unresolved
-resolving manifests
- overwrite None partial False
- ancestor c64f439569a9 local ac7575e3c052+ remote 746e9549ea96
   searching for copies back to rev 1
   unmatched files in local:
    1a
   all copies found (* = to merge, ! = divergent):
    1a -> 1 *
   checking for directory renames
+resolving manifests
+ overwrite None partial False
+ ancestor c64f439569a9 local ac7575e3c052+ remote 746e9549ea96
  1a: local copied/moved to 1 -> m
 preserving 1a for resolve of 1a
 picked tool 'internal:merge' for 1a (binary False symlink False)
@@ -38,15 +38,15 @@
 0 files updated, 1 files merged, 0 files removed, 0 files unresolved
 (branch merge, don't forget to commit)
 1 files updated, 0 files merged, 1 files removed, 0 files unresolved
-resolving manifests
- overwrite None partial False
- ancestor c64f439569a9 local 746e9549ea96+ remote ac7575e3c052
   searching for copies back to rev 1
   unmatched files in other:
    1a
   all copies found (* = to merge, ! = divergent):
    1a -> 1 *
   checking for directory renames
+resolving manifests
+ overwrite None partial False
+ ancestor c64f439569a9 local 746e9549ea96+ remote ac7575e3c052
  1: remote moved to 1a -> m
 preserving 1 for resolve of 1a
 removing 1
--- a/tests/test-merge-commit.out	Mon Jun 08 18:14:44 2009 -0500
+++ b/tests/test-merge-commit.out	Mon Jun 08 18:14:44 2009 -0500
@@ -22,10 +22,10 @@
 1:5cd961e4045d 
 0:2665aaee66e9 
 % this should use bar@rev2 as the ancestor
+  searching for copies back to rev 1
 resolving manifests
  overwrite None partial False
  ancestor 0a3ab4856510 local 2d2f9a22c82b+ remote 7d3b554bfdf1
-  searching for copies back to rev 1
  bar: versions differ -> m
 preserving bar for resolve of bar
 picked tool 'internal:merge' for bar (binary False symlink False)
@@ -72,10 +72,10 @@
 1:5cd961e4045d 
 0:2665aaee66e9 
 % this should use bar@rev2 as the ancestor
+  searching for copies back to rev 1
 resolving manifests
  overwrite None partial False
  ancestor 0a3ab4856510 local 2d2f9a22c82b+ remote 96ab80c60897
-  searching for copies back to rev 1
  bar: versions differ -> m
 preserving bar for resolve of bar
 picked tool 'internal:merge' for bar (binary False symlink False)
--- a/tests/test-merge-types.out	Mon Jun 08 18:14:44 2009 -0500
+++ b/tests/test-merge-types.out	Mon Jun 08 18:14:44 2009 -0500
@@ -1,10 +1,10 @@
 adding a
 0 files updated, 0 files merged, 0 files removed, 0 files unresolved
 created new head
+  searching for copies back to rev 1
 resolving manifests
  overwrite None partial False
  ancestor c334dc3be0da local 521a1e40188f+ remote 3574f3e69b1c
-  searching for copies back to rev 1
  conflicting flags for a
 (n)one, e(x)ec or sym(l)ink? n
  a: update permissions -> e
@@ -13,10 +13,10 @@
 % symlink is local parent, executable is other
 a has no flags (default for conflicts)
 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
+  searching for copies back to rev 1
 resolving manifests
  overwrite None partial False
  ancestor c334dc3be0da local 3574f3e69b1c+ remote 521a1e40188f
-  searching for copies back to rev 1
  conflicting flags for a
 (n)one, e(x)ec or sym(l)ink? n
  a: remote is newer -> g
--- a/tests/test-merge7.out	Mon Jun 08 18:14:44 2009 -0500
+++ b/tests/test-merge7.out	Mon Jun 08 18:14:44 2009 -0500
@@ -19,10 +19,10 @@
 adding file changes
 added 1 changesets with 1 changes to 1 files (+1 heads)
 (run 'hg heads' to see heads, 'hg merge' to merge)
+  searching for copies back to rev 1
 resolving manifests
  overwrite None partial False
  ancestor faaea63e63a9 local 451c744aabcc+ remote a070d41e8360
-  searching for copies back to rev 1
  test.txt: versions differ -> m
 preserving test.txt for resolve of test.txt
 picked tool 'internal:merge' for test.txt (binary False symlink False)
--- a/tests/test-rename-dir-merge.out	Mon Jun 08 18:14:44 2009 -0500
+++ b/tests/test-rename-dir-merge.out	Mon Jun 08 18:14:44 2009 -0500
@@ -5,9 +5,6 @@
 moving a/b to b/b
 2 files updated, 0 files merged, 2 files removed, 0 files unresolved
 created new head
-resolving manifests
- overwrite None partial False
- ancestor f9b20c0d4c51 local ce36d17b18fb+ remote 55119e611c80
   searching for copies back to rev 1
   unmatched files in local:
    a/c
@@ -22,6 +19,9 @@
   dir a/ -> b/
   file a/c -> b/c
   file a/d -> b/d
+resolving manifests
+ overwrite None partial False
+ ancestor f9b20c0d4c51 local ce36d17b18fb+ remote 55119e611c80
  a/d: remote renamed directory to b/d -> d
  a/c: remote renamed directory to b/c -> d
  a/b: other deleted -> r
@@ -47,9 +47,6 @@
 ? b/d
 b/c renamed from a/c:354ae8da6e890359ef49ade27b68bbc361f3ca88
 0 files updated, 0 files merged, 1 files removed, 0 files unresolved
-resolving manifests
- overwrite None partial False
- ancestor f9b20c0d4c51 local 55119e611c80+ remote ce36d17b18fb
   searching for copies back to rev 1
   unmatched files in local:
    b/a
@@ -63,6 +60,9 @@
   checking for directory renames
   dir a/ -> b/
   file a/c -> b/c
+resolving manifests
+ overwrite None partial False
+ ancestor f9b20c0d4c51 local 55119e611c80+ remote ce36d17b18fb
  None: local renamed directory to b/c -> d
 getting a/c to b/c
 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
--- a/tests/test-rename-merge1.out	Mon Jun 08 18:14:44 2009 -0500
+++ b/tests/test-rename-merge1.out	Mon Jun 08 18:14:44 2009 -0500
@@ -2,9 +2,6 @@
 2 files updated, 0 files merged, 2 files removed, 0 files unresolved
 created new head
 merge
-resolving manifests
- overwrite None partial False
- ancestor af1939970a1c local f26ec4fc3fa3+ remote 8e765a822af2
   searching for copies back to rev 1
   unmatched files in local:
    c2
@@ -17,6 +14,9 @@
    b2 -> a2 !
   checking for directory renames
  a2: divergent renames -> dr
+resolving manifests
+ overwrite None partial False
+ ancestor af1939970a1c local f26ec4fc3fa3+ remote 8e765a822af2
  a: remote moved to b -> m
  b2: remote created -> g
 preserving a for resolve of b
--- a/tests/test-rename-merge2.out	Mon Jun 08 18:14:44 2009 -0500
+++ b/tests/test-rename-merge2.out	Mon Jun 08 18:14:44 2009 -0500
@@ -2,15 +2,15 @@
 --------------
 test L:up a   R:nc a b W:       - 1  get local a to b
 --------------
-resolving manifests
- overwrite None partial False
- ancestor 924404dff337 local e300d1c794ec+ remote 735846fee2d7
   searching for copies back to rev 1
   unmatched files in other:
    b
   all copies found (* = to merge, ! = divergent):
    b -> a *
   checking for directory renames
+resolving manifests
+ overwrite None partial False
+ ancestor 924404dff337 local e300d1c794ec+ remote 735846fee2d7
  rev: versions differ -> m
  a: remote copied to b -> m
 preserving a for resolve of b
@@ -34,15 +34,15 @@
 --------------
 test L:nc a b R:up a   W:       - 2  get rem change to a and b
 --------------
-resolving manifests
- overwrite None partial False
- ancestor 924404dff337 local ac809aeed39a+ remote f4db7e329e71
   searching for copies back to rev 1
   unmatched files in local:
    b
   all copies found (* = to merge, ! = divergent):
    b -> a *
   checking for directory renames
+resolving manifests
+ overwrite None partial False
+ ancestor 924404dff337 local ac809aeed39a+ remote f4db7e329e71
  a: remote is newer -> g
  b: local copied/moved to a -> m
  rev: versions differ -> m
@@ -68,15 +68,15 @@
 --------------
 test L:up a   R:nm a b W:       - 3  get local a change to b, remove a
 --------------
-resolving manifests
- overwrite None partial False
- ancestor 924404dff337 local e300d1c794ec+ remote e03727d2d66b
   searching for copies back to rev 1
   unmatched files in other:
    b
   all copies found (* = to merge, ! = divergent):
    b -> a *
   checking for directory renames
+resolving manifests
+ overwrite None partial False
+ ancestor 924404dff337 local e300d1c794ec+ remote e03727d2d66b
  rev: versions differ -> m
  a: remote moved to b -> m
 preserving a for resolve of b
@@ -100,15 +100,15 @@
 --------------
 test L:nm a b R:up a   W:       - 4  get remote change to b
 --------------
-resolving manifests
- overwrite None partial False
- ancestor 924404dff337 local ecf3cb2a4219+ remote f4db7e329e71
   searching for copies back to rev 1
   unmatched files in local:
    b
   all copies found (* = to merge, ! = divergent):
    b -> a *
   checking for directory renames
+resolving manifests
+ overwrite None partial False
+ ancestor 924404dff337 local ecf3cb2a4219+ remote f4db7e329e71
  b: local copied/moved to a -> m
  rev: versions differ -> m
 preserving b for resolve of b
@@ -131,15 +131,15 @@
 --------------
 test L:       R:nc a b W:       - 5  get b
 --------------
-resolving manifests
- overwrite None partial False
- ancestor 924404dff337 local 94b33a1b7f2d+ remote 735846fee2d7
   searching for copies back to rev 1
   unmatched files in other:
    b
   all copies found (* = to merge, ! = divergent):
    b -> a 
   checking for directory renames
+resolving manifests
+ overwrite None partial False
+ ancestor 924404dff337 local 94b33a1b7f2d+ remote 735846fee2d7
  rev: versions differ -> m
  b: remote created -> g
 preserving rev for resolve of rev
@@ -158,15 +158,15 @@
 --------------
 test L:nc a b R:       W:       - 6  nothing
 --------------
-resolving manifests
- overwrite None partial False
- ancestor 924404dff337 local ac809aeed39a+ remote 97c705ade336
   searching for copies back to rev 1
   unmatched files in local:
    b
   all copies found (* = to merge, ! = divergent):
    b -> a 
   checking for directory renames
+resolving manifests
+ overwrite None partial False
+ ancestor 924404dff337 local ac809aeed39a+ remote 97c705ade336
  rev: versions differ -> m
 preserving rev for resolve of rev
 picked tool 'python ../merge' for rev (binary False symlink False)
@@ -183,15 +183,15 @@
 --------------
 test L:       R:nm a b W:       - 7  get b
 --------------
-resolving manifests
- overwrite None partial False
- ancestor 924404dff337 local 94b33a1b7f2d+ remote e03727d2d66b
   searching for copies back to rev 1
   unmatched files in other:
    b
   all copies found (* = to merge, ! = divergent):
    b -> a 
   checking for directory renames
+resolving manifests
+ overwrite None partial False
+ ancestor 924404dff337 local 94b33a1b7f2d+ remote e03727d2d66b
  a: other deleted -> r
  rev: versions differ -> m
  b: remote created -> g
@@ -211,15 +211,15 @@
 --------------
 test L:nm a b R:       W:       - 8  nothing
 --------------
-resolving manifests
- overwrite None partial False
- ancestor 924404dff337 local ecf3cb2a4219+ remote 97c705ade336
   searching for copies back to rev 1
   unmatched files in local:
    b
   all copies found (* = to merge, ! = divergent):
    b -> a 
   checking for directory renames
+resolving manifests
+ overwrite None partial False
+ ancestor 924404dff337 local ecf3cb2a4219+ remote 97c705ade336
  rev: versions differ -> m
 preserving rev for resolve of rev
 picked tool 'python ../merge' for rev (binary False symlink False)
@@ -235,10 +235,10 @@
 --------------
 test L:um a b R:um a b W:       - 9  do merge with ancestor in a
 --------------
+  searching for copies back to rev 1
 resolving manifests
  overwrite None partial False
  ancestor 924404dff337 local ec03c2ca8642+ remote 79cc6877a3b7
-  searching for copies back to rev 1
  b: versions differ -> m
  rev: versions differ -> m
 preserving b for resolve of b
@@ -259,9 +259,6 @@
 --------------
 test L:nm a b R:nm a c W:       - 11 get c, keep b
 --------------
-resolving manifests
- overwrite None partial False
- ancestor 924404dff337 local ecf3cb2a4219+ remote e6abcc1a30c2
   searching for copies back to rev 1
   unmatched files in local:
    b
@@ -272,6 +269,9 @@
    b -> a !
   checking for directory renames
  a: divergent renames -> dr
+resolving manifests
+ overwrite None partial False
+ ancestor 924404dff337 local ecf3cb2a4219+ remote e6abcc1a30c2
  rev: versions differ -> m
  c: remote created -> g
 preserving rev for resolve of rev
@@ -293,10 +293,10 @@
 --------------
 test L:nc a b R:up b   W:       - 12 merge b no ancestor
 --------------
+  searching for copies back to rev 1
 resolving manifests
  overwrite None partial False
  ancestor 924404dff337 local ac809aeed39a+ remote af30c7647fc7
-  searching for copies back to rev 1
  b: versions differ -> m
  rev: versions differ -> m
 preserving b for resolve of b
@@ -318,10 +318,10 @@
 --------------
 test L:up b   R:nm a b W:       - 13 merge b no ancestor
 --------------
+  searching for copies back to rev 1
 resolving manifests
  overwrite None partial False
  ancestor 924404dff337 local 59318016310c+ remote e03727d2d66b
-  searching for copies back to rev 1
  a: other deleted -> r
  b: versions differ -> m
  rev: versions differ -> m
@@ -344,10 +344,10 @@
 --------------
 test L:nc a b R:up a b W:       - 14 merge b no ancestor
 --------------
+  searching for copies back to rev 1
 resolving manifests
  overwrite None partial False
  ancestor 924404dff337 local ac809aeed39a+ remote 8dbce441892a
-  searching for copies back to rev 1
  a: remote is newer -> g
  b: versions differ -> m
  rev: versions differ -> m
@@ -371,10 +371,10 @@
 --------------
 test L:up b   R:nm a b W:       - 15 merge b no ancestor, remove a
 --------------
+  searching for copies back to rev 1
 resolving manifests
  overwrite None partial False
  ancestor 924404dff337 local 59318016310c+ remote e03727d2d66b
-  searching for copies back to rev 1
  a: other deleted -> r
  b: versions differ -> m
  rev: versions differ -> m
@@ -397,10 +397,10 @@
 --------------
 test L:nc a b R:up a b W:       - 16 get a, merge b no ancestor
 --------------
+  searching for copies back to rev 1
 resolving manifests
  overwrite None partial False
  ancestor 924404dff337 local ac809aeed39a+ remote 8dbce441892a
-  searching for copies back to rev 1
  a: remote is newer -> g
  b: versions differ -> m
  rev: versions differ -> m
@@ -424,10 +424,10 @@
 --------------
 test L:up a b R:nc a b W:       - 17 keep a, merge b no ancestor
 --------------
+  searching for copies back to rev 1
 resolving manifests
  overwrite None partial False
  ancestor 924404dff337 local 0b76e65c8289+ remote 735846fee2d7
-  searching for copies back to rev 1
  b: versions differ -> m
  rev: versions differ -> m
 preserving b for resolve of b
@@ -449,10 +449,10 @@
 --------------
 test L:nm a b R:up a b W:       - 18 merge b no ancestor
 --------------
+  searching for copies back to rev 1
 resolving manifests
  overwrite None partial False
  ancestor 924404dff337 local ecf3cb2a4219+ remote 8dbce441892a
-  searching for copies back to rev 1
  b: versions differ -> m
  rev: versions differ -> m
 remote changed a which local deleted
@@ -478,10 +478,10 @@
 --------------
 test L:up a b R:nm a b W:       - 19 merge b no ancestor, prompt remove a
 --------------
+  searching for copies back to rev 1
 resolving manifests
  overwrite None partial False
  ancestor 924404dff337 local 0b76e65c8289+ remote e03727d2d66b
-  searching for copies back to rev 1
  local changed a which remote deleted
 use (c)hanged version or (d)elete? c
  a: prompt keep -> a
@@ -506,15 +506,15 @@
 --------------
 test L:up a   R:um a b W:       - 20 merge a and b to b, remove a
 --------------
-resolving manifests
- overwrite None partial False
- ancestor 924404dff337 local e300d1c794ec+ remote 79cc6877a3b7
   searching for copies back to rev 1
   unmatched files in other:
    b
   all copies found (* = to merge, ! = divergent):
    b -> a *
   checking for directory renames
+resolving manifests
+ overwrite None partial False
+ ancestor 924404dff337 local e300d1c794ec+ remote 79cc6877a3b7
  rev: versions differ -> m
  a: remote moved to b -> m
 preserving a for resolve of b
@@ -537,15 +537,15 @@
 --------------
 test L:um a b R:up a   W:       - 21 merge a and b to b
 --------------
-resolving manifests
- overwrite None partial False
- ancestor 924404dff337 local ec03c2ca8642+ remote f4db7e329e71
   searching for copies back to rev 1
   unmatched files in local:
    b
   all copies found (* = to merge, ! = divergent):
    b -> a *
   checking for directory renames
+resolving manifests
+ overwrite None partial False
+ ancestor 924404dff337 local ec03c2ca8642+ remote f4db7e329e71
  b: local copied/moved to a -> m
  rev: versions differ -> m
 preserving b for resolve of b
@@ -567,9 +567,6 @@
 --------------
 test L:nm a b R:up a c W:       - 23 get c, keep b
 --------------
-resolving manifests
- overwrite None partial False
- ancestor 924404dff337 local ecf3cb2a4219+ remote 2b958612230f
   searching for copies back to rev 1
   unmatched files in local:
    b
@@ -578,6 +575,9 @@
   all copies found (* = to merge, ! = divergent):
    b -> a *
   checking for directory renames
+resolving manifests
+ overwrite None partial False
+ ancestor 924404dff337 local ecf3cb2a4219+ remote 2b958612230f
  b: local copied/moved to a -> m
  rev: versions differ -> m
  c: remote created -> g
--- a/tests/test-up-local-change.out	Mon Jun 08 18:14:44 2009 -0500
+++ b/tests/test-up-local-change.out	Mon Jun 08 18:14:44 2009 -0500
@@ -15,12 +15,12 @@
 date:        Mon Jan 12 13:46:40 1970 +0000
 summary:     1
 
+  searching for copies back to rev 1
+  unmatched files in other:
+   b
 resolving manifests
  overwrite False partial False
  ancestor 33aaa84a386b local 33aaa84a386b+ remote 802f095af299
-  searching for copies back to rev 1
-  unmatched files in other:
-   b
  a: versions differ -> m
  b: remote created -> g
 preserving a for resolve of a
@@ -37,7 +37,7 @@
 
 resolving manifests
  overwrite False partial False
- ancestor 33aaa84a386b local 802f095af299+ remote 33aaa84a386b
+ ancestor 802f095af299 local 802f095af299+ remote 33aaa84a386b
  a: versions differ -> m
  b: other deleted -> r
 preserving a for resolve of a
@@ -59,12 +59,12 @@
 date:        Mon Jan 12 13:46:40 1970 +0000
 summary:     1
 
+  searching for copies back to rev 1
+  unmatched files in other:
+   b
 resolving manifests
  overwrite False partial False
  ancestor 33aaa84a386b local 33aaa84a386b+ remote 802f095af299
-  searching for copies back to rev 1
-  unmatched files in other:
-   b
  a: versions differ -> m
  b: remote created -> g
 preserving a for resolve of a
@@ -115,10 +115,10 @@
 failed
 abort: outstanding uncommitted changes (use 'hg status' to list changes)
 failed
+  searching for copies back to rev 1
 resolving manifests
  overwrite False partial False
  ancestor 33aaa84a386b local 802f095af299+ remote 030602aee63d
-  searching for copies back to rev 1
  a: versions differ -> m
  b: versions differ -> m
 preserving a for resolve of a
--- a/tests/test-update-reverse.out	Mon Jun 08 18:14:44 2009 -0500
+++ b/tests/test-update-reverse.out	Mon Jun 08 18:14:44 2009 -0500
@@ -42,7 +42,7 @@
 side2
 resolving manifests
  overwrite True partial False
- ancestor 537353581d3d local ded32b0db104+ remote 221226fb2bd8
+ ancestor ded32b0db104+ local ded32b0db104+ remote 221226fb2bd8
  side2: other deleted -> r
  side1: other deleted -> r
  main: remote created -> g