view tests/test-convert-cvs-branch @ 9412:3a78bbc57660

color: do all setup in uisetup Now that extensions are loaded in phases, we are guaranteed to always find mq in uisetup with extensions.find and we know that the mq commands are not yet copied into commands.table.
author Martin Geisler <mg@lazybytes.net>
date Sat, 29 Aug 2009 00:30:03 +0200
parents 4743d1a65dfe
children 56a5f80556f5
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=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
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 ..