tests/test-merge-commit
author Patrick Mezard <pmezard@gmail.com>
Mon, 14 Apr 2008 22:31:34 +0200
changeset 6543 a6e2e60b34d0
parent 4365 46280c004f22
child 8167 6c82beaaa11a
permissions -rwxr-xr-x
convert: handle past or foreign partial svn copies Subversion allows revisions to be composed of subparts coming from revisions before the parent or from other part of the repository. There is no simple representation for these now, keep the changes but do not track their origins.

#!/bin/sh
# check that renames are correctly saved by a commit after a merge

# test with the merge on 3 having the rename on the local parent
hg init a
cd a

echo line1 > foo
hg add foo
hg ci -m '0: add foo' -d '0 0'

echo line2 >> foo
hg ci -m '1: change foo' -d '0 0'

hg up -C 0
hg mv foo bar
rm bar
echo line0 > bar
echo line1 >> bar
hg ci -m '2: mv foo bar; change bar' -d '0 0'

hg merge 1
echo '% contents of bar should be line0 line1 line2'
cat bar
hg ci -m '3: merge with local rename' -d '0 0'
hg debugindex .hg/store/data/bar.i
hg debugrename bar
hg debugindex .hg/store/data/foo.i

# revert the content change from rev 2
hg up -C 2
rm bar
echo line1 > bar
hg ci -m '4: revert content change from rev 2' -d '0 0'

hg log --template '#rev#:#node|short# #parents#\n'
echo '% this should use bar@rev2 as the ancestor'
hg --debug merge 3
echo '% contents of bar should be line1 line2'
cat bar
hg ci -m '5: merge' -d '0 0'
hg debugindex .hg/store/data/bar.i


# same thing, but with the merge on 3 having the rename on the remote parent
echo
echo
cd ..
hg clone -U -r 1 -r 2 a b
cd b

hg up -C 1
hg merge 2
echo '% contents of bar should be line0 line1 line2'
cat bar
hg ci -m '3: merge with remote rename' -d '0 0'
hg debugindex .hg/store/data/bar.i
hg debugrename bar
hg debugindex .hg/store/data/foo.i

# revert the content change from rev 2
hg up -C 2
rm bar
echo line1 > bar
hg ci -m '4: revert content change from rev 2' -d '0 0'

hg log --template '#rev#:#node|short# #parents#\n'
echo '% this should use bar@rev2 as the ancestor'
hg --debug merge 3
echo '% contents of bar should be line1 line2'
cat bar
hg ci -m '5: merge' -d '0 0'
hg debugindex .hg/store/data/bar.i