Mercurial > hg
view tests/test-convert-cvs-branch @ 8810:ac92775b3b80
Add patch.eol to ignore EOLs when patching (issue1019)
The intent is to fix many issues involving patching when win32ext is enabled.
With win32ext, the working directory and repository files EOLs are not the same
which means that patches made on a non-win32ext host do not apply cleanly
because of EOLs discrepancies. A theorically correct approach would be
transform either the patched file or the patch content with the
encoding/decoding filters used by win32ext. This solution is tricky to
implement and invasive, instead we prefer to address the win32ext case, by
offering a way to ignore input EOLs when patching and rewriting them when
saving the patched result.
author | Patrick Mezard <pmezard@gmail.com> |
---|---|
date | Mon, 15 Jun 2009 00:03:26 +0200 |
parents | 6019e6517f95 |
children | 1de6e7e1bb9f |
line wrap: on
line source
#!/bin/sh # This is http://www.selenic.com/mercurial/bts/issue1148 # and http://www.selenic.com/mercurial/bts/issue1447 "$TESTDIR/hghave" cvs || exit 80 cvscall() { cvs -f "$@" } echo "[extensions]" >> $HGRCPATH echo "convert = " >> $HGRCPATH echo "graphlog = " >> $HGRCPATH echo "[convert]" >> $HGRCPATH echo "cvsps=builtin" >> $HGRCPATH echo "cvsps.cache=0" >> $HGRCPATH echo % create cvs repository mkdir cvsrepo cd cvsrepo CVSROOT=`pwd` export CVSROOT CVS_OPTIONS=-f export CVS_OPTIONS cd .. cvscall -q -d "$CVSROOT" init echo % Create a new project mkdir src cd src echo "1" > a echo "1" > b cvscall import -m "init" src v0 r0 | sort cd .. cvscall co src cd src echo % Branch the project cvscall tag -b BRANCH cvscall up -r BRANCH > /dev/null echo % Modify file a, then b, then a echo "2" > a cvscall ci -m "mod a" | grep '<--' | sed -e 's:.*src/\(.*\),v.*:checking in src/\1,v:g' echo "2" > b cvscall ci -m "mod b" | grep '<--' | sed -e 's:.*src/\(.*\),v.*:checking in src/\1,v:g' echo "3" > a cvscall ci -m "mod a again" | grep '<--' | sed -e 's:.*src/\(.*\),v.*:checking in src/\1,v:g' echo % Convert cd .. hg convert src | sed -e 's/connecting to.*cvsrepo/connecting to cvsrepo/g' echo % Check the result hg -R src-hg glog --template '{rev} ({branches}) {desc} files: {files}\n' echo "" echo % issue 1447 cvscall() { echo cvs -f "$@" cvs -f "$@" sleep 1 } cvsci() { echo cvs -f ci "$@" cvs -f ci "$@" >/dev/null 2>&1 sleep 1 } cvscall -Q -d `pwd`/cvsmaster2 init >/dev/null 2>&1 cd cvsmaster2 export CVSROOT=`pwd` mkdir foo cd .. cvscall -Q co -d cvswork2 foo cd cvswork2 echo foo > a.txt echo bar > b.txt cvscall -Q add a.txt b.txt cvsci -m "Initial commit" echo foo > b.txt cvsci -m "Fix b on HEAD" echo bar > a.txt cvsci -m "Small fix in a on HEAD" cvscall -Q tag -b BRANCH cvscall -Q up -P -rBRANCH echo baz > b.txt cvsci -m "Change on BRANCH in b" hg debugcvsps -x --parents foo | sed -e 's/Author:.*/Author:/' -e 's/Date:.*/Date:/' cd ..