view tests/test-rebase-rename @ 9815:49efeed49c94

rebase: make sure the newancestor is used during the whole update (issue1561) Before this change, newancestor was used only once as a replacement for ancestor.ancestor, but merge.update calls ancestor.ancestor several times, so it ends up with the "wrong" ancestor (the real ancestor, but we want the parent of the rebased changeset for all but the first rebased changeset). Added a new test case for this: test-rebase-newancestor. Also, in one scenario in test-rebase-collapse, there was a spurious conflict caused by the same issue, so that test case was fixed by removing the now unneeded conflict resolution and the output was adapted accordingly.
author Christian Boos <cboos@bct-technology.com>
date Mon, 09 Nov 2009 20:15:49 +0100
parents b969611064ae
children b345b1cc124f
line wrap: on
line source

#!/bin/sh

echo "[extensions]" >> $HGRCPATH
echo "rebase=" >> $HGRCPATH
echo "[diff]" >> $HGRCPATH
echo "git=1" >> $HGRCPATH

BASE=`pwd`

cleanoutput () {
    sed -e 's/\(Rebase status stored to\).*/\1/'  \
        -e 's/\(Rebase status restored from\).*/\1/' \
        -e 's/\(saving bundle to \).*/\1/'
}

hg init repo1
cd repo1
echo "a">a
hg commit -Am "A" --date '0 0'
echo "b"> b
hg commit -Am "B" --date '1 0'
hg up -C 0
hg mv a a-renamed
hg commit -m 'rename A' --date '2 0'

echo
echo '% Rename is tracked'
hg log -p -r tip --template '{rev}:{desc}\n'

echo '% Rebase the revision containing the rename'
hg rebase -s 2 -d 1 --quiet 2>&1 | cleanoutput

echo
echo '% Rename is not lost'
hg log -p -r tip --template '{rev}:{desc}\n'

cd $BASE
rm -rf repo1
hg init repo1
cd repo1
echo "a">a
hg commit -Am "A" --date '0 0'
echo "b"> b
hg commit -Am "B" --date '1 0'
hg up -C 0
hg cp a a-copied
hg commit -m 'copy A' --date '2 0'

echo
echo '% Copy is tracked'
hg log -p -r tip --template '{rev}:{desc}\n'

echo '% Rebase the revision containing the copy'
hg rebase -s 2 -d 1 --quiet 2>&1 | cleanoutput

echo
echo '% Copy is not lost'
hg log -p -r tip --template '{rev}:{desc}\n'