view tests/test-rebase-mq @ 7069:852f39691a0a

Eliminate normpath from foldmap calls. Normcase already takes care of upper/lower case and /->\ conversions. What's left for normpath is folding of a/../a sequences but this should be either done consistently on both non-folding and folding code path or not at all, otherwise we are introducing inconsistent behavior between the two that has nothing to do with case folding. Second argument against it - normpath being pure Python function is very slow - as much as 50% of time is spend just inside normpath call on my repository.
author Petr Kodl <petrkodl@gmail.com>
date Tue, 30 Sep 2008 17:23:08 -0400
parents 02f4a0bcfdce
children c3d4ff03ec72
line wrap: on
line source

#!/bin/sh

echo "[extensions]" >> $HGRCPATH
echo "graphlog=" >> $HGRCPATH
echo "rebase=" >> $HGRCPATH
echo "mq=" >> $HGRCPATH

filterpatch()
{
    sed -e "s/^\(# Date\).*/\1/" \
        -e "s/^\(# Node ID\).*/\1/" \
        -e "s/^\(# Parent\).*/\1/" \
        -e "s/^\(diff -r \)\([a-f0-9]* \)\(-r \)\([a-f0-9]* \)/\1x \3y /" \
        -e "s/\(--- [a-zA-Z0-9_/.-]*\).*/\1/" \
        -e "s/\(+++ [a-zA-Z0-9_/.-]*\).*/\1/"
}

hg init a
cd a
hg qinit -c # This must work even with a managed mq queue

echo 'c1' > f
hg add f
hg commit -d '0 0' -u test -m "C1"

echo 'r1' > f
hg commit -d '2 0' -u test -m "R1"

hg up 0
hg qnew f.patch
echo 'mq1' > f
hg qref -m 'P0'

hg qnew f2.patch
echo 'mq2' > f
hg qref -m 'P1'
hg glog  --template '{rev} {desc} tags: {tags}\n'

echo
echo '% Rebase - try to rebase on an applied mq patch'
hg rebase -s 1 -d 3

echo
echo '% Rebase - generate a conflict'
hg rebase -s 2 -d 1

echo
echo '% Fix the 1st conflict'
echo 'mq1r1' > f
hg resolve -m f
hg rebase -c 2>&1 | sed -e 's/\(saving bundle to \).*/\1/'

echo
echo '% Fix the 2nd conflict'
echo 'mq1r1mq2' > f
hg resolve -m f
hg rebase -c 2>&1 | sed -e 's/\(saving bundle to \).*/\1/'

hg glog  --template '{rev} {desc} tags: {tags}\n'

echo
echo '% Update to qbase'
hg up qbase
echo '% f correctly reflects the merge result'
cat f
echo '% And the patch is correct'
cat .hg/patches/f.patch | filterpatch

echo
echo '% Update to qtip'
hg up qtip
echo '% f correctly reflects the merge result'
cat f
echo '% And the patch is correct'
cat .hg/patches/f2.patch | filterpatch