Mercurial > hg-stable
view tests/test-convert-cvs-branch @ 10189:e451e599fbcf
patch: support diff data loss detection and upgrade
In worst case, generating diff in upgrade mode can be two times more expensive
than generating it in git mode directly: we may have to regenerate the whole
diff again whenever a git feature is detected. Also, the first diff attempt is
completely buffered instead of being streamed. That said, even without having
profiled it yet, I am convinced we can fast-path the upgrade mode if necessary
were it to be used in regular diff commands, and not only in mq where avoiding
data loss is worth the price.
author | Patrick Mezard <pmezard@gmail.com> |
---|---|
date | Fri, 01 Jan 2010 20:54:05 +0100 |
parents | 56a5f80556f5 |
children |
line wrap: on
line source
#!/bin/sh # This is http://mercurial.selenic.com/bts/issue1148 # and http://mercurial.selenic.com/bts/issue1447 "$TESTDIR/hghave" cvs || exit 80 cvscall() { cvs -f "$@" } echo "[extensions]" >> $HGRCPATH echo "convert = " >> $HGRCPATH echo "graphlog = " >> $HGRCPATH echo "[convert]" >> $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 CVSROOT=`pwd` export CVSROOT 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 ..