view tests/test-rebase-mq @ 10274:04207f5e7344 stable

mq: Do not translate import message that are appended to commits. We should not translate the "imported patch" message. The translated message confuses the detection whether the user has not updated the commit message yet. We try to avoid to translate generated commit messages.
author David Soria Parra <dsp@php.net>
date Wed, 20 Jan 2010 23:23:18 +0100
parents 8766fee6f225
children 8cb81d75730c
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/^\(diff -r \)\([a-f0-9]* \)/\1x /" \
        -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' -m "C1"

echo 'r1' > f
hg commit -d '2 0' -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

echo
echo '% Adding one git-style patch and one normal'
hg qpop -a
rm -fr .hg/patches
hg qinit -c

hg up 0
hg qnew --git f_git.patch
echo 'mq1' > p
hg add p
hg qref --git -m 'P0 (git)'

hg qnew f.patch
echo 'mq2' > p
hg qref -m 'P1'

echo '% Git patch'
cat .hg/patches/f_git.patch  | filterpatch

echo
echo '% Normal patch'
cat .hg/patches/f.patch | filterpatch

echo
echo '% Rebase the applied mq patches'
hg rebase -s 2 -d 1 --quiet 2>&1 | sed -e 's/\(saving bundle to \).*/\1/'

echo '% And the patches are correct'
echo '% Git patch'
cat .hg/patches/f_git.patch  | filterpatch

echo
echo '% Normal patch'
cat .hg/patches/f.patch | filterpatch