tests/test-rebase-rename
author Augie Fackler <durin42@gmail.com>
Thu, 11 Feb 2010 16:37:43 -0600
changeset 10418 5fc090ba08a6
parent 7954 b969611064ae
child 11198 b345b1cc124f
permissions -rwxr-xr-x
localrepo: add optional validation (defaults to off) for incoming changes This verifies that all manifests are present for incoming changes, and all files for those manifests are also present. This is a simple first-pass, and could be better, but seems like a valuable thing to have, as I've seen pushes in the past that propagated revlog corruption.

#!/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'