tests/test-merge-commit
author Alexis S. L. Carvalho <alexis@cecm.usp.br>
Sat, 10 Mar 2007 23:00:45 -0300
changeset 4185 51ee2868a571
parent 4058 e7282dede8cd
child 4365 46280c004f22
permissions -rwxr-xr-x
util._matcher: update comments This should match the code better. Except for bugs...

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

HGMERGE=merge
export HGMERGE

# 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