Mercurial > hg
view tests/test-rebase-mq @ 10128:ea7c392f2b08
patch: drop eol normalization fast-path for 'lf' and 'crlf'
With eolmode set to 'lf' or 'crlf' we avoided the hunk duplication and
normalization by reading the input patch in text mode. Dropping this
optimization simplifies code expectations for a small overhead.
The change in test-mq-eol comes from a tolerance to CRLF instead of LF for last
lines without newlines being broken by this revision. This tolerance was only
partially supported and will be added again in a better way.
author | Patrick Mezard <pmezard@gmail.com> |
---|---|
date | Wed, 23 Dec 2009 19:31:48 +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