Mercurial > hg-stable
changeset 12484:59012130b43e
tests: unify test-rename-merge2
author | Matt Mackall <mpm@selenic.com> |
---|---|
date | Sun, 26 Sep 2010 13:44:49 -0500 |
parents | fecd4966f8d4 |
children | 8fdc11fec6ae |
files | tests/test-rename-merge2 tests/test-rename-merge2.out tests/test-rename-merge2.t |
diffstat | 3 files changed, 754 insertions(+), 755 deletions(-) [+] |
line wrap: on
line diff
--- a/tests/test-rename-merge2 Sun Sep 26 13:44:49 2010 -0500 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,104 +0,0 @@ -#!/bin/sh - -mkdir -p t -cd t - -cat <<EOF > merge -import sys, os -f = open(sys.argv[1], "wb") -f.write("merge %s %s %s" % (sys.argv[1], sys.argv[2], sys.argv[3])) -f.close() -EOF -HGMERGE="python ../merge"; export HGMERGE - -# perform a test merge with possible renaming -# -# args: -# $1 = action in local branch -# $2 = action in remote branch -# $3 = action in working dir -# $4 = expected result -tm() -{ - mkdir t - cd t - hg init - echo "[merge]" >> .hg/hgrc - echo "followcopies = 1" >> .hg/hgrc - - # base - echo base > a - echo base > rev # used to force commits - hg add a rev - hg ci -m "base" - - # remote - echo remote > rev - if [ "$2" != "" ] ; then $2 ; fi - hg ci -m "remote" - - # local - hg co -q 0 - echo local > rev - if [ "$1" != "" ] ; then $1 ; fi - hg ci -m "local" - - # working dir - echo local > rev - if [ "$3" != "" ] ; then $3 ; fi - - # merge - echo "--------------" - echo "test L:$1 R:$2 W:$3 - $4" - echo "--------------" - hg merge -y --debug --traceback - - echo "--------------" - hg status -camC -X rev - - hg ci -m "merge" - - echo "--------------" - echo - - cd .. - rm -r t -} - -up() { - cp rev $1 - hg add $1 2> /dev/null - if [ "$2" != "" ] ; then - cp rev $2 - hg add $2 2> /dev/null - fi -} - -uc() { up $1; hg cp $1 $2; } # update + copy -um() { up $1; hg mv $1 $2; } -nc() { hg cp $1 $2; } # just copy -nm() { hg mv $1 $2; } # just move - -tm "up a " "nc a b" " " "1 get local a to b" -tm "nc a b" "up a " " " "2 get rem change to a and b" -tm "up a " "nm a b" " " "3 get local a change to b, remove a" -tm "nm a b" "up a " " " "4 get remote change to b" -tm " " "nc a b" " " "5 get b" -tm "nc a b" " " " " "6 nothing" -tm " " "nm a b" " " "7 get b" -tm "nm a b" " " " " "8 nothing" -tm "um a b" "um a b" " " "9 do merge with ancestor in a" -#tm "um a c" "um x c" " " "10 do merge with no ancestor" -tm "nm a b" "nm a c" " " "11 get c, keep b" -tm "nc a b" "up b " " " "12 merge b no ancestor" -tm "up b " "nm a b" " " "13 merge b no ancestor" -tm "nc a b" "up a b" " " "14 merge b no ancestor" -tm "up b " "nm a b" " " "15 merge b no ancestor, remove a" -tm "nc a b" "up a b" " " "16 get a, merge b no ancestor" -tm "up a b" "nc a b" " " "17 keep a, merge b no ancestor" -tm "nm a b" "up a b" " " "18 merge b no ancestor" -tm "up a b" "nm a b" " " "19 merge b no ancestor, prompt remove a" -tm "up a " "um a b" " " "20 merge a and b to b, remove a" -tm "um a b" "up a " " " "21 merge a and b to b" -#tm "nm a b" "um x a" " " "22 get a, keep b" -tm "nm a b" "up a c" " " "23 get c, keep b"
--- a/tests/test-rename-merge2.out Sun Sep 26 13:44:49 2010 -0500 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,651 +0,0 @@ -created new head --------------- -test L:up a R:nc a b W: - 1 get local a to b --------------- - 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 4ce40f5aca24 - rev: versions differ -> m - a: remote copied to b -> m -preserving a for resolve of b -preserving rev for resolve of rev -updating: a 1/2 files (50.00%) -picked tool 'python ../merge' for b (binary False symlink False) -merging a and b to b -my b@e300d1c794ec+ other b@4ce40f5aca24 ancestor a@924404dff337 - premerge successful -updating: rev 2/2 files (100.00%) -picked tool 'python ../merge' for rev (binary False symlink False) -merging rev -my rev@e300d1c794ec+ other rev@4ce40f5aca24 ancestor rev@924404dff337 -0 files updated, 2 files merged, 0 files removed, 0 files unresolved -(branch merge, don't forget to commit) --------------- -M b - a -C a --------------- - -created new head --------------- -test L:nc a b R:up a W: - 2 get rem change to a and b --------------- - 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 86a2aa42fc76+ remote f4db7e329e71 - a: remote is newer -> g - b: local copied/moved to a -> m - rev: versions differ -> m -preserving b for resolve of b -preserving rev for resolve of rev -updating: a 1/3 files (33.33%) -getting a -updating: b 2/3 files (66.67%) -picked tool 'python ../merge' for b (binary False symlink False) -merging b and a to b -my b@86a2aa42fc76+ other a@f4db7e329e71 ancestor a@924404dff337 - premerge successful -updating: rev 3/3 files (100.00%) -picked tool 'python ../merge' for rev (binary False symlink False) -merging rev -my rev@86a2aa42fc76+ other rev@f4db7e329e71 ancestor rev@924404dff337 -1 files updated, 2 files merged, 0 files removed, 0 files unresolved -(branch merge, don't forget to commit) --------------- -M a -M b - a --------------- - -created new head --------------- -test L:up a R:nm a b W: - 3 get local a change to b, remove a --------------- - 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 bdb19105162a - rev: versions differ -> m - a: remote moved to b -> m -preserving a for resolve of b -preserving rev for resolve of rev -removing a -updating: a 1/2 files (50.00%) -picked tool 'python ../merge' for b (binary False symlink False) -merging a and b to b -my b@e300d1c794ec+ other b@bdb19105162a ancestor a@924404dff337 - premerge successful -updating: rev 2/2 files (100.00%) -picked tool 'python ../merge' for rev (binary False symlink False) -merging rev -my rev@e300d1c794ec+ other rev@bdb19105162a ancestor rev@924404dff337 -0 files updated, 2 files merged, 0 files removed, 0 files unresolved -(branch merge, don't forget to commit) --------------- -M b - a --------------- - -created new head --------------- -test L:nm a b R:up a W: - 4 get remote change to b --------------- - 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 02963e448370+ remote f4db7e329e71 - b: local copied/moved to a -> m - rev: versions differ -> m -preserving b for resolve of b -preserving rev for resolve of rev -updating: b 1/2 files (50.00%) -picked tool 'python ../merge' for b (binary False symlink False) -merging b and a to b -my b@02963e448370+ other a@f4db7e329e71 ancestor a@924404dff337 - premerge successful -updating: rev 2/2 files (100.00%) -picked tool 'python ../merge' for rev (binary False symlink False) -merging rev -my rev@02963e448370+ other rev@f4db7e329e71 ancestor rev@924404dff337 -0 files updated, 2 files merged, 0 files removed, 0 files unresolved -(branch merge, don't forget to commit) --------------- -M b - a --------------- - -created new head --------------- -test L: R:nc a b W: - 5 get b --------------- - 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 4ce40f5aca24 - rev: versions differ -> m - b: remote created -> g -preserving rev for resolve of rev -updating: b 1/2 files (50.00%) -getting b -updating: rev 2/2 files (100.00%) -picked tool 'python ../merge' for rev (binary False symlink False) -merging rev -my rev@94b33a1b7f2d+ other rev@4ce40f5aca24 ancestor rev@924404dff337 -1 files updated, 1 files merged, 0 files removed, 0 files unresolved -(branch merge, don't forget to commit) --------------- -M b -C a --------------- - -created new head --------------- -test L:nc a b R: W: - 6 nothing --------------- - 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 86a2aa42fc76+ remote 97c705ade336 - rev: versions differ -> m -preserving rev for resolve of rev -updating: rev 1/1 files (100.00%) -picked tool 'python ../merge' for rev (binary False symlink False) -merging rev -my rev@86a2aa42fc76+ other rev@97c705ade336 ancestor rev@924404dff337 -0 files updated, 1 files merged, 0 files removed, 0 files unresolved -(branch merge, don't forget to commit) --------------- -C a -C b --------------- - -created new head --------------- -test L: R:nm a b W: - 7 get b --------------- - 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 bdb19105162a - a: other deleted -> r - rev: versions differ -> m - b: remote created -> g -preserving rev for resolve of rev -updating: a 1/3 files (33.33%) -removing a -updating: b 2/3 files (66.67%) -getting b -updating: rev 3/3 files (100.00%) -picked tool 'python ../merge' for rev (binary False symlink False) -merging rev -my rev@94b33a1b7f2d+ other rev@bdb19105162a ancestor rev@924404dff337 -1 files updated, 1 files merged, 1 files removed, 0 files unresolved -(branch merge, don't forget to commit) --------------- -M b --------------- - -created new head --------------- -test L:nm a b R: W: - 8 nothing --------------- - 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 02963e448370+ remote 97c705ade336 - rev: versions differ -> m -preserving rev for resolve of rev -updating: rev 1/1 files (100.00%) -picked tool 'python ../merge' for rev (binary False symlink False) -merging rev -my rev@02963e448370+ other rev@97c705ade336 ancestor rev@924404dff337 -0 files updated, 1 files merged, 0 files removed, 0 files unresolved -(branch merge, don't forget to commit) --------------- -C b --------------- - -created new head --------------- -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 62e7bf090eba+ remote 49b6d8032493 - b: versions differ -> m - rev: versions differ -> m -preserving b for resolve of b -preserving rev for resolve of rev -updating: b 1/2 files (50.00%) -picked tool 'python ../merge' for b (binary False symlink False) -merging b -my b@62e7bf090eba+ other b@49b6d8032493 ancestor a@924404dff337 -updating: rev 2/2 files (100.00%) -picked tool 'python ../merge' for rev (binary False symlink False) -merging rev -my rev@62e7bf090eba+ other rev@49b6d8032493 ancestor rev@924404dff337 -0 files updated, 2 files merged, 0 files removed, 0 files unresolved -(branch merge, don't forget to commit) --------------- -M b --------------- - -created new head --------------- -test L:nm a b R:nm a c W: - 11 get c, keep b --------------- - searching for copies back to rev 1 - unmatched files in local: - b - unmatched files in other: - c - all copies found (* = to merge, ! = divergent): - c -> a ! - b -> a ! - checking for directory renames - a: divergent renames -> dr -resolving manifests - overwrite None partial False - ancestor 924404dff337 local 02963e448370+ remote fe905ef2c33e - rev: versions differ -> m - c: remote created -> g -preserving rev for resolve of rev -updating: a 1/3 files (33.33%) -warning: detected divergent renames of a to: - b - c -updating: c 2/3 files (66.67%) -getting c -updating: rev 3/3 files (100.00%) -picked tool 'python ../merge' for rev (binary False symlink False) -merging rev -my rev@02963e448370+ other rev@fe905ef2c33e ancestor rev@924404dff337 -1 files updated, 1 files merged, 0 files removed, 0 files unresolved -(branch merge, don't forget to commit) --------------- -M c -C b --------------- - -created new head --------------- -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 86a2aa42fc76+ remote af30c7647fc7 - b: versions differ -> m - rev: versions differ -> m -preserving b for resolve of b -preserving rev for resolve of rev -updating: b 1/2 files (50.00%) -picked tool 'python ../merge' for b (binary False symlink False) -merging b -my b@86a2aa42fc76+ other b@af30c7647fc7 ancestor b@000000000000 -updating: rev 2/2 files (100.00%) -picked tool 'python ../merge' for rev (binary False symlink False) -merging rev -my rev@86a2aa42fc76+ other rev@af30c7647fc7 ancestor rev@924404dff337 -0 files updated, 2 files merged, 0 files removed, 0 files unresolved -(branch merge, don't forget to commit) --------------- -M b -C a --------------- - -created new head --------------- -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 bdb19105162a - a: other deleted -> r - b: versions differ -> m - rev: versions differ -> m -preserving b for resolve of b -preserving rev for resolve of rev -updating: a 1/3 files (33.33%) -removing a -updating: b 2/3 files (66.67%) -picked tool 'python ../merge' for b (binary False symlink False) -merging b -my b@59318016310c+ other b@bdb19105162a ancestor b@000000000000 -updating: rev 3/3 files (100.00%) -picked tool 'python ../merge' for rev (binary False symlink False) -merging rev -my rev@59318016310c+ other rev@bdb19105162a ancestor rev@924404dff337 -0 files updated, 2 files merged, 1 files removed, 0 files unresolved -(branch merge, don't forget to commit) --------------- -M b --------------- - -created new head --------------- -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 86a2aa42fc76+ remote 8dbce441892a - a: remote is newer -> g - b: versions differ -> m - rev: versions differ -> m -preserving b for resolve of b -preserving rev for resolve of rev -updating: a 1/3 files (33.33%) -getting a -updating: b 2/3 files (66.67%) -picked tool 'python ../merge' for b (binary False symlink False) -merging b -my b@86a2aa42fc76+ other b@8dbce441892a ancestor b@000000000000 -updating: rev 3/3 files (100.00%) -picked tool 'python ../merge' for rev (binary False symlink False) -merging rev -my rev@86a2aa42fc76+ other rev@8dbce441892a ancestor rev@924404dff337 -1 files updated, 2 files merged, 0 files removed, 0 files unresolved -(branch merge, don't forget to commit) --------------- -M a -M b --------------- - -created new head --------------- -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 bdb19105162a - a: other deleted -> r - b: versions differ -> m - rev: versions differ -> m -preserving b for resolve of b -preserving rev for resolve of rev -updating: a 1/3 files (33.33%) -removing a -updating: b 2/3 files (66.67%) -picked tool 'python ../merge' for b (binary False symlink False) -merging b -my b@59318016310c+ other b@bdb19105162a ancestor b@000000000000 -updating: rev 3/3 files (100.00%) -picked tool 'python ../merge' for rev (binary False symlink False) -merging rev -my rev@59318016310c+ other rev@bdb19105162a ancestor rev@924404dff337 -0 files updated, 2 files merged, 1 files removed, 0 files unresolved -(branch merge, don't forget to commit) --------------- -M b --------------- - -created new head --------------- -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 86a2aa42fc76+ remote 8dbce441892a - a: remote is newer -> g - b: versions differ -> m - rev: versions differ -> m -preserving b for resolve of b -preserving rev for resolve of rev -updating: a 1/3 files (33.33%) -getting a -updating: b 2/3 files (66.67%) -picked tool 'python ../merge' for b (binary False symlink False) -merging b -my b@86a2aa42fc76+ other b@8dbce441892a ancestor b@000000000000 -updating: rev 3/3 files (100.00%) -picked tool 'python ../merge' for rev (binary False symlink False) -merging rev -my rev@86a2aa42fc76+ other rev@8dbce441892a ancestor rev@924404dff337 -1 files updated, 2 files merged, 0 files removed, 0 files unresolved -(branch merge, don't forget to commit) --------------- -M a -M b --------------- - -created new head --------------- -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 4ce40f5aca24 - b: versions differ -> m - rev: versions differ -> m -preserving b for resolve of b -preserving rev for resolve of rev -updating: b 1/2 files (50.00%) -picked tool 'python ../merge' for b (binary False symlink False) -merging b -my b@0b76e65c8289+ other b@4ce40f5aca24 ancestor b@000000000000 -updating: rev 2/2 files (100.00%) -picked tool 'python ../merge' for rev (binary False symlink False) -merging rev -my rev@0b76e65c8289+ other rev@4ce40f5aca24 ancestor rev@924404dff337 -0 files updated, 2 files merged, 0 files removed, 0 files unresolved -(branch merge, don't forget to commit) --------------- -M b -C a --------------- - -created new head --------------- -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 02963e448370+ remote 8dbce441892a - b: versions differ -> m - rev: versions differ -> m -remote changed a which local deleted -use (c)hanged version or leave (d)eleted? c - a: prompt recreating -> g -preserving b for resolve of b -preserving rev for resolve of rev -updating: a 1/3 files (33.33%) -getting a -updating: b 2/3 files (66.67%) -picked tool 'python ../merge' for b (binary False symlink False) -merging b -my b@02963e448370+ other b@8dbce441892a ancestor b@000000000000 -updating: rev 3/3 files (100.00%) -picked tool 'python ../merge' for rev (binary False symlink False) -merging rev -my rev@02963e448370+ other rev@8dbce441892a ancestor rev@924404dff337 -1 files updated, 2 files merged, 0 files removed, 0 files unresolved -(branch merge, don't forget to commit) --------------- -M a -M b --------------- - -created new head --------------- -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 bdb19105162a - local changed a which remote deleted -use (c)hanged version or (d)elete? c - a: prompt keep -> a - b: versions differ -> m - rev: versions differ -> m -preserving b for resolve of b -preserving rev for resolve of rev -updating: a 1/3 files (33.33%) -updating: b 2/3 files (66.67%) -picked tool 'python ../merge' for b (binary False symlink False) -merging b -my b@0b76e65c8289+ other b@bdb19105162a ancestor b@000000000000 -updating: rev 3/3 files (100.00%) -picked tool 'python ../merge' for rev (binary False symlink False) -merging rev -my rev@0b76e65c8289+ other rev@bdb19105162a ancestor rev@924404dff337 -0 files updated, 2 files merged, 0 files removed, 0 files unresolved -(branch merge, don't forget to commit) --------------- -M b -C a --------------- - -created new head --------------- -test L:up a R:um a b W: - 20 merge a and b to b, remove a --------------- - 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 49b6d8032493 - rev: versions differ -> m - a: remote moved to b -> m -preserving a for resolve of b -preserving rev for resolve of rev -removing a -updating: a 1/2 files (50.00%) -picked tool 'python ../merge' for b (binary False symlink False) -merging a and b to b -my b@e300d1c794ec+ other b@49b6d8032493 ancestor a@924404dff337 -updating: rev 2/2 files (100.00%) -picked tool 'python ../merge' for rev (binary False symlink False) -merging rev -my rev@e300d1c794ec+ other rev@49b6d8032493 ancestor rev@924404dff337 -0 files updated, 2 files merged, 0 files removed, 0 files unresolved -(branch merge, don't forget to commit) --------------- -M b - a --------------- - -created new head --------------- -test L:um a b R:up a W: - 21 merge a and b to b --------------- - 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 62e7bf090eba+ remote f4db7e329e71 - b: local copied/moved to a -> m - rev: versions differ -> m -preserving b for resolve of b -preserving rev for resolve of rev -updating: b 1/2 files (50.00%) -picked tool 'python ../merge' for b (binary False symlink False) -merging b and a to b -my b@62e7bf090eba+ other a@f4db7e329e71 ancestor a@924404dff337 -updating: rev 2/2 files (100.00%) -picked tool 'python ../merge' for rev (binary False symlink False) -merging rev -my rev@62e7bf090eba+ other rev@f4db7e329e71 ancestor rev@924404dff337 -0 files updated, 2 files merged, 0 files removed, 0 files unresolved -(branch merge, don't forget to commit) --------------- -M b - a --------------- - -created new head --------------- -test L:nm a b R:up a c W: - 23 get c, keep b --------------- - searching for copies back to rev 1 - unmatched files in local: - b - unmatched files in other: - c - all copies found (* = to merge, ! = divergent): - b -> a * - checking for directory renames -resolving manifests - overwrite None partial False - ancestor 924404dff337 local 02963e448370+ remote 2b958612230f - b: local copied/moved to a -> m - rev: versions differ -> m - c: remote created -> g -preserving b for resolve of b -preserving rev for resolve of rev -updating: b 1/3 files (33.33%) -picked tool 'python ../merge' for b (binary False symlink False) -merging b and a to b -my b@02963e448370+ other a@2b958612230f ancestor a@924404dff337 - premerge successful -updating: c 2/3 files (66.67%) -getting c -updating: rev 3/3 files (100.00%) -picked tool 'python ../merge' for rev (binary False symlink False) -merging rev -my rev@02963e448370+ other rev@2b958612230f ancestor rev@924404dff337 -1 files updated, 2 files merged, 0 files removed, 0 files unresolved -(branch merge, don't forget to commit) --------------- -M b - a -M c --------------- -
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tests/test-rename-merge2.t Sun Sep 26 13:44:49 2010 -0500 @@ -0,0 +1,754 @@ + + $ mkdir -p t + $ cd t + $ cat <<EOF > merge + > import sys, os + > f = open(sys.argv[1], "wb") + > f.write("merge %s %s %s" % (sys.argv[1], sys.argv[2], sys.argv[3])) + > f.close() + > EOF + $ HGMERGE="python ../merge"; export HGMERGE + +perform a test merge with possible renaming +args: +$1 = action in local branch +$2 = action in remote branch +$3 = action in working dir +$4 = expected result + + $ tm() + > { + > mkdir t + > cd t + > hg init + > echo "[merge]" >> .hg/hgrc + > echo "followcopies = 1" >> .hg/hgrc + > + > # base + > echo base > a + > echo base > rev # used to force commits + > hg add a rev + > hg ci -m "base" + > + > # remote + > echo remote > rev + > if [ "$2" != "" ] ; then $2 ; fi + > hg ci -m "remote" + > + > # local + > hg co -q 0 + > echo local > rev + > if [ "$1" != "" ] ; then $1 ; fi + > hg ci -m "local" + > + > # working dir + > echo local > rev + > if [ "$3" != "" ] ; then $3 ; fi + > + > # merge + > echo "--------------" + > echo "test L:$1 R:$2 W:$3 - $4" + > echo "--------------" + > hg merge -y --debug --traceback + > + > echo "--------------" + > hg status -camC -X rev + > + > hg ci -m "merge" + > + > echo "--------------" + > echo + > + > cd .. + > rm -r t + > } + $ up() { + > cp rev $1 + > hg add $1 2> /dev/null + > if [ "$2" != "" ] ; then + > cp rev $2 + > hg add $2 2> /dev/null + > fi + > } + $ uc() { up $1; hg cp $1 $2; } # update + copy + $ um() { up $1; hg mv $1 $2; } + $ nc() { hg cp $1 $2; } # just copy + $ nm() { hg mv $1 $2; } # just move + $ tm "up a " "nc a b" " " "1 get local a to b" + created new head + -------------- + test L:up a R:nc a b W: - 1 get local a to b + -------------- + 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 4ce40f5aca24 + rev: versions differ -> m + a: remote copied to b -> m + preserving a for resolve of b + preserving rev for resolve of rev + updating: a 1/2 files (50.00%) + picked tool 'python ../merge' for b (binary False symlink False) + merging a and b to b + my b@e300d1c794ec+ other b@4ce40f5aca24 ancestor a@924404dff337 + premerge successful + updating: rev 2/2 files (100.00%) + picked tool 'python ../merge' for rev (binary False symlink False) + merging rev + my rev@e300d1c794ec+ other rev@4ce40f5aca24 ancestor rev@924404dff337 + 0 files updated, 2 files merged, 0 files removed, 0 files unresolved + (branch merge, don't forget to commit) + -------------- + M b + a + C a + -------------- + + $ tm "nc a b" "up a " " " "2 get rem change to a and b" + created new head + -------------- + test L:nc a b R:up a W: - 2 get rem change to a and b + -------------- + 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 86a2aa42fc76+ remote f4db7e329e71 + a: remote is newer -> g + b: local copied/moved to a -> m + rev: versions differ -> m + preserving b for resolve of b + preserving rev for resolve of rev + updating: a 1/3 files (33.33%) + getting a + updating: b 2/3 files (66.67%) + picked tool 'python ../merge' for b (binary False symlink False) + merging b and a to b + my b@86a2aa42fc76+ other a@f4db7e329e71 ancestor a@924404dff337 + premerge successful + updating: rev 3/3 files (100.00%) + picked tool 'python ../merge' for rev (binary False symlink False) + merging rev + my rev@86a2aa42fc76+ other rev@f4db7e329e71 ancestor rev@924404dff337 + 1 files updated, 2 files merged, 0 files removed, 0 files unresolved + (branch merge, don't forget to commit) + -------------- + M a + M b + a + -------------- + + $ tm "up a " "nm a b" " " "3 get local a change to b, remove a" + created new head + -------------- + test L:up a R:nm a b W: - 3 get local a change to b, remove a + -------------- + 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 bdb19105162a + rev: versions differ -> m + a: remote moved to b -> m + preserving a for resolve of b + preserving rev for resolve of rev + removing a + updating: a 1/2 files (50.00%) + picked tool 'python ../merge' for b (binary False symlink False) + merging a and b to b + my b@e300d1c794ec+ other b@bdb19105162a ancestor a@924404dff337 + premerge successful + updating: rev 2/2 files (100.00%) + picked tool 'python ../merge' for rev (binary False symlink False) + merging rev + my rev@e300d1c794ec+ other rev@bdb19105162a ancestor rev@924404dff337 + 0 files updated, 2 files merged, 0 files removed, 0 files unresolved + (branch merge, don't forget to commit) + -------------- + M b + a + -------------- + + $ tm "nm a b" "up a " " " "4 get remote change to b" + created new head + -------------- + test L:nm a b R:up a W: - 4 get remote change to b + -------------- + 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 02963e448370+ remote f4db7e329e71 + b: local copied/moved to a -> m + rev: versions differ -> m + preserving b for resolve of b + preserving rev for resolve of rev + updating: b 1/2 files (50.00%) + picked tool 'python ../merge' for b (binary False symlink False) + merging b and a to b + my b@02963e448370+ other a@f4db7e329e71 ancestor a@924404dff337 + premerge successful + updating: rev 2/2 files (100.00%) + picked tool 'python ../merge' for rev (binary False symlink False) + merging rev + my rev@02963e448370+ other rev@f4db7e329e71 ancestor rev@924404dff337 + 0 files updated, 2 files merged, 0 files removed, 0 files unresolved + (branch merge, don't forget to commit) + -------------- + M b + a + -------------- + + $ tm " " "nc a b" " " "5 get b" + created new head + -------------- + test L: R:nc a b W: - 5 get b + -------------- + 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 4ce40f5aca24 + rev: versions differ -> m + b: remote created -> g + preserving rev for resolve of rev + updating: b 1/2 files (50.00%) + getting b + updating: rev 2/2 files (100.00%) + picked tool 'python ../merge' for rev (binary False symlink False) + merging rev + my rev@94b33a1b7f2d+ other rev@4ce40f5aca24 ancestor rev@924404dff337 + 1 files updated, 1 files merged, 0 files removed, 0 files unresolved + (branch merge, don't forget to commit) + -------------- + M b + C a + -------------- + + $ tm "nc a b" " " " " "6 nothing" + created new head + -------------- + test L:nc a b R: W: - 6 nothing + -------------- + 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 86a2aa42fc76+ remote 97c705ade336 + rev: versions differ -> m + preserving rev for resolve of rev + updating: rev 1/1 files (100.00%) + picked tool 'python ../merge' for rev (binary False symlink False) + merging rev + my rev@86a2aa42fc76+ other rev@97c705ade336 ancestor rev@924404dff337 + 0 files updated, 1 files merged, 0 files removed, 0 files unresolved + (branch merge, don't forget to commit) + -------------- + C a + C b + -------------- + + $ tm " " "nm a b" " " "7 get b" + created new head + -------------- + test L: R:nm a b W: - 7 get b + -------------- + 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 bdb19105162a + a: other deleted -> r + rev: versions differ -> m + b: remote created -> g + preserving rev for resolve of rev + updating: a 1/3 files (33.33%) + removing a + updating: b 2/3 files (66.67%) + getting b + updating: rev 3/3 files (100.00%) + picked tool 'python ../merge' for rev (binary False symlink False) + merging rev + my rev@94b33a1b7f2d+ other rev@bdb19105162a ancestor rev@924404dff337 + 1 files updated, 1 files merged, 1 files removed, 0 files unresolved + (branch merge, don't forget to commit) + -------------- + M b + -------------- + + $ tm "nm a b" " " " " "8 nothing" + created new head + -------------- + test L:nm a b R: W: - 8 nothing + -------------- + 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 02963e448370+ remote 97c705ade336 + rev: versions differ -> m + preserving rev for resolve of rev + updating: rev 1/1 files (100.00%) + picked tool 'python ../merge' for rev (binary False symlink False) + merging rev + my rev@02963e448370+ other rev@97c705ade336 ancestor rev@924404dff337 + 0 files updated, 1 files merged, 0 files removed, 0 files unresolved + (branch merge, don't forget to commit) + -------------- + C b + -------------- + + $ tm "um a b" "um a b" " " "9 do merge with ancestor in a" + created new head + -------------- + 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 62e7bf090eba+ remote 49b6d8032493 + b: versions differ -> m + rev: versions differ -> m + preserving b for resolve of b + preserving rev for resolve of rev + updating: b 1/2 files (50.00%) + picked tool 'python ../merge' for b (binary False symlink False) + merging b + my b@62e7bf090eba+ other b@49b6d8032493 ancestor a@924404dff337 + updating: rev 2/2 files (100.00%) + picked tool 'python ../merge' for rev (binary False symlink False) + merging rev + my rev@62e7bf090eba+ other rev@49b6d8032493 ancestor rev@924404dff337 + 0 files updated, 2 files merged, 0 files removed, 0 files unresolved + (branch merge, don't forget to commit) + -------------- + M b + -------------- + + +m "um a c" "um x c" " " "10 do merge with no ancestor" + + $ tm "nm a b" "nm a c" " " "11 get c, keep b" + created new head + -------------- + test L:nm a b R:nm a c W: - 11 get c, keep b + -------------- + searching for copies back to rev 1 + unmatched files in local: + b + unmatched files in other: + c + all copies found (* = to merge, ! = divergent): + c -> a ! + b -> a ! + checking for directory renames + a: divergent renames -> dr + resolving manifests + overwrite None partial False + ancestor 924404dff337 local 02963e448370+ remote fe905ef2c33e + rev: versions differ -> m + c: remote created -> g + preserving rev for resolve of rev + updating: a 1/3 files (33.33%) + warning: detected divergent renames of a to: + b + c + updating: c 2/3 files (66.67%) + getting c + updating: rev 3/3 files (100.00%) + picked tool 'python ../merge' for rev (binary False symlink False) + merging rev + my rev@02963e448370+ other rev@fe905ef2c33e ancestor rev@924404dff337 + 1 files updated, 1 files merged, 0 files removed, 0 files unresolved + (branch merge, don't forget to commit) + -------------- + M c + C b + -------------- + + $ tm "nc a b" "up b " " " "12 merge b no ancestor" + created new head + -------------- + 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 86a2aa42fc76+ remote af30c7647fc7 + b: versions differ -> m + rev: versions differ -> m + preserving b for resolve of b + preserving rev for resolve of rev + updating: b 1/2 files (50.00%) + picked tool 'python ../merge' for b (binary False symlink False) + merging b + my b@86a2aa42fc76+ other b@af30c7647fc7 ancestor b@000000000000 + updating: rev 2/2 files (100.00%) + picked tool 'python ../merge' for rev (binary False symlink False) + merging rev + my rev@86a2aa42fc76+ other rev@af30c7647fc7 ancestor rev@924404dff337 + 0 files updated, 2 files merged, 0 files removed, 0 files unresolved + (branch merge, don't forget to commit) + -------------- + M b + C a + -------------- + + $ tm "up b " "nm a b" " " "13 merge b no ancestor" + created new head + -------------- + 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 bdb19105162a + a: other deleted -> r + b: versions differ -> m + rev: versions differ -> m + preserving b for resolve of b + preserving rev for resolve of rev + updating: a 1/3 files (33.33%) + removing a + updating: b 2/3 files (66.67%) + picked tool 'python ../merge' for b (binary False symlink False) + merging b + my b@59318016310c+ other b@bdb19105162a ancestor b@000000000000 + updating: rev 3/3 files (100.00%) + picked tool 'python ../merge' for rev (binary False symlink False) + merging rev + my rev@59318016310c+ other rev@bdb19105162a ancestor rev@924404dff337 + 0 files updated, 2 files merged, 1 files removed, 0 files unresolved + (branch merge, don't forget to commit) + -------------- + M b + -------------- + + $ tm "nc a b" "up a b" " " "14 merge b no ancestor" + created new head + -------------- + 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 86a2aa42fc76+ remote 8dbce441892a + a: remote is newer -> g + b: versions differ -> m + rev: versions differ -> m + preserving b for resolve of b + preserving rev for resolve of rev + updating: a 1/3 files (33.33%) + getting a + updating: b 2/3 files (66.67%) + picked tool 'python ../merge' for b (binary False symlink False) + merging b + my b@86a2aa42fc76+ other b@8dbce441892a ancestor b@000000000000 + updating: rev 3/3 files (100.00%) + picked tool 'python ../merge' for rev (binary False symlink False) + merging rev + my rev@86a2aa42fc76+ other rev@8dbce441892a ancestor rev@924404dff337 + 1 files updated, 2 files merged, 0 files removed, 0 files unresolved + (branch merge, don't forget to commit) + -------------- + M a + M b + -------------- + + $ tm "up b " "nm a b" " " "15 merge b no ancestor, remove a" + created new head + -------------- + 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 bdb19105162a + a: other deleted -> r + b: versions differ -> m + rev: versions differ -> m + preserving b for resolve of b + preserving rev for resolve of rev + updating: a 1/3 files (33.33%) + removing a + updating: b 2/3 files (66.67%) + picked tool 'python ../merge' for b (binary False symlink False) + merging b + my b@59318016310c+ other b@bdb19105162a ancestor b@000000000000 + updating: rev 3/3 files (100.00%) + picked tool 'python ../merge' for rev (binary False symlink False) + merging rev + my rev@59318016310c+ other rev@bdb19105162a ancestor rev@924404dff337 + 0 files updated, 2 files merged, 1 files removed, 0 files unresolved + (branch merge, don't forget to commit) + -------------- + M b + -------------- + + $ tm "nc a b" "up a b" " " "16 get a, merge b no ancestor" + created new head + -------------- + 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 86a2aa42fc76+ remote 8dbce441892a + a: remote is newer -> g + b: versions differ -> m + rev: versions differ -> m + preserving b for resolve of b + preserving rev for resolve of rev + updating: a 1/3 files (33.33%) + getting a + updating: b 2/3 files (66.67%) + picked tool 'python ../merge' for b (binary False symlink False) + merging b + my b@86a2aa42fc76+ other b@8dbce441892a ancestor b@000000000000 + updating: rev 3/3 files (100.00%) + picked tool 'python ../merge' for rev (binary False symlink False) + merging rev + my rev@86a2aa42fc76+ other rev@8dbce441892a ancestor rev@924404dff337 + 1 files updated, 2 files merged, 0 files removed, 0 files unresolved + (branch merge, don't forget to commit) + -------------- + M a + M b + -------------- + + $ tm "up a b" "nc a b" " " "17 keep a, merge b no ancestor" + created new head + -------------- + 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 4ce40f5aca24 + b: versions differ -> m + rev: versions differ -> m + preserving b for resolve of b + preserving rev for resolve of rev + updating: b 1/2 files (50.00%) + picked tool 'python ../merge' for b (binary False symlink False) + merging b + my b@0b76e65c8289+ other b@4ce40f5aca24 ancestor b@000000000000 + updating: rev 2/2 files (100.00%) + picked tool 'python ../merge' for rev (binary False symlink False) + merging rev + my rev@0b76e65c8289+ other rev@4ce40f5aca24 ancestor rev@924404dff337 + 0 files updated, 2 files merged, 0 files removed, 0 files unresolved + (branch merge, don't forget to commit) + -------------- + M b + C a + -------------- + + $ tm "nm a b" "up a b" " " "18 merge b no ancestor" + created new head + -------------- + 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 02963e448370+ remote 8dbce441892a + b: versions differ -> m + rev: versions differ -> m + remote changed a which local deleted + use (c)hanged version or leave (d)eleted? c + a: prompt recreating -> g + preserving b for resolve of b + preserving rev for resolve of rev + updating: a 1/3 files (33.33%) + getting a + updating: b 2/3 files (66.67%) + picked tool 'python ../merge' for b (binary False symlink False) + merging b + my b@02963e448370+ other b@8dbce441892a ancestor b@000000000000 + updating: rev 3/3 files (100.00%) + picked tool 'python ../merge' for rev (binary False symlink False) + merging rev + my rev@02963e448370+ other rev@8dbce441892a ancestor rev@924404dff337 + 1 files updated, 2 files merged, 0 files removed, 0 files unresolved + (branch merge, don't forget to commit) + -------------- + M a + M b + -------------- + + $ tm "up a b" "nm a b" " " "19 merge b no ancestor, prompt remove a" + created new head + -------------- + 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 bdb19105162a + local changed a which remote deleted + use (c)hanged version or (d)elete? c + a: prompt keep -> a + b: versions differ -> m + rev: versions differ -> m + preserving b for resolve of b + preserving rev for resolve of rev + updating: a 1/3 files (33.33%) + updating: b 2/3 files (66.67%) + picked tool 'python ../merge' for b (binary False symlink False) + merging b + my b@0b76e65c8289+ other b@bdb19105162a ancestor b@000000000000 + updating: rev 3/3 files (100.00%) + picked tool 'python ../merge' for rev (binary False symlink False) + merging rev + my rev@0b76e65c8289+ other rev@bdb19105162a ancestor rev@924404dff337 + 0 files updated, 2 files merged, 0 files removed, 0 files unresolved + (branch merge, don't forget to commit) + -------------- + M b + C a + -------------- + + $ tm "up a " "um a b" " " "20 merge a and b to b, remove a" + created new head + -------------- + test L:up a R:um a b W: - 20 merge a and b to b, remove a + -------------- + 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 49b6d8032493 + rev: versions differ -> m + a: remote moved to b -> m + preserving a for resolve of b + preserving rev for resolve of rev + removing a + updating: a 1/2 files (50.00%) + picked tool 'python ../merge' for b (binary False symlink False) + merging a and b to b + my b@e300d1c794ec+ other b@49b6d8032493 ancestor a@924404dff337 + updating: rev 2/2 files (100.00%) + picked tool 'python ../merge' for rev (binary False symlink False) + merging rev + my rev@e300d1c794ec+ other rev@49b6d8032493 ancestor rev@924404dff337 + 0 files updated, 2 files merged, 0 files removed, 0 files unresolved + (branch merge, don't forget to commit) + -------------- + M b + a + -------------- + + $ tm "um a b" "up a " " " "21 merge a and b to b" + created new head + -------------- + test L:um a b R:up a W: - 21 merge a and b to b + -------------- + 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 62e7bf090eba+ remote f4db7e329e71 + b: local copied/moved to a -> m + rev: versions differ -> m + preserving b for resolve of b + preserving rev for resolve of rev + updating: b 1/2 files (50.00%) + picked tool 'python ../merge' for b (binary False symlink False) + merging b and a to b + my b@62e7bf090eba+ other a@f4db7e329e71 ancestor a@924404dff337 + updating: rev 2/2 files (100.00%) + picked tool 'python ../merge' for rev (binary False symlink False) + merging rev + my rev@62e7bf090eba+ other rev@f4db7e329e71 ancestor rev@924404dff337 + 0 files updated, 2 files merged, 0 files removed, 0 files unresolved + (branch merge, don't forget to commit) + -------------- + M b + a + -------------- + + +m "nm a b" "um x a" " " "22 get a, keep b" + + $ tm "nm a b" "up a c" " " "23 get c, keep b" + created new head + -------------- + test L:nm a b R:up a c W: - 23 get c, keep b + -------------- + searching for copies back to rev 1 + unmatched files in local: + b + unmatched files in other: + c + all copies found (* = to merge, ! = divergent): + b -> a * + checking for directory renames + resolving manifests + overwrite None partial False + ancestor 924404dff337 local 02963e448370+ remote 2b958612230f + b: local copied/moved to a -> m + rev: versions differ -> m + c: remote created -> g + preserving b for resolve of b + preserving rev for resolve of rev + updating: b 1/3 files (33.33%) + picked tool 'python ../merge' for b (binary False symlink False) + merging b and a to b + my b@02963e448370+ other a@2b958612230f ancestor a@924404dff337 + premerge successful + updating: c 2/3 files (66.67%) + getting c + updating: rev 3/3 files (100.00%) + picked tool 'python ../merge' for rev (binary False symlink False) + merging rev + my rev@02963e448370+ other rev@2b958612230f ancestor rev@924404dff337 + 1 files updated, 2 files merged, 0 files removed, 0 files unresolved + (branch merge, don't forget to commit) + -------------- + M b + a + M c + -------------- +