#! /bin/sh
:
usage ()
{
echo "Usage: `basename $0` --help"
echo "Usage: `basename $0` [-eklr] [-f FROM-TEST] [-h HOSTNAME] CVS-TO-TEST [TESTS-TO-RUN...]"
}
exit_usage ()
{
usage 1>&2
exit 2
}
exit_help ()
{
usage
echo
echo "-H|--help display this text"
echo "-e|--skipfail Treat tests that would otherwise be nonfatally skipped"
echo " for reasons like missing tools as failures, exiting"
echo " with an error message. Also treat warnings as"
echo " failures."
echo "-f FROM-TEST run TESTS-TO-RUN, skipping all tests in the list before"
echo " FROM-TEST"
echo "-h HOSTNAME Use :ext:HOSTNAME to run remote tests rather than"
echo " :fork:. Implies --remote and assumes that \$TESTDIR"
echo " resolves to the same directory on both the client and"
echo " the server."
echo "-k|--keep try to keep directories created by individual tests"
echo " around, exiting after the first test which supports"
echo " --keep"
echo "-l|--link-root"
echo " test CVS using a symlink to a real CVSROOT"
echo "-r|--remote test remote instead of local cvs"
echo
echo "CVS-TO-TEST the path to the CVS executable to be tested"
echo "TESTS-TO-RUN the names of the tests to run (defaults to all tests)"
exit 2
}
unset CVSREAD
LANG=C
export LANG
LC_ALL=C
export LC_ALL
passed=0
skipped=0
warnings=0
unset fromtest
unset remotehost
keep=false
linkroot=false
remote=false
skipfail=false
while getopts ef:h:Hklr-: option ; do
if test x$option = x-; then
case "$OPTARG" in
[hH]|[hH][eE]|[hH][eE][lL]|[hH][eE][lL][pP])
option=H;
OPTARG=
;;
[kK]|[kK][eE]|[kK][eE][eE]|[kK][eE][eE][pP])
option=k;
OPTARG=
;;
l|li|lin|link|link-|link-r]|link-ro|link-roo|link-root)
option=l;
OPTARG=
;;
[rR]|[rR][eE]|[rR][eE][mM]|[rR][eE][mM][oO]|[rR][eE][mM][oO][tT]|[rR][eE][mM][oO][tT][eE])
option=k;
OPTARG=
;;
s|sk|ski|skip|skipf|skipfa|skipfai|skipfail)
option=e
OPTARG=
;;
*)
option=\?
OPTARG=
esac
fi
case "$option" in
e)
skipfail=:
;;
f)
fromtest="$OPTARG"
;;
h)
remotehost="$OPTARG"
remote=:
;;
H)
exit_help
;;
k)
keep=:
;;
l)
linkroot=:
;;
r)
remote=:
;;
\?)
exit_usage
;;
esac
done
while test $OPTIND -gt 1 ; do
shift
OPTIND=`expr $OPTIND - 1`
done
case $1 in
"")
exit_usage
;;
/*)
testcvs=$1
;;
*)
testcvs=`pwd`/$1
;;
esac
shift
if test -n "$remotehost" && test -z "$TESTDIR"; then
echo "WARNING: CVS server hostname is set and \$TESTDIR is not. If" >&2
echo "$remotehost is not the local machine, then it is unlikely that" >&2
echo "the default value assigned to \$TESTDIR will resolve to the same" >&2
echo "directory on both this client and the CVS server." >&2
fi
echo 'This test should produce no other output than this message, and a final "OK".'
echo '(Note that the test can take an hour or more to run and periodically stops'
echo 'for as long as one minute. Do not assume there is a problem just because'
echo 'nothing seems to happen for a long time. If you cannot live without'
echo "running status, try the command: \`tail -f check.log' from another window.)"
PROG=`basename ${testcvs}`
username="[-a-zA-Z0-9][-a-zA-Z0-9]*"
author="[-a-zA-Z0-9][-a-zA-Z0-9]*"
hostname="[-_.a-zA-Z0-9]*"
tempname="[-a-zA-Z0-9/.%_]*"
RFCDATE="[a-zA-Z0-9 ][a-zA-Z0-9 ]* [0-9:][0-9:]* -0000"
RFCDATE_EPOCH="1 Jan 1970 00:00:00 -0000"
DATE="[a-zA-Z]* [a-zA-Z]* [ 1-3][0-9] [0-9:]* [0-9]*"
SEARCHPATH=$PATH:/usr/local/bin:/usr/contrib/bin:/usr/contrib:/usr/gnu/bin:/local/bin:/local/gnu/bin:/gnu/bin:/sw/bin:/usr/pkg/bin
Which() {
notevery=:
if [ "x$1" = "x-a" ]; then notevery=false; shift; fi
case "$1" in
-*) t=$1; shift ;;
*) t=-x ;;
esac
case "$1" in
/*) test $t $1 && echo $1 ;;
*) for d in `IFS=:; echo ${2-$SEARCHPATH}`
do
test $t $d/$1 && { echo $d/$1; if $notevery; then break; fi; }
done
;;
esac
}
if test -r /bin/sh; then
TESTSHELL="/bin/sh"
else
TESTSHELL=`Which -f sh`
if test ! -r "$TESTSHELL"; then
TESTSHELL="/bin/sh"
fi
fi
CVS="${testcvs} -Q"
LOGFILE=`pwd`/check.log
if test -f check.log; then
mv check.log check.plog
fi
touch check.log
[ -n "$DISPLAY" ] && unset DISPLAY
: ${CVS_RSH=rsh}; export CVS_RSH
if test -n "$remotehost"; then
tmp=`$CVS_RSH $remotehost 'cd /tmp; /bin/pwd || pwd' 2>/dev/null`
if test $? != 0; then
echo "$CVS_RSH $remotehost failed." >&2
exit 1
fi
else
tmp=`(cd /tmp; /bin/pwd || pwd) 2>/dev/null`
fi
: ${TESTDIR=$tmp/cvs-sanity}
if test -d ${TESTDIR}; then
chmod -R a+wx ${TESTDIR}
rm -rf ${TESTDIR}
fi
mkdir ${TESTDIR} || exit 1
cd ${TESTDIR} || exit 1
if echo "${TESTDIR}" |grep '^[^/]'; then
TESTDIR=`(/bin/pwd || pwd) 2>/dev/null`
fi
if test -z "${TESTDIR}" || echo "${TESTDIR}" |grep '^[^/]'; then
echo "Unable to resolve TESTDIR to an absolute directory." >&2
exit 1
fi
cd ${TESTDIR}
: ${TMPDIR=$TESTDIR/tmp}
export TMPDIR
if test -d $TMPDIR; then :; else
mkdir $TMPDIR
fi
: ${AWK=awk}
: ${EXPR=expr}
: ${ID=id}
: ${TR=tr}
badtools=
set_bad_tool ()
{
badtools=$badtools:$1
}
is_bad_tool ()
{
case ":$badtools:" in *:$1:*) return 0 ;; *) return 1 ; esac
}
version_test ()
{
vercmd=$1
verbad=:
if RES=`$vercmd --version </dev/null 2>&1`; then
if test "X$RES" != "X--version" && test "X$RES" != "X" ; then
echo "$RES"
verbad=false
fi
fi
if $verbad; then
echo "The command \`$vercmd' does not support the --version option."
fi
return 0
}
find_tool ()
{
default_TOOL=$1
echo find_tool: ${1+"$@"} >>$LOGFILE
cmds="`IFS=:; echo $1`"; shift; tooltests="${1+$@}"
if test -z "$tooltests"; then tooltests=version_test; fi
clist=; for cmd in $cmds; do clist="$clist `Which -a $cmd`"; done
for default_TOOL in $clist `IFS=:; echo $default_TOOL`; do break; done
TOOL=""
for trytool in $clist ; do
pass=:
for tooltest in $tooltests; do
result=`eval $tooltest $trytool`
rc=$?
echo "Running $tooltest $trytool" >>$LOGFILE
if test -n "$result"; then
echo "$result" >>$LOGFILE
fi
if test "$rc" = "0"; then
echo "PASS: $tooltest $trytool" >>$LOGFILE
elif test "$rc" = "77"; then
echo "MARGINAL: $tooltest $trytool; rc=$rc" >>$LOGFILE
TOOL=$trytool
pass=false
else
set_bad_tool $trytool
echo "FAIL: $tooltest $trytool; rc=$rc" >>$LOGFILE
pass=false
fi
done
if $pass; then
echo $trytool
return 0
fi
done
if test -n "$TOOL"; then
echo "Notice: The default version of \`$default_TOOL' is defective." >>$LOGFILE
echo "using \`$TOOL' and hoping for the best." >>$LOGFILE
echo "Notice: The default version of \`$default_TOOL' is defective." >&2
echo "using \`$TOOL' and hoping for the best." >&2
echo $TOOL
else
echo $default_TOOL
fi
}
id_tool_test ()
{
id=$1
if $id -u >/dev/null 2>&1 && $id -un >/dev/null 2>&1; then
return 0
else
echo "Running these tests requires an \`id' program that understands the"
echo "-u and -n flags. Make sure that such an id (GNU, or many but not"
echo "all vendor-supplied versions) is in your path."
return 1
fi
}
ID=`find_tool id version_test id_tool_test`
echo "Using ID=$ID" >>$LOGFILE
for pass in false :; do
case "`$ID -u 2>/dev/null`" in
"0")
echo "Test suite does not work correctly when run as root" >&2
exit 1
;;
*)
break
;;
esac
done
expr_tooltest1 ()
{
expr=$1
if $expr 'abc
def' : 'abc
def' >/dev/null; then
return 0
else
echo 'Running these tests requires an "expr" program that can handle'
echo 'multi-line patterns. Make sure that such an expr (GNU, or many but'
echo 'not all vendor-supplied versions) is in your path.'
return 1
fi
}
expr_tooltest2 ()
{
expr=$1
if $expr 'a
b' : 'a
c' >/dev/null; then
echo 'Warning: you are using a version of expr that does not correctly'
echo 'match multi-line patterns. Some tests may spuriously pass or fail.'
echo 'You may wish to make sure GNU expr is in your path.'
return 1
else
return 0
fi
}
expr_create_bar ()
{
echo 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ' >${TESTDIR}/foo
cat ${TESTDIR}/foo ${TESTDIR}/foo ${TESTDIR}/foo ${TESTDIR}/foo >${TESTDIR}/bar
cat ${TESTDIR}/bar ${TESTDIR}/bar ${TESTDIR}/bar ${TESTDIR}/bar >${TESTDIR}/foo
cat ${TESTDIR}/foo ${TESTDIR}/foo ${TESTDIR}/foo ${TESTDIR}/foo >${TESTDIR}/bar
rm -f ${TESTDIR}/foo
}
expr_tooltest3 ()
{
expr=$1
test ! -f ${TESTDIR}/bar && expr_create_bar
if $expr "`cat ${TESTDIR}/bar`" : "`cat ${TESTDIR}/bar`" >/dev/null; then
: good, it works
else
echo 'Warning: you are using a version of expr that does not correctly'
echo 'match large patterns. Some tests may spuriously pass or fail.'
echo 'You may wish to make sure GNU expr is in your path.'
return 1
fi
if $expr "`cat ${TESTDIR}/bar`x" : "`cat ${TESTDIR}/bar`y" >/dev/null; then
echo 'Warning: you are using a version of expr that does not correctly'
echo 'match large patterns. Some tests may spuriously pass or fail.'
echo 'You may wish to make sure GNU expr is in your path.'
return 1
fi
return 0
}
ENDANCHOR="$"
expr_set_ENDANCHOR ()
{
expr=$1
ENDANCHOR="$"
if $expr 'abc
def' : 'abc$' >/dev/null; then
ENDANCHOR='\'\'
echo "Notice: An ENDANCHOR of dollar does not work."
echo "Using a workaround for GNU expr versions 1.9.4 thru 1.12"
fi
return 0
}
DOTSTAR='.*'
expr_set_DOTSTAR ()
{
expr=$1
DOTSTAR='.*'
if $expr 'abc
def' : "a${DOTSTAR}f" >/dev/null; then
: good, it works
else
DOTSTAR='\(.\|
\)*'
echo "Notice: DOTSTAR changed from sane \`.*' value to \`$DOTSTAR\`"
echo "to workaround GNU expr version 1.10 thru 1.12 bug where \`.'"
echo "does not match a newline."
fi
return 0
}
expr_tooltest_DOTSTAR ()
{
expr=$1
test ! -f ${TESTDIR}/bar && expr_create_bar
if $expr "`cat ${TESTDIR}/bar`" : "${DOTSTAR}xyzABC${DOTSTAR}$" >/dev/null; then
return 0
else
echo 'Warning: you are using a version of expr that does not correctly'
echo 'match large patterns. Some tests may spuriously pass or fail.'
echo 'You may wish to make sure GNU expr is in your path.'
return 77
fi
}
EXPR=`find_tool ${EXPR}:gexpr \
version_test expr_tooltest1 expr_tooltest2 expr_tooltest3 \
expr_set_ENDANCHOR expr_set_DOTSTAR expr_tooltest_DOTSTAR`
expr_set_ENDANCHOR ${EXPR} >/dev/null
expr_tooltest_DOTSTAR ${EXPR} >/dev/null
echo "Using EXPR=$EXPR" >>$LOGFILE
echo "Using ENDANCHOR=$ENDANCHOR" >>$LOGFILE
echo "Using DOTSTAR=$DOTSTAR" >>$LOGFILE
rm -f ${TESTDIR}/bar
PLUS='+'
if $EXPR 'a +b' : "a ${PLUS}b" >/dev/null; then
: good, it works
else
PLUS='\+'
fi
QUESTION='?'
if $EXPR 'a?b' : "a${QUESTION}b" >/dev/null; then
: good, it works
else
QUESTION='\?'
fi
username=`$ID -un`
if $EXPR "${username}" : "${username}" >/dev/null; then
: good, it works
else
echo "Test suite does not work correctly when run by a username" >&2
echo "containing regular expression meta-characters." >&2
exit 1
fi
tr_tooltest1 ()
{
tr=$1
if $EXPR `echo "123" | $tr '2' '\0'` : "123" >/dev/null 2>&1; then
echo 'Warning: you are using a version of tr which does not correctly'
echo 'handle NUL bytes. Some tests may spuriously pass or fail.'
echo 'You may wish to make sure GNU tr is in your path.'
return 77
fi
return 0
}
TR=`find_tool ${TR}:gtr version_test tr_tooltest1`
echo "Using TR=$TR" >>$LOGFILE
awk_tooltest1 ()
{
awk=$1
$awk 'BEGIN {printf("one\ntwo\nthree\nfour\nfive\nsix")}' </dev/null >abc
if $EXPR "`cat abc`" : \
'one
two
three
four
five
six'; then
rm abc
return 0
else
rm abc
echo "Notice: awk BEGIN clause or printf is not be working properly."
return 1
fi
}
awk_tooltest2 ()
{
awk=$1
$awk 'BEGIN { printf "%c%c%c", 2, 3, 4 }' </dev/null \
| ${TR} '\002\003\004' '123' >abc
if $EXPR "`cat abc`" : "123" ; then
: good, found it
else
echo "Notice: awk format %c string may not be working properly."
rm abc
return 77
fi
rm abc
return 0
}
AWK=`find_tool gawk:nawk:awk version_test awk_tooltest1 awk_tooltest2`
echo "Using AWK=$AWK" >>$LOGFILE
depends_on_rsh ()
{
host=${remotehost-"`hostname`"}
result=`$1 $host 'echo test'`
rc=$?
if test $? != 0 || test "x$result" != "xtest"; then
skipreason="\`$1 $host' failed rc=$rc result=$result"
return 77
fi
save_CVS_RSH=$CVS_RSH
CVS_RSH=$1; export CVS_RSH
return 0
}
depends_on_ssh ()
{
case "$CVS_RSH" in
*ssh*|*putty*)
tryssh=`Which $CVS_RSH`
if [ ! -n "$tryssh" ]; then
skipreason="Unable to find CVS_RSH=$CVS_RSH executable"
return 77
elif [ ! -x "$tryssh" ]; then
skipreason="Unable to execute $tryssh program"
return 77
fi
;;
*)
tryssh=`Which ssh`
if test ! -r "$tryssh"; then
skipreason="Unable to find ssh program"
return 77
fi
;;
esac
depends_on_rsh "$tryssh"
return $?
}
pass ()
{
echo "PASS: $1" >>${LOGFILE}
passed=`expr $passed + 1`
}
skip ()
{
if $skipfail; then
fail "$1${2+ ($2)}"
else
echo "SKIP: $1${2+ ($2)}" >>$LOGFILE
fi
skipped=`expr $skipped + 1`
}
warn ()
{
if $skipfail; then
fail "$1${2+ ($2)}"
else
echo "WARNING: $1${2+ ($2)}" >>$LOGFILE
fi
warnings=`expr $warnings + 1`
}
fail ()
{
echo "FAIL: $1" | tee -a ${LOGFILE}
echo "*** Please see the \`TESTS' and \`check.log' files for more information." >&2
exit 1
}
verify_tmp_empty ()
{
if $remote && ls $TMPDIR/cvs-serv* >/dev/null 2>&1; then
sleep 1
if ls $TMPDIR/cvs-serv* >/dev/null 2>&1; then
warn "$1" "Found cvs-serv* directories in $TMPDIR."
rm -rf $TMPDIR/cvs-serv*
fi
fi
if ls $TMPDIR/cvs?????? >/dev/null 2>&1; then
warn "$1" "Found cvsXXXXXX temp files in $TMPDIR."
rm -f ls $TMPDIR/cvs??????
fi
}
dotest_internal ()
{
if $EXPR "`cat ${TESTDIR}/dotest.tmp`" : "$3${ENDANCHOR}" >/dev/null; then
cat ${TESTDIR}/dotest.tmp >>${LOGFILE}
pass "$1"
verify_tmp_empty "$1"
elif test -z "$3" && test ! -s ${TESTDIR}/dotest.tmp; then
pass "$1"
verify_tmp_empty "$1"
elif test x"$4" != x; then
if $EXPR "`cat ${TESTDIR}/dotest.tmp`" : "$4${ENDANCHOR}" >/dev/null; then
cat ${TESTDIR}/dotest.tmp >>${LOGFILE}
pass "$1"
verify_tmp_empty "$1"
else
echo "** expected: " >>${LOGFILE}
echo "$3" >>${LOGFILE}
echo "$3" > ${TESTDIR}/dotest.ex1
echo "** or: " >>${LOGFILE}
echo "$4" >>${LOGFILE}
echo "$4" > ${TESTDIR}/dotest.ex2
echo "** got: " >>${LOGFILE}
cat ${TESTDIR}/dotest.tmp >>${LOGFILE}
fail "$1"
fi
else
echo "** expected: " >>${LOGFILE}
echo "$3" >>${LOGFILE}
echo "$3" > ${TESTDIR}/dotest.exp
echo "** got: " >>${LOGFILE}
cat ${TESTDIR}/dotest.tmp >>${LOGFILE}
fail "$1"
fi
}
dotest_all_in_one ()
{
if $EXPR "`cat ${TESTDIR}/dotest.tmp`" : \
"`cat ${TESTDIR}/dotest.exp`" >/dev/null; then
return 0
fi
return 1
}
dotest_line_by_line ()
{
line=1
while [ $line -le `wc -l <${TESTDIR}/dotest.tmp` ] ; do
if $EXPR "`sed -n ${line}p ${TESTDIR}/dotest.tmp`" : \
"`sed -n ${line}p ${TESTDIR}/dotest.exp`" >/dev/null; then
:
elif test -z "`sed -n ${line}p ${TESTDIR}/dotest.tmp`" &&
test -z "`sed -n ${line}p ${TESTDIR}/dotest.exp`"; then
:
else
echo "Line $line:" >> ${LOGFILE}
echo "**** expected: " >>${LOGFILE}
sed -n ${line}p ${TESTDIR}/dotest.exp >>${LOGFILE}
echo "**** got: " >>${LOGFILE}
sed -n ${line}p ${TESTDIR}/dotest.tmp >>${LOGFILE}
unset line
return 1
fi
line=`expr $line + 1`
done
unset line
return 0
}
dotest_internal_debug ()
{
if test -z "$3"; then
if test -s ${TESTDIR}/dotest.tmp; then
echo "** expected: " >>${LOGFILE}
echo "$3" >>${LOGFILE}
echo "$3" > ${TESTDIR}/dotest.exp
rm -f ${TESTDIR}/dotest.ex2
echo "** got: " >>${LOGFILE}
cat ${TESTDIR}/dotest.tmp >>${LOGFILE}
fail "$1"
else
pass "$1"
verify_tmp_empty "$1"
fi
else
echo "$3" > ${TESTDIR}/dotest.exp
if dotest_line_by_line "$1" "$2"; then
pass "$1"
verify_tmp_empty "$1"
else
if test x"$4" != x; then
mv ${TESTDIR}/dotest.exp ${TESTDIR}/dotest.ex1
echo "$4" > ${TESTDIR}/dotest.exp
if dotest_line_by_line "$1" "$2"; then
pass "$1"
verify_tmp_empty "$1"
else
mv ${TESTDIR}/dotest.exp ${TESTDIR}/dotest.ex2
echo "** expected: " >>${LOGFILE}
echo "$3" >>${LOGFILE}
echo "** or: " >>${LOGFILE}
echo "$4" >>${LOGFILE}
echo "** got: " >>${LOGFILE}
cat ${TESTDIR}/dotest.tmp >>${LOGFILE}
fail "$1"
fi
else
echo "** expected: " >>${LOGFILE}
echo "$3" >>${LOGFILE}
echo "** got: " >>${LOGFILE}
cat ${TESTDIR}/dotest.tmp >>${LOGFILE}
fail "$1"
fi
fi
fi
}
dotest ()
{
rm -f ${TESTDIR}/dotest.ex? 2>&1
eval "$2" >${TESTDIR}/dotest.tmp 2>&1
status=$?
if test "$status" != 0; then
cat ${TESTDIR}/dotest.tmp >>${LOGFILE}
echo "exit status was $status" >>${LOGFILE}
fail "$1"
fi
dotest_internal "$@"
}
dotest_lit ()
{
rm -f ${TESTDIR}/dotest.ex? 2>&1
eval "$2" >${TESTDIR}/dotest.tmp 2>&1
status=$?
if test "$status" != 0; then
cat ${TESTDIR}/dotest.tmp >>${LOGFILE}
echo "exit status was $status" >>${LOGFILE}
fail "$1"
fi
cat >${TESTDIR}/dotest.exp
if cmp ${TESTDIR}/dotest.exp ${TESTDIR}/dotest.tmp >/dev/null 2>&1; then
pass "$1"
verify_tmp_empty "$1"
else
echo "** expected: " >>${LOGFILE}
cat ${TESTDIR}/dotest.exp >>${LOGFILE}
echo "** got: " >>${LOGFILE}
cat ${TESTDIR}/dotest.tmp >>${LOGFILE}
fail "$1"
fi
}
dotest_fail ()
{
rm -f ${TESTDIR}/dotest.ex? 2>&1
eval "$2" >${TESTDIR}/dotest.tmp 2>&1
status=$?
if test "$status" = 0; then
cat ${TESTDIR}/dotest.tmp >>${LOGFILE}
echo "exit status was $status" >>${LOGFILE}
fail "$1"
fi
dotest_internal "$@"
}
dotest_sort ()
{
rm -f ${TESTDIR}/dotest.ex? 2>&1
eval "$2" >${TESTDIR}/dotest.tmp1 2>&1
status=$?
if test "$status" != 0; then
cat ${TESTDIR}/dotest.tmp1 >>${LOGFILE}
echo "exit status was $status" >>${LOGFILE}
fail "$1"
fi
${TR} ' ' ' ' < ${TESTDIR}/dotest.tmp1 | sort > ${TESTDIR}/dotest.tmp
dotest_internal "$@"
}
getrlogdate () {
${testcvs} -n rlog -N ${1+"$@"} |
while read token value; do
case "$token" in
date:)
echo $value | sed "s,;.*,,"
break;
;;
esac
done
}
mkdir home
HOME=${TESTDIR}/home; export HOME
RCSINIT=; export RCSINIT
if test x"$*" = x; then
tests="version basica basicb basicc basic1 deep basic2"
tests="${tests} parseroot parseroot2 files spacefiles commit-readonly"
tests="${tests} commit-add-missing"
tests="${tests} status"
tests="${tests} rdiff rdiff-short"
tests="${tests} rdiff2 diff diffnl death death2"
tests="${tests} rm-update-message rmadd rmadd2 rmadd3 resurrection"
tests="${tests} dirs dirs2 branches branches2 tagc tagf tag-space"
tests="${tests} rcslib multibranch import importb importc import-CVS"
tests="$tests import-quirks"
tests="${tests} update-p import-after-initial branch-after-import"
tests="${tests} join join2 join3 join4 join5 join6 join7"
tests="${tests} join-readonly-conflict join-admin join-admin-2"
tests="${tests} join-rm"
tests="${tests} new newb conflicts conflicts2 conflicts3"
tests="${tests} clean"
tests="${tests} modules modules2 modules3 modules4 modules5 modules6"
tests="${tests} modules7 mkmodules co-d"
tests="${tests} cvsadm emptydir abspath abspath2 toplevel toplevel2"
tests="${tests} rstar-toplevel trailingslashes checkout_repository"
tests="${tests} mflag editor errmsg1 errmsg2 adderrmsg opterrmsg"
tests="${tests} devcom devcom2 devcom3 watch4 watch5 watch6"
tests="${tests} unedit-without-baserev"
tests="${tests} ignore ignore-on-branch binfiles binfiles2 binfiles3"
tests="${tests} mcopy binwrap binwrap2"
tests="${tests} binwrap3 mwrap info taginfo config"
tests="${tests} serverpatch log log2 logopt ann ann-id"
tests="${tests} crerepos rcs rcs2 rcs3 lockfiles backuprecover"
tests="${tests} sshstdio"
tests="${tests} history"
tests="${tests} big modes modes2 modes3 stamps"
tests="${tests} sticky keyword keywordlog keywordname keyword2"
tests="${tests} head tagdate multibranch2 tag8k"
tests="${tests} admin reserved"
tests="${tests} diffmerge1 diffmerge2"
tests="${tests} release"
tests="${tests} recase"
tests="${tests} multiroot multiroot2 multiroot3 multiroot4"
tests="${tests} rmroot reposmv pserver server server2 client"
tests="${tests} dottedroot fork commit-d"
else
tests="$*"
fi
if test -n "$fromtest"; then
count=0
for sub in $fromtest; do
count=`expr $count + 1`
done
if test $count != 1; then
echo "No such test \`$fromtest'." >&2
exit 2
fi
case " $tests " in
*" $fromtest "*)
;;
*)
echo "No such test \`$fromtest'." >&2
exit 2
;;
esac
fi
directory_cmp ()
{
OLDPWD=`pwd`
DIR_1=$1
DIR_2=$2
cd $DIR_1
find . -print | fgrep -v /CVS | sort > $TESTDIR/dc$$d1
cd $OLDPWD
cd $DIR_2
find . -print | fgrep -v /CVS | sort > $TESTDIR/dc$$d2
if diff $TESTDIR/dc$$d1 $TESTDIR/dc$$d2 >/dev/null 2>&1
then
:
else
return 1
fi
cd $OLDPWD
while read a
do
if test -f $DIR_1/"$a" ; then
cmp -s $DIR_1/"$a" $DIR_2/"$a"
if test $? -ne 0 ; then
return 1
fi
fi
done < $TESTDIR/dc$$d1
rm -f $TESTDIR/dc$$*
return 0
}
diffmerge_create_older_files() {
cat >testcase01 <<EOF
// Button.java
package random.application;
import random.util.*;
public class Button
{
/* Instantiates a Button with origin (0, 0) and zero width and height.
* You must call an initializer method to properly initialize the Button.
*/
public Button ()
{
super ();
_titleColor = Color.black;
_disabledTitleColor = Color.gray;
_titleFont = Font.defaultFont ();
}
/* Convenience constructor for instantiating a Button with
* bounds x, y, width, and height. Equivalent to
* foo = new Button ();
* foo.init (x, y, width, height);
*/
public Button (int x, int y, int width, int height)
{
this ();
init (x, y, width, height);
}
}
EOF
cat >testcase02 <<EOF
a
a
a
a
a
EOF
cat >testcase03 <<EOF
x
s
a
b
s
y
EOF
cat >testcase04 <<EOF
s
x
m
m
x
s
v
s
x
m
m
x
s
EOF
cat >testcase05 <<EOF
s
x
m
m
x
x
x
x
x
x
x
x
x
x
s
s
s
s
s
s
s
s
s
s
v
EOF
cat >testcase06 <<EOF
g
i
EOF
cat >testcase07 <<EOF
h
f
g
r
i
i
EOF
cat >testcase08 <<EOF
Both changes move this line to the end of the file.
no
changes
here
First change will delete this line.
First change will also delete this line.
no
changes
here
Second change will change it here.
no
changes
here
EOF
cat >testcase09 <<EOF
m
a
{
}
b
{
}
EOF
cat >testcase10 <<EOF
petRpY ( MtatRk );
fV ( MtatRk != Zy ) UDTXUK_DUUZU ( BGKT_ZFDK_qjT_HGTG );
MtatRk = MQfr_GttpfIRte_MtpeaL ( &acI, jfle_Uecopd_KRLIep * jfle_Uecopd_MfJe_fY_nEtek );
OjZy MtatRk = Uead_GttpfIRte_MtpeaL ( &acI, jfle_Uecopd_MfJe_fY_nEtek, nRVVep );
Bloke_GttpfIRte_MtpeaL ( &acI );
MTGTXM Uead_Ktz_qjT_jfle_Uecopd ( fYt Y, uofd *nRVVep )
{
fV ( Y < 16 )
{
petRpY ( Uead_Mectopk ( noot_Uecopd.qVtHatabcY0 * noot_Uecopd.MectopkFepBlRktep +
Y * jfle_Uecopd_MfJe_fY_Mectopk,
jfle_Uecopd_MfJe_fY_Mectopk,
nRVVep ) );
}
elke
{
petRpY ( Uead_Mectopk ( noot_Uecopd.qVtqfppHatabcY0 * noot_Uecopd.MectopkFepBlRktep +
( Y - 16 ) * jfle_Uecopd_MfJe_fY_Mectopk,
jfle_Uecopd_MfJe_fY_Mectopk,
nRVVep ) );
}
}
/****************************************************************************
* *
* Uead Mectopk ( Uelatfue to tze cRppeYt raptftfoY ) *
* *
****************************************************************************/
MTGTXM Uead_Mectopk ( RfYt64 Mtapt_Mectop, RfYt64 KRL_Mectopk, uofd *nRVVep )
{
MTGTXM MtatRk = Zy;
MtatRk = Uead_HfkQ ( FaptftfoY_TaIle.Uelatfue_Mectop + Mtapt_Mectop, KRL_Mectopk, nRVVep );
petRpY ( MtatRk );
}
HfkQipfte ( waYdle, /* waYdle */
waYdleFok, /* ZVVket VpoL ktapt oV dfkQ */
(coYkt RfYt8*) nRVVep, /* nRVVep */
0, /* MRrepVlRoRk KfxoYfkL */
beYgtz /* nEtek to Apfte */
);
petRpY ( Zy );
}
EOF
}
diffmerge_create_your_files() {
cat >testcase01 <<\EOF
// Button.java
package random.application;
import random.util.*;
public class Button
{
/* Instantiates a Button with origin (0, 0) and zero width and height.
* You must call an initializer method to properly initialize the Button.
*/
public Button ()
{
super ();
_titleColor = Color.black;
_disabledTitleColor = Color.gray;
_titleFont = Font.defaultFont ();
}
}
EOF
cat >testcase02 <<\EOF
y
a
a
a
a
EOF
cat >testcase03 <<\EOF
x
s
a
b
s
b
s
y
EOF
cat >testcase04 <<\EOF
s
m
s
v
s
m
s
EOF
cat >testcase05 <<\EOF
v
s
m
s
s
s
s
s
s
s
s
s
s
v
EOF
mv testcase07 tmp
mv testcase06 testcase07
mv tmp testcase06
touch testcase06 testcase07
cat >testcase08 <<\EOF
no
changes
here
First change has now added this in.
no
changes
here
Second change will change it here.
no
changes
here
Both changes move this line to the end of the file.
EOF
cat >testcase09 <<\EOF
m
a
{
}
b
{
}
c
{
}
EOF
cat >testcase10 <<\EOF
fV ( BzQkV_URYYfYg ) (*jfle_Uecopdk)[0].jfle_Uecopd_KRLIep = ZpfgfYal_jUK;
petRpY ( MtatRk );
fV ( MtatRk != Zy ) UDTXUK_DUUZU ( BGKT_ZFDK_qjT_HGTG );
fV ( jfle_Uecopd_KRLIep < 16 )
{
MtatRk = Uead_Ktz_qjT_jfle_Uecopd ( jfle_Uecopd_KRLIep, (uofd*)nRVVep );
}
elke
{
MtatRk = ZreY_GttpfIRte_MtpeaL ( qjT_jfle_Uecopdk, qjT_jfle_Uecopd_BoRYt, HGTG_TvFD, KXbb, KXbb, &acI );
fV ( MtatRk != Zy ) UDTXUK_DUUZU ( BGKT_ZFDK_qjT_HGTG );
MtatRk = MQfr_GttpfIRte_MtpeaL ( &acI, jfle_Uecopd_KRLIep * jfle_Uecopd_MfJe_fY_nEtek );
OjZy MtatRk = Uead_GttpfIRte_MtpeaL ( &acI, jfle_Uecopd_MfJe_fY_nEtek, nRVVep );
Bloke_GttpfIRte_MtpeaL ( &acI );
MTGTXM Uead_Ktz_qjT_jfle_Uecopd ( fYt Y, uofd *nRVVep )
{
MTGTXM MtatRk = Zy;
fV ( Y < 16 )
{
petRpY ( Uead_Mectopk ( noot_Uecopd.qVtHatabcY0 * noot_Uecopd.MectopkFepBlRktep +
Y * jfle_Uecopd_MfJe_fY_Mectopk,
jfle_Uecopd_MfJe_fY_Mectopk,
nRVVep ) );
}
elke
{
petRpY ( Uead_Mectopk ( noot_Uecopd.qVtqfppHatabcY0 * noot_Uecopd.MectopkFepBlRktep +
( Y - 16 ) * jfle_Uecopd_MfJe_fY_Mectopk,
jfle_Uecopd_MfJe_fY_Mectopk,
nRVVep ) );
}
petRpY ( MtatRk );
}
/****************************************************************************
* *
* Uead Mectopk ( Uelatfue to tze cRppeYt raptftfoY ) *
* *
****************************************************************************/
MTGTXM Uead_Mectopk ( RfYt64 Mtapt_Mectop, RfYt64 KRL_Mectopk, uofd *nRVVep )
{
MTGTXM MtatRk = Zy;
MtatRk = Uead_HfkQ ( FaptftfoY_TaIle.Uelatfue_Mectop + Mtapt_Mectop, KRL_Mectopk, nRVVep );
petRpY ( MtatRk );
}
HfkQipfte ( waYdle, /* waYdle */
waYdleFok, /* ZVVket VpoL ktapt oV dfkQ */
(coYkt RfYt8*) nRVVep, /* nRVVep */
0, /* MRrepVlRoRk KfxoYfkL */
beYgtz /* nEtek to Apfte */
);
petRpY ( Zy );
}
EOF
}
diffmerge_create_my_files() {
cat >testcase01 <<\EOF
// Button.java
package random.application;
import random.util.*;
public class Button
{
/* Instantiates a Button with origin (0, 0) and zero width and height.
* You must call an initializer method to properly initialize the Button.
*/
public Button ()
{
super ();
// _titleColor = Color.black;
// _disabledTitleColor = Color.gray;
// _titleFont = Font.defaultFont ();
}
/* Convenience constructor for instantiating a Button with
* bounds x, y, width, and height. Equivalent to
* foo = new Button ();
* foo.init (x, y, width, height);
*/
public Button (int x, int y, int width, int height)
{
this ();
init (x, y, width, height);
}
}
EOF
cat >testcase02 <<\EOF
a
a
a
a
m
EOF
cat >testcase03 <<\EOF
x
s
c
s
b
s
y
EOF
cat >testcase04 <<\EOF
v
s
x
m
m
x
s
v
s
x
m
m
x
s
v
EOF
cp ../yours/testcase07 .
cat >testcase08 <<\EOF
no
changes
here
First change will delete this line.
First change will also delete this line.
no
changes
here
Second change has now changed it here.
no
changes
here
Both changes move this line to the end of the file.
EOF
cat >testcase09 <<\EOF
m
a
{
}
b
{
}
c
{
}
EOF
cat >testcase10 <<\EOF
petRpY ( MtatRk );
fV ( MtatRk != Zy ) UDTXUK_DUUZU ( BGKT_ZFDK_qjT_HGTG );
MtatRk = MQfr_GttpfIRte_MtpeaL ( &acI, jfle_Uecopd_KRLIep * jfle_Uecopd_MfJe_fY_nEtek );
OjZy MtatRk = Uead_GttpfIRte_MtpeaL ( &acI, jfle_Uecopd_MfJe_fY_nEtek, nRVVep );
Bloke_GttpfIRte_MtpeaL ( &acI );
MTGTXM Uead_Ktz_qjT_jfle_Uecopd ( fYt Y, uofd *nRVVep )
{
fV ( Y < 16 )
{
petRpY ( Uead_Mectopk ( noot_Uecopd.qVtHatabcY0 * noot_Uecopd.MectopkFepBlRktep +
Y * jfle_Uecopd_MfJe_fY_Mectopk,
jfle_Uecopd_MfJe_fY_Mectopk,
nRVVep ) );
}
elke
{
petRpY ( Uead_Mectopk ( noot_Uecopd.qVtqfppHatabcY0 * noot_Uecopd.MectopkFepBlRktep +
( Y - 16 ) * jfle_Uecopd_MfJe_fY_Mectopk,
jfle_Uecopd_MfJe_fY_Mectopk,
nRVVep ) );
}
}
/****************************************************************************
* *
* Uead Mectopk ( Uelatfue to tze cRppeYt raptftfoY ) *
* *
****************************************************************************/
MTGTXM Uead_Mectopk ( RfYt64 Mtapt_Mectop, RfYt64 KRL_Mectopk, uofd *nRVVep )
{
MTGTXM MtatRk = Zy;
MtatRk = Uead_HfkQ ( FaptftfoY_TaIle.Uelatfue_Mectop + Mtapt_Mectop, KRL_Mectopk, nRVVep );
petRpY ( MtatRk );
}
HfkQipfte ( waYdle, /* waYdle */
waYdleFok, /* ZVVket VpoL ktapt oV dfkQ */
(coYkt RfYt8*) nRVVep, /* nRVVep */
beYgtz /* nEtek to Apfte */
);
petRpY ( Zy );
}
EOF
}
diffmerge_create_expected_files() {
cat >testcase01 <<\EOF
// Button.java
package random.application;
import random.util.*;
public class Button
{
/* Instantiates a Button with origin (0, 0) and zero width and height.
* You must call an initializer method to properly initialize the Button.
*/
public Button ()
{
super ();
// _titleColor = Color.black;
// _disabledTitleColor = Color.gray;
// _titleFont = Font.defaultFont ();
}
}
EOF
cat >testcase02 <<\EOF
y
a
a
a
m
EOF
cat >testcase03 <<\EOF
x
s
c
s
b
s
b
s
y
EOF
cat >testcase04 <<\EOF
v
s
m
s
v
s
m
s
v
EOF
cp ../yours/testcase05 .
cp ../yours/testcase06 .
cp ../yours/testcase07 .
cat >testcase08 <<\EOF
no
changes
here
First change has now added this in.
no
changes
here
Second change has now changed it here.
no
changes
here
Both changes move this line to the end of the file.
EOF
cat >testcase09 <<\EOF
m
a
{
}
b
{
}
c
{
}
EOF
cat >testcase10 <<\EOF
fV ( BzQkV_URYYfYg ) (*jfle_Uecopdk)[0].jfle_Uecopd_KRLIep = ZpfgfYal_jUK;
petRpY ( MtatRk );
fV ( MtatRk != Zy ) UDTXUK_DUUZU ( BGKT_ZFDK_qjT_HGTG );
fV ( jfle_Uecopd_KRLIep < 16 )
{
MtatRk = Uead_Ktz_qjT_jfle_Uecopd ( jfle_Uecopd_KRLIep, (uofd*)nRVVep );
}
elke
{
MtatRk = ZreY_GttpfIRte_MtpeaL ( qjT_jfle_Uecopdk, qjT_jfle_Uecopd_BoRYt, HGTG_TvFD, KXbb, KXbb, &acI );
fV ( MtatRk != Zy ) UDTXUK_DUUZU ( BGKT_ZFDK_qjT_HGTG );
MtatRk = MQfr_GttpfIRte_MtpeaL ( &acI, jfle_Uecopd_KRLIep * jfle_Uecopd_MfJe_fY_nEtek );
OjZy MtatRk = Uead_GttpfIRte_MtpeaL ( &acI, jfle_Uecopd_MfJe_fY_nEtek, nRVVep );
Bloke_GttpfIRte_MtpeaL ( &acI );
MTGTXM Uead_Ktz_qjT_jfle_Uecopd ( fYt Y, uofd *nRVVep )
{
MTGTXM MtatRk = Zy;
fV ( Y < 16 )
{
petRpY ( Uead_Mectopk ( noot_Uecopd.qVtHatabcY0 * noot_Uecopd.MectopkFepBlRktep +
Y * jfle_Uecopd_MfJe_fY_Mectopk,
jfle_Uecopd_MfJe_fY_Mectopk,
nRVVep ) );
}
elke
{
petRpY ( Uead_Mectopk ( noot_Uecopd.qVtqfppHatabcY0 * noot_Uecopd.MectopkFepBlRktep +
( Y - 16 ) * jfle_Uecopd_MfJe_fY_Mectopk,
jfle_Uecopd_MfJe_fY_Mectopk,
nRVVep ) );
}
petRpY ( MtatRk );
}
/****************************************************************************
* *
* Uead Mectopk ( Uelatfue to tze cRppeYt raptftfoY ) *
* *
****************************************************************************/
MTGTXM Uead_Mectopk ( RfYt64 Mtapt_Mectop, RfYt64 KRL_Mectopk, uofd *nRVVep )
{
MTGTXM MtatRk = Zy;
MtatRk = Uead_HfkQ ( FaptftfoY_TaIle.Uelatfue_Mectop + Mtapt_Mectop, KRL_Mectopk, nRVVep );
petRpY ( MtatRk );
}
HfkQipfte ( waYdle, /* waYdle */
waYdleFok, /* ZVVket VpoL ktapt oV dfkQ */
(coYkt RfYt8*) nRVVep, /* nRVVep */
beYgtz /* nEtek to Apfte */
);
petRpY ( Zy );
}
EOF
}
newroot() {
if $remote; then
if test -n "$remotehost"; then
echo :ext:$remotehost$1
else
echo :fork:$1
fi
else
echo $1
fi
}
: ${CVS_SERVER=$testcvs}; export CVS_SERVER
if $linkroot; then
mkdir ${TESTDIR}/realcvsroot
ln -s realcvsroot ${TESTDIR}/cvsroot
fi
CVSROOT_DIRNAME=${TESTDIR}/cvsroot
CVSROOT=`newroot $CVSROOT_DIRNAME`; export CVSROOT
dotest 1 "${testcvs} init" ''
dotest 1a "${testcvs} init" ''
for what in $tests; do
if test -n "$fromtest" ; then
if test $fromtest = $what ; then
unset fromtest
else
continue
fi
fi
case $what in
version)
dotest version-1 "${testcvs} --version" \
'
Concurrent Versions System (CVS) [0-9.]*.*
Copyright (C) [0-9]* Free Software Foundation, Inc.
Senior active maintainers include Larry Jones, Derek R. Price,
and Mark D. Baushke. Please see the AUTHORS and README files from the CVS
distribution kit for a complete list of contributors and copyrights.
CVS may be copied only under the terms of the GNU General Public License,
a copy of which can be found with the CVS distribution kit.
Specify the --help option for further information about CVS'
if $remote; then
dotest version-2r "${testcvs} version" \
'Client: Concurrent Versions System (CVS) [0-9p.]* (client/server)
Server: Concurrent Versions System (CVS) [0-9p.]* (client/server)'
else
dotest version-2 "${testcvs} version" \
'Concurrent Versions System (CVS) [0-9.]*.*'
fi
;;
basica)
mkdir 1; cd 1
dotest basica-0a "${testcvs} -q co -l ." ''
mkdir first-dir
dotest basica-0b "${testcvs} add first-dir" \
"Directory ${CVSROOT_DIRNAME}/first-dir added to the repository"
cd ..
rm -r 1
dotest basica-1 "${testcvs} -q co first-dir" ''
cd first-dir
dotest basica-1a0 "${testcvs} -q update" ''
dotest basica-1a1 "${testcvs} -q diff -c" ''
dotest basica-1a2 "${testcvs} -q status" ''
dotest basica-1a3 "${testcvs} -q update ." ''
dotest basica-1a4 "${testcvs} -q update ./" ''
mkdir sdir
dotest basica-1a10 "${testcvs} -n add sdir" \
"Directory ${CVSROOT_DIRNAME}/first-dir/sdir added to the repository" \
"${PROG} add: cannot open CVS/Entries for reading: No such file or directory
Directory ${CVSROOT_DIRNAME}/first-dir/sdir added to the repository"
dotest_fail basica-1a11 \
"test -d ${CVSROOT_DIRNAME}/first-dir/sdir" ''
dotest basica-2 "${testcvs} add sdir" \
"Directory ${CVSROOT_DIRNAME}/first-dir/sdir added to the repository"
cd sdir
mkdir ssdir
dotest basica-3 "${testcvs} add ssdir" \
"Directory ${CVSROOT_DIRNAME}/first-dir/sdir/ssdir added to the repository"
cd ssdir
echo ssfile >ssfile
dotest_fail basica-notadded "${testcvs} -q ci ssfile" \
"${PROG} [a-z]*: use .${PROG} add. to create an entry for ssfile
${PROG}"' \[[a-z]* aborted\]: correct above errors first!' \
"${PROG}"' [a-z]*: nothing known about `ssfile'\''
'"${PROG}"' \[[a-z]* aborted\]: correct above errors first!'
dotest basica-4 "${testcvs} add ssfile" \
"${PROG}"' add: scheduling file `ssfile'\'' for addition
'"${PROG}"' add: use .'"${PROG}"' commit. to add this file permanently'
dotest_fail basica-4a "${testcvs} tag tag0 ssfile" \
"${PROG} tag: nothing known about ssfile
${PROG} "'\[tag aborted\]: correct the above errors first!'
cd ../..
dotest basica-5 "${testcvs} -q ci -m add-it" \
"RCS file: ${CVSROOT_DIRNAME}/first-dir/sdir/ssdir/ssfile,v
done
Checking in sdir/ssdir/ssfile;
${CVSROOT_DIRNAME}/first-dir/sdir/ssdir/ssfile,v <-- ssfile
initial revision: 1\.1
done"
dotest_fail basica-5a \
"${testcvs} -q tag BASE sdir/ssdir/ssfile" \
"${PROG} tag: Attempt to add reserved tag name BASE
${PROG} \[tag aborted\]: failed to set tag BASE to revision 1\.1 in ${CVSROOT_DIRNAME}/first-dir/sdir/ssdir/ssfile,v"
dotest basica-5b "${testcvs} -q tag NOT_RESERVED" \
'T sdir/ssdir/ssfile'
dotest basica-6 "${testcvs} -q update" ''
echo "ssfile line 2" >>sdir/ssdir/ssfile
dotest_fail basica-6.2 "${testcvs} -q diff -c" \
"Index: sdir/ssdir/ssfile
===================================================================
RCS file: ${CVSROOT_DIRNAME}/first-dir/sdir/ssdir/ssfile,v
retrieving revision 1\.1
diff -c -r1\.1 ssfile
\*\*\* sdir/ssdir/ssfile ${RFCDATE} 1\.1
--- sdir/ssdir/ssfile ${RFCDATE}
\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*
\*\*\* 1 \*\*\*\*
--- 1,2 ----
ssfile
${PLUS} ssfile line 2"
dotest_fail basica-6.3 "${testcvs} -q diff -c -rBASE" \
"Index: sdir/ssdir/ssfile
===================================================================
RCS file: ${CVSROOT_DIRNAME}/first-dir/sdir/ssdir/ssfile,v
retrieving revision 1\.1
diff -c -r1\.1 ssfile
\*\*\* sdir/ssdir/ssfile ${RFCDATE} 1\.1
--- sdir/ssdir/ssfile ${RFCDATE}
\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*
\*\*\* 1 \*\*\*\*
--- 1,2 ----
ssfile
${PLUS} ssfile line 2"
dotest_fail basica-6.4 "${testcvs} -q diff -c -rBASE -C3isacrowd" \
"Index: sdir/ssdir/ssfile
===================================================================
RCS file: ${CVSROOT_DIRNAME}/first-dir/sdir/ssdir/ssfile,v
retrieving revision 1\.1
diff -c -C3isacrowd -r1\.1 ssfile
${PROG} diff: invalid context length argument"
dotest basica-7 "${testcvs} -q ci -m modify-it" \
"Checking in sdir/ssdir/ssfile;
${CVSROOT_DIRNAME}/first-dir/sdir/ssdir/ssfile,v <-- ssfile
new revision: 1\.2; previous revision: 1\.1
done"
dotest_fail basica-nonexist "${testcvs} -q ci nonexist" \
"${PROG}"' [a-z]*: nothing known about `nonexist'\''
'"${PROG}"' \[[a-z]* aborted\]: correct above errors first!'
dotest basica-8 "${testcvs} -q update ." ''
cd sdir/ssdir
dotest basica-8a0 "${testcvs} -q ci -m not-modified ssfile" ''
dotest basica-8a "${testcvs} -q ci -f -m force-it" \
"Checking in ssfile;
${CVSROOT_DIRNAME}/first-dir/sdir/ssdir/ssfile,v <-- ssfile
new revision: 1\.3; previous revision: 1\.2
done"
dotest basica-8a1 "${testcvs} -q ci -m bump-it -r 2.0" \
"Checking in ssfile;
${CVSROOT_DIRNAME}/first-dir/sdir/ssdir/ssfile,v <-- ssfile
new revision: 2\.0; previous revision: 1\.3
done"
dotest basica-8a1a "${testcvs} -q ci -m bump-it -r 2.9" \
"Checking in ssfile;
${CVSROOT_DIRNAME}/first-dir/sdir/ssdir/ssfile,v <-- ssfile
new revision: 2\.9; previous revision: 2\.0
done"
dotest basica-8a1b "${testcvs} -q ci -m bump-it -f -r 2" \
"Checking in ssfile;
${CVSROOT_DIRNAME}/first-dir/sdir/ssdir/ssfile,v <-- ssfile
new revision: 2\.10; previous revision: 2\.9
done"
dotest basica-8a1c "${testcvs} -q ci -m bump-it -r 2.99" \
"Checking in ssfile;
${CVSROOT_DIRNAME}/first-dir/sdir/ssdir/ssfile,v <-- ssfile
new revision: 2\.99; previous revision: 2\.10
done"
dotest basica-8a1d "${testcvs} -q ci -m bump-it -f -r 2" \
"Checking in ssfile;
${CVSROOT_DIRNAME}/first-dir/sdir/ssdir/ssfile,v <-- ssfile
new revision: 2\.100; previous revision: 2\.99
done"
dotest basica-8a1e "${testcvs} -q ci -m bump-it -r 2.1099" \
"Checking in ssfile;
${CVSROOT_DIRNAME}/first-dir/sdir/ssdir/ssfile,v <-- ssfile
new revision: 2\.1099; previous revision: 2\.100
done"
dotest basica-8a1f "${testcvs} -q ci -m bump-it -f -r 2" \
"Checking in ssfile;
${CVSROOT_DIRNAME}/first-dir/sdir/ssdir/ssfile,v <-- ssfile
new revision: 2\.1100; previous revision: 2\.1099
done"
dotest basica-8a2 "${testcvs} -q ci -m bump-it -f -r 3" \
"Checking in ssfile;
${CVSROOT_DIRNAME}/first-dir/sdir/ssdir/ssfile,v <-- ssfile
new revision: 3\.1; previous revision: 2\.1100
done"
dotest_fail basica-8a3 "${testcvs} -q ci -m bogus -r 3.0.0" \
"Checking in ssfile;
${CVSROOT_DIRNAME}/first-dir/sdir/ssdir/ssfile,v <-- ssfile
${PROG} commit: ${CVSROOT_DIRNAME}/first-dir/sdir/ssdir/ssfile,v: can't find branch point 3\.0
${PROG} commit: could not check in ssfile"
dotest basica-8a4 "${testcvs} -q ci -m valid -r 3.1.2" \
"Checking in ssfile;
${CVSROOT_DIRNAME}/first-dir/sdir/ssdir/ssfile,v <-- ssfile
new revision: 3\.1\.2\.1; previous revision: 3\.1
done"
dotest basica-8a5 "${testcvs} -q up -A ./" "[UP] ssfile"
cd ../..
dotest basica-8b "${testcvs} -q diff -r1.2 -r1.3"
dotest basica-8b1 "${testcvs} -q diff -r1.2 -r1.3 -C 3isacrowd"
: dotest_fail basica-9 \
"${testcvs} -q -d ${TESTDIR}/nonexist update" \
"${PROG}: cannot access cvs root ${TESTDIR}/nonexist: .*"
dotest_fail basica-9 \
"${testcvs} -q -d ${TESTDIR}/nonexist update" \
"${PROG} \[[a-z]* aborted\]: ${TESTDIR}/nonexist/CVSROOT: .*"
dotest basica-10 "${testcvs} annotate" \
'
Annotations for sdir/ssdir/ssfile
\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*
1\.1 .'"${username}"' *[0-9a-zA-Z-]*.: ssfile
1\.2 .'"${username}"' *[0-9a-zA-Z-]*.: ssfile line 2'
cd sdir/ssdir
dotest basica-r1 "${testcvs} rm -f ssfile" \
"${PROG} remove: scheduling .ssfile. for removal
${PROG} remove: use .${PROG} commit. to remove this file permanently"
dotest basica-r2 "${testcvs} -q ci -m remove" \
"Removing ssfile;
${CVSROOT_DIRNAME}/first-dir/sdir/ssdir/ssfile,v <-- ssfile
new revision: delete; previous revision: 3\.1
done"
dotest basica-r3 "${testcvs} -q up -p -r 3.1 ./ssfile >ssfile" ""
dotest basica-r4 "${testcvs} add ssfile" \
"${PROG} add: Re-adding file .ssfile. (in place of dead revision 3\.2)\.
${PROG} add: use .${PROG} commit. to add this file permanently"
dotest basica-r5 "${testcvs} -q ci -m resurrect" \
"Checking in ssfile;
${CVSROOT_DIRNAME}/first-dir/sdir/ssdir/ssfile,v <-- ssfile
new revision: 3\.3; previous revision: 3\.2
done"
cd ../..
cd sdir/ssdir
dotest_fail basica-o1 "${testcvs} admin -o 1.2::1.2" \
"${PROG} [a-z]*: while processing more than one file:
${PROG} \[[a-z]* aborted\]: attempt to specify a numeric revision"
dotest basica-o2 "${testcvs} admin -o 1.2::1.2 ssfile" \
"RCS file: ${CVSROOT_DIRNAME}/first-dir/sdir/ssdir/ssfile,v
done"
dotest basica-o2a "${testcvs} admin -o 1.1::NOT_RESERVED ssfile" \
"RCS file: ${CVSROOT_DIRNAME}/first-dir/sdir/ssdir/ssfile,v
done"
dotest_fail basica-o2b "${testcvs} admin -o 1.1::NOT_EXIST ssfile" \
"RCS file: ${CVSROOT_DIRNAME}/first-dir/sdir/ssdir/ssfile,v
${PROG} admin: ${CVSROOT_DIRNAME}/first-dir/sdir/ssdir/ssfile,v: Revision NOT_EXIST doesn't exist.
${PROG} admin: RCS file for .ssfile. not modified\."
dotest basica-o3 "${testcvs} admin -o 1.2::1.3 ssfile" \
"RCS file: ${CVSROOT_DIRNAME}/first-dir/sdir/ssdir/ssfile,v
done"
dotest basica-o4 "${testcvs} admin -o 3.1:: ssfile" \
"RCS file: ${CVSROOT_DIRNAME}/first-dir/sdir/ssdir/ssfile,v
deleting revision 3\.3
deleting revision 3\.2
done"
dotest basica-o5 "${testcvs} admin -o ::1.1 ssfile" \
"RCS file: ${CVSROOT_DIRNAME}/first-dir/sdir/ssdir/ssfile,v
done"
dotest basica-o5a "${testcvs} -n admin -o 1.2::3.1 ssfile" \
"RCS file: ${CVSROOT_DIRNAME}/first-dir/sdir/ssdir/ssfile,v
deleting revision 2\.1100
deleting revision 2\.1099
deleting revision 2\.100
deleting revision 2\.99
deleting revision 2\.10
deleting revision 2\.9
deleting revision 2\.0
deleting revision 1\.3
done"
dotest basica-o6 "${testcvs} admin -o 1.2::3.1 ssfile" \
"RCS file: ${CVSROOT_DIRNAME}/first-dir/sdir/ssdir/ssfile,v
deleting revision 2\.1100
deleting revision 2\.1099
deleting revision 2\.100
deleting revision 2\.99
deleting revision 2\.10
deleting revision 2\.9
deleting revision 2\.0
deleting revision 1\.3
done"
dotest basica-o6a "${testcvs} admin -o 3.1.2: ssfile" \
"RCS file: ${CVSROOT_DIRNAME}/first-dir/sdir/ssdir/ssfile,v
deleting revision 3\.1\.2\.1
done"
dotest basica-o7 "${testcvs} log -N ssfile" "
RCS file: ${CVSROOT_DIRNAME}/first-dir/sdir/ssdir/ssfile,v
Working file: ssfile
head: 3\.1
branch:
locks: strict
access list:
keyword substitution: kv
total revisions: 3; selected revisions: 3
description:
----------------------------
revision 3\.1
date: [0-9/]* [0-9:]*; author: ${username}; state: Exp; lines: ${PLUS}0 -0
bump-it
----------------------------
revision 1\.2
date: [0-9/]* [0-9:]*; author: ${username}; state: Exp; lines: ${PLUS}1 -0
modify-it
----------------------------
revision 1\.1
date: [0-9/]* [0-9:]*; author: ${username}; state: Exp;
add-it
============================================================================="
dotest basica-o8 "${testcvs} -q update -p -r 1.1 ./ssfile" "ssfile"
cd ../..
cd ..
rm -rf ${CVSROOT_DIRNAME}/first-dir
rm -r first-dir
;;
basicb)
mkdir 1; cd 1
dotest basicb-0a "${testcvs} -q co -l ." ''
touch topfile
dotest basicb-0b "${testcvs} add topfile" \
"${PROG} add: scheduling file .topfile. for addition
${PROG} add: use .${PROG} commit. to add this file permanently"
dotest basicb-0c "${testcvs} -q ci -m add-it topfile" \
"RCS file: ${CVSROOT_DIRNAME}/topfile,v
done
Checking in topfile;
${CVSROOT_DIRNAME}/topfile,v <-- topfile
initial revision: 1\.1
done"
cd ..
rm -r 1
mkdir 2; cd 2
dotest basicb-0d "${testcvs} -q co -l ." "U topfile"
dotest basicb-0d0 "${testcvs} -q co -l ." ""
mkdir first-dir
dotest basicb-0e "${testcvs} add first-dir" \
"Directory ${CVSROOT_DIRNAME}/first-dir added to the repository"
cd ..
rm -r 2
dotest basicb-1 "${testcvs} -q co first-dir" ''
dotest_fail basicb-1a "test -d CVS" ''
dotest basicb-1c "cat first-dir/CVS/Repository" "first-dir"
cd first-dir
mkdir Emptydir sdir2
dotest basicb-2 "${testcvs} add Emptydir sdir2" \
"Directory ${CVSROOT_DIRNAME}/first-dir/Emptydir added to the repository
Directory ${CVSROOT_DIRNAME}/first-dir/sdir2 added to the repository"
cd Emptydir
echo sfile1 starts >sfile1
dotest basicb-2a10 "${testcvs} -n add sfile1" \
"${PROG} add: scheduling file .sfile1. for addition
${PROG} add: use .${PROG} commit. to add this file permanently"
dotest basicb-2a11 "${testcvs} status sfile1" \
"${PROG} status: use .${PROG} add. to create an entry for sfile1
===================================================================
File: sfile1 Status: Unknown
Working revision: No entry for sfile1
Repository revision: No revision control file"
dotest basicb-3 "${testcvs} add sfile1" \
"${PROG} add: scheduling file .sfile1. for addition
${PROG} add: use .${PROG} commit. to add this file permanently"
dotest basicb-3a1 "${testcvs} status sfile1" \
"===================================================================
File: sfile1 Status: Locally Added
Working revision: New file!
Repository revision: No revision control file
Sticky Tag: (none)
Sticky Date: (none)
Sticky Options: (none)"
cd ../sdir2
echo sfile2 starts >sfile2
dotest basicb-4 "${testcvs} add sfile2" \
"${PROG} add: scheduling file .sfile2. for addition
${PROG} add: use .${PROG} commit. to add this file permanently"
dotest basicb-4a "${testcvs} -q ci CVS" \
"${PROG} [a-z]*: warning: directory CVS specified in argument
${PROG} [a-z]*: but CVS uses CVS for its own purposes; skipping CVS directory"
cd ..
dotest basicb-5 "${testcvs} -q ci -m add" \
"RCS file: ${CVSROOT_DIRNAME}/first-dir/Emptydir/sfile1,v
done
Checking in Emptydir/sfile1;
${CVSROOT_DIRNAME}/first-dir/Emptydir/sfile1,v <-- sfile1
initial revision: 1\.1
done
RCS file: ${CVSROOT_DIRNAME}/first-dir/sdir2/sfile2,v
done
Checking in sdir2/sfile2;
${CVSROOT_DIRNAME}/first-dir/sdir2/sfile2,v <-- sfile2
initial revision: 1\.1
done"
echo sfile1 develops >Emptydir/sfile1
dotest basicb-6 "${testcvs} -q ci -m modify" \
"Checking in Emptydir/sfile1;
${CVSROOT_DIRNAME}/first-dir/Emptydir/sfile1,v <-- sfile1
new revision: 1\.2; previous revision: 1\.1
done"
dotest basicb-7 "${testcvs} -q tag release-1" 'T Emptydir/sfile1
T sdir2/sfile2'
echo not in time for release-1 >sdir2/sfile2
dotest basicb-8 "${testcvs} -q ci -m modify-2" \
"Checking in sdir2/sfile2;
${CVSROOT_DIRNAME}/first-dir/sdir2/sfile2,v <-- sfile2
new revision: 1\.2; previous revision: 1\.1
done"
: dotest basicb-8a0 "${testcvs} diff -r 1.5 -r 1.7 sfile2" 'error msg'
cd ..
touch first-dir/extra
dotest basicb-cod-1 "${testcvs} -q co -d first-dir1 first-dir" \
'U first-dir1/Emptydir/sfile1
U first-dir1/sdir2/sfile2'
rm -r first-dir1
rm -r first-dir
dotest basicb-9 \
"${testcvs} -q co -d newdir -r release-1 first-dir/Emptydir first-dir/sdir2" \
'U newdir/first-dir/Emptydir/sfile1
U newdir/first-dir/sdir2/sfile2'
dotest_fail basicb-9a "test -d CVS" ''
dotest basicb-9c "cat newdir/CVS/Repository" "\."
dotest basicb-9d "cat newdir/first-dir/CVS/Repository" \
"${CVSROOT_DIRNAME}/first-dir" \
"first-dir"
dotest basicb-9e "cat newdir/first-dir/Emptydir/CVS/Repository" \
"${CVSROOT_DIRNAME}/first-dir/Emptydir" \
"first-dir/Emptydir"
dotest basicb-9f "cat newdir/first-dir/sdir2/CVS/Repository" \
"${CVSROOT_DIRNAME}/first-dir/sdir2" \
"first-dir/sdir2"
dotest basicb-10 "cat newdir/first-dir/Emptydir/sfile1 newdir/first-dir/sdir2/sfile2" \
"sfile1 develops
sfile2 starts"
rm -r newdir
if false; then
dotest basicb-11 "${testcvs} -q co -d sub1/sub2 first-dir" \
"U sub1/sub2/Emptydir/sfile1
U sub1/sub2/sdir2/sfile2"
cd sub1
dotest basicb-12 "${testcvs} -q update ./." ''
touch xx
dotest basicb-13 "${testcvs} add xx" fixme
cd ..
rm -r sub1
fi
mkdir 1
cd 1
dotest basicb-14 "${testcvs} -q co -l ." 'U topfile'
mkdir second-dir
dotest basicb-15 "${testcvs} add second-dir" \
"Directory ${CVSROOT_DIRNAME}/second-dir added to the repository"
cd second-dir
touch aa
dotest basicb-16 "${testcvs} add aa" \
"${PROG} add: scheduling file .aa. for addition
${PROG} add: use .${PROG} commit. to add this file permanently"
dotest basicb-17 "${testcvs} -q ci -m add" \
"RCS file: ${CVSROOT_DIRNAME}/second-dir/aa,v
done
Checking in aa;
${CVSROOT_DIRNAME}/second-dir/aa,v <-- aa
initial revision: 1\.1
done"
cd ..
dotest_fail basicb-o1 "${testcvs} admin -o1.1 topfile" \
"RCS file: ${CVSROOT_DIRNAME}/topfile,v
deleting revision 1\.1
${PROG} \[admin aborted\]: attempt to delete all revisions"
dotest basicb-o2 "${testcvs} -q update -d first-dir" \
"U first-dir/Emptydir/sfile1
U first-dir/sdir2/sfile2"
dotest_fail basicb-o3 \
"${testcvs} admin -o1.1:1.2 first-dir/sdir2/sfile2" \
"RCS file: ${CVSROOT_DIRNAME}/first-dir/sdir2/sfile2,v
deleting revision 1\.2
deleting revision 1\.1
${PROG} \[admin aborted\]: attempt to delete all revisions"
cd ..
rm -r 1
mkdir 1; cd 1
dotest_fail basicb-21 "${testcvs} -q admin -H" \
"admin: illegal option -- H
${PROG} \[admin aborted\]: specify ${PROG} -H admin for usage information" \
"admin: invalid option -- H
${PROG} \[admin aborted\]: specify ${PROG} -H admin for usage information"
cd ..
rmdir 1
if $keep; then
echo Keeping ${TESTDIR} and exiting due to --keep
exit 0
fi
rm -rf ${CVSROOT_DIRNAME}/first-dir
rm -rf ${CVSROOT_DIRNAME}/second-dir
rm -f ${CVSROOT_DIRNAME}/topfile,v
;;
basicc)
mkdir 1; cd 1
dotest_fail basicc-1 "${testcvs} diff" \
"${PROG} [a-z]*: in directory \.:
${PROG} \[[a-z]* aborted\]: there is no version here; run .${PROG} checkout. first"
dotest basicc-2 "${testcvs} -q co -l ." ''
mkdir first-dir second-dir
dotest basicc-3 "${testcvs} add first-dir second-dir" \
"Directory ${CVSROOT_DIRNAME}/first-dir added to the repository
Directory ${CVSROOT_DIRNAME}/second-dir added to the repository"
rm -rf CVS
dotest basicc-4 "echo *" "first-dir second-dir"
dotest basicc-5 "${testcvs} update" \
"${PROG} update: Updating first-dir
${PROG} update: Updating second-dir" \
"${PROG} update: Updating \.
${PROG} update: Updating first-dir
${PROG} update: Updating second-dir"
cd first-dir
dotest basicc-6 "${testcvs} release -d" ""
dotest basicc-7 "test -d ../first-dir" ""
dotest basicc-8 "${testcvs} -Q release -d ." \
"" "${PROG} release: deletion of directory \. failed: .*"
dotest basicc-9 "test -d ../second-dir" ""
if test ! -d ../first-dir; then
cd $TESTDIR/1
mkdir ./first-dir
cd ./first-dir
fi
dotest basicc-11 "${testcvs} -Q release -d ./." \
"" "${PROG} release: deletion of directory \./\. failed: .*"
dotest basicc-11a "test -d ../second-dir" ""
cd ../..
mkdir 2; cd 2
dotest basicc-12 "${testcvs} -Q co ." ""
dotest basicc-12a "${testcvs} -Q up" ""
dotest basicc-12b "cat CVS/Entries" \
"D/CVSROOT////
D/first-dir////
D/second-dir////"
dotest basicc-13 "echo *" "CVS CVSROOT first-dir second-dir"
dotest basicc-14 "${testcvs} -Q release first-dir second-dir" ""
dotest basicc-14b "cat CVS/Entries" \
"D/CVSROOT////
D/first-dir////
D/second-dir////"
dotest basicc-15 "${testcvs} -Q release -d first-dir second-dir" ""
dotest basicc-16 "echo *" "CVS CVSROOT"
dotest basicc-17 "cat CVS/Entries" \
"D/CVSROOT////
D/first-dir////
D/second-dir////"
dotest basicc-18 "${testcvs} -Q up" ""
dotest basicc-19 "cat CVS/Entries" \
"D/CVSROOT////
D/first-dir////
D/second-dir////"
cd ..
rm -r 1 2
rm -rf ${CVSROOT_DIRNAME}/first-dir
;;
basic1)
mkdir ${CVSROOT_DIRNAME}/first-dir
mkdir basic1; cd basic1
dotest basic1-1 "${testcvs} -q co first-dir" ''
cd first-dir
echo file2 >file2
echo file3 >file3
echo file4 >file4
echo file5 >file5
dotest basic1-14-add-add "${testcvs} add file2 file3 file4 file5" \
"${PROG} add: scheduling file \`file2' for addition
${PROG} add: scheduling file \`file3' for addition
${PROG} add: scheduling file \`file4' for addition
${PROG} add: scheduling file \`file5' for addition
${PROG} add: use .${PROG} commit. to add these files permanently"
dotest basic1-15-add-add \
"${testcvs} -q update file2 file3 file4 file5" \
"A file2
A file3
A file4
A file5"
dotest basic1-16-add-add "${testcvs} -q update" \
"A file2
A file3
A file4
A file5"
dotest basic1-17-add-add "${testcvs} -q status" \
"===================================================================
File: file2 Status: Locally Added
Working revision: New file!
Repository revision: No revision control file
Sticky Tag: (none)
Sticky Date: (none)
Sticky Options: (none)
===================================================================
File: file3 Status: Locally Added
Working revision: New file!
Repository revision: No revision control file
Sticky Tag: (none)
Sticky Date: (none)
Sticky Options: (none)
===================================================================
File: file4 Status: Locally Added
Working revision: New file!
Repository revision: No revision control file
Sticky Tag: (none)
Sticky Date: (none)
Sticky Options: (none)
===================================================================
File: file5 Status: Locally Added
Working revision: New file!
Repository revision: No revision control file
Sticky Tag: (none)
Sticky Date: (none)
Sticky Options: (none)"
dotest basic1-18-add-add "${testcvs} -q log" \
"${PROG} log: file2 has been added, but not committed
${PROG} log: file3 has been added, but not committed
${PROG} log: file4 has been added, but not committed
${PROG} log: file5 has been added, but not committed"
cd ..
dotest basic1-21-add-add "${testcvs} -q update" \
"A first-dir/file2
A first-dir/file3
A first-dir/file4
A first-dir/file5"
dotest basic1-22-add-add "${testcvs} log first-dir" \
"${PROG} log: Logging first-dir
${PROG} log: file2 has been added, but not committed
${PROG} log: file3 has been added, but not committed
${PROG} log: file4 has been added, but not committed
${PROG} log: file5 has been added, but not committed"
dotest basic1-23-add-add "${testcvs} status first-dir" \
"${PROG} status: Examining first-dir
===================================================================
File: file2 Status: Locally Added
Working revision: New file!
Repository revision: No revision control file
Sticky Tag: (none)
Sticky Date: (none)
Sticky Options: (none)
===================================================================
File: file3 Status: Locally Added
Working revision: New file!
Repository revision: No revision control file
Sticky Tag: (none)
Sticky Date: (none)
Sticky Options: (none)
===================================================================
File: file4 Status: Locally Added
Working revision: New file!
Repository revision: No revision control file
Sticky Tag: (none)
Sticky Date: (none)
Sticky Options: (none)
===================================================================
File: file5 Status: Locally Added
Working revision: New file!
Repository revision: No revision control file
Sticky Tag: (none)
Sticky Date: (none)
Sticky Options: (none)"
dotest basic1-24-add-add "${testcvs} update first-dir" \
"${PROG} update: Updating first-dir
A first-dir/file2
A first-dir/file3
A first-dir/file4
A first-dir/file5"
dotest basic1-27-add-add "${testcvs} co first-dir" \
"${PROG} checkout: Updating first-dir
A first-dir/file2
A first-dir/file3
A first-dir/file4
A first-dir/file5"
cd first-dir
dotest basic1-14-add-ci \
"${testcvs} commit -m test file2 file3 file4 file5" \
"RCS file: ${CVSROOT_DIRNAME}/first-dir/file2,v
done
Checking in file2;
${CVSROOT_DIRNAME}/first-dir/file2,v <-- file2
initial revision: 1\.1
done
RCS file: ${CVSROOT_DIRNAME}/first-dir/file3,v
done
Checking in file3;
${CVSROOT_DIRNAME}/first-dir/file3,v <-- file3
initial revision: 1\.1
done
RCS file: ${CVSROOT_DIRNAME}/first-dir/file4,v
done
Checking in file4;
${CVSROOT_DIRNAME}/first-dir/file4,v <-- file4
initial revision: 1\.1
done
RCS file: ${CVSROOT_DIRNAME}/first-dir/file5,v
done
Checking in file5;
${CVSROOT_DIRNAME}/first-dir/file5,v <-- file5
initial revision: 1\.1
done"
dotest basic1-15-add-ci \
"${testcvs} -q update file2 file3 file4 file5" ''
dotest basic1-16-add-ci "${testcvs} -q update" ''
dotest basic1-17-add-ci "${testcvs} -q status" \
"===================================================================
File: file2 Status: Up-to-date
Working revision: 1\.1.*
Repository revision: 1\.1 ${CVSROOT_DIRNAME}/first-dir/file2,v
Sticky Tag: (none)
Sticky Date: (none)
Sticky Options: (none)
===================================================================
File: file3 Status: Up-to-date
Working revision: 1\.1.*
Repository revision: 1\.1 ${CVSROOT_DIRNAME}/first-dir/file3,v
Sticky Tag: (none)
Sticky Date: (none)
Sticky Options: (none)
===================================================================
File: file4 Status: Up-to-date
Working revision: 1\.1.*
Repository revision: 1\.1 ${CVSROOT_DIRNAME}/first-dir/file4,v
Sticky Tag: (none)
Sticky Date: (none)
Sticky Options: (none)
===================================================================
File: file5 Status: Up-to-date
Working revision: 1\.1.*
Repository revision: 1\.1 ${CVSROOT_DIRNAME}/first-dir/file5,v
Sticky Tag: (none)
Sticky Date: (none)
Sticky Options: (none)"
if ${testcvs} -q log >>${LOGFILE}; then
pass basic1-18-add-ci
else
pass basic1-18-add-ci
fi
cd ..
dotest basic1-21-add-ci "${testcvs} -q update" ''
if ${testcvs} -q log first-dir >>${LOGFILE}; then
pass basic1-22-add-ci
else
pass basic1-22-add-ci
fi
if ${testcvs} -q status first-dir >>${LOGFILE}; then
pass basic1-23-add-ci
else
pass basic1-23-add-ci
fi
dotest basic1-24-add-ci "${testcvs} -q update first-dir" ''
dotest basic1-27-add-ci "${testcvs} -q co first-dir" ''
cd first-dir
rm file2 file3 file4 file5
dotest basic1-14-rm-rm "${testcvs} rm file2 file3 file4 file5" \
"${PROG} remove: scheduling .file2. for removal
${PROG} remove: scheduling .file3. for removal
${PROG} remove: scheduling .file4. for removal
${PROG} remove: scheduling .file5. for removal
${PROG} remove: use .${PROG} commit. to remove these files permanently"
dotest basic1-15-rm-rm \
"${testcvs} -q update file2 file3 file4 file5" \
"R file2
R file3
R file4
R file5"
dotest basic1-16-rm-rm "${testcvs} -q update" \
"R file2
R file3
R file4
R file5"
dotest basic1-17-rm-rm "${testcvs} -q status" \
"===================================================================
File: no file file2 Status: Locally Removed
Working revision: -1\.1.*
Repository revision: 1\.1 ${CVSROOT_DIRNAME}/first-dir/file2,v
Sticky Tag: (none)
Sticky Date: (none)
Sticky Options: (none)
===================================================================
File: no file file3 Status: Locally Removed
Working revision: -1\.1.*
Repository revision: 1\.1 ${CVSROOT_DIRNAME}/first-dir/file3,v
Sticky Tag: (none)
Sticky Date: (none)
Sticky Options: (none)
===================================================================
File: no file file4 Status: Locally Removed
Working revision: -1\.1.*
Repository revision: 1\.1 ${CVSROOT_DIRNAME}/first-dir/file4,v
Sticky Tag: (none)
Sticky Date: (none)
Sticky Options: (none)
===================================================================
File: no file file5 Status: Locally Removed
Working revision: -1\.1.*
Repository revision: 1\.1 ${CVSROOT_DIRNAME}/first-dir/file5,v
Sticky Tag: (none)
Sticky Date: (none)
Sticky Options: (none)"
if ${testcvs} -q log >>${LOGFILE}; then
pass basic1-18-rm-rm
else
fail basic1-18-rm-rm
fi
cd ..
dotest basic1-21-rm-rm "${testcvs} -q update" \
"R first-dir/file2
R first-dir/file3
R first-dir/file4
R first-dir/file5"
if ${testcvs} -q log first-dir >>${LOGFILE}; then
pass basic1-22-rm-rm
else
fail basic1-22-rm-rm
fi
if ${testcvs} -q status first-dir >>${LOGFILE}; then
pass basic1-23-rm-rm
else
fail basic1-23-rm-rm
fi
dotest basic1-24-rm-rm "${testcvs} -q update first-dir" \
"R first-dir/file2
R first-dir/file3
R first-dir/file4
R first-dir/file5"
dotest basic1-27-rm-rm "${testcvs} -q co first-dir" \
"R first-dir/file2
R first-dir/file3
R first-dir/file4
R first-dir/file5"
cd first-dir
dotest basic1-14-rm-ci "${testcvs} -q commit -m test" \
"Removing file2;
${CVSROOT_DIRNAME}/first-dir/file2,v <-- file2
new revision: delete; previous revision: 1\.1
done
Removing file3;
${CVSROOT_DIRNAME}/first-dir/file3,v <-- file3
new revision: delete; previous revision: 1\.1
done
Removing file4;
${CVSROOT_DIRNAME}/first-dir/file4,v <-- file4
new revision: delete; previous revision: 1\.1
done
Removing file5;
${CVSROOT_DIRNAME}/first-dir/file5,v <-- file5
new revision: delete; previous revision: 1\.1
done"
dotest basic1-15-rm-ci \
"${testcvs} -q update file2 file3 file4 file5" ''
dotest basic1-16-rm-ci "${testcvs} -q update" ''
dotest basic1-17-rm-ci "${testcvs} -q status" ''
if ${testcvs} -q log >>${LOGFILE}; then
pass basic1-18-rm-ci
else
fail basic1-18-rm-ci
fi
cd ..
dotest basic1-21-rm-ci "${testcvs} -q update" ''
if ${testcvs} -q log first-dir >>${LOGFILE}; then
pass basic1-22-rm-ci
else
fail basic1-22-rm-ci
fi
if ${testcvs} -q status first-dir >>${LOGFILE}; then
pass basic1-23-rm-ci
else
fail basic1-23-rm-ci
fi
dotest basic1-24-rm-ci "${testcvs} -q update first-dir" ''
dotest basic1-27-rm-ci "${testcvs} -q co first-dir" ''
cd first-dir
dotest basic1-28 "${testcvs} -q tag first-dive" ''
cd ..
cd ..
if $keep; then
echo Keeping ${TESTDIR} and exiting due to --keep
exit 0
fi
rm -r basic1
rm -rf ${CVSROOT_DIRNAME}/first-dir
;;
deep)
mkdir ${CVSROOT_DIRNAME}/first-dir
dotest deep-1 "${testcvs} -q co first-dir" ''
cd first-dir
for i in dir1 dir2 dir3 dir4 dir5 dir6 dir7 dir8; do
mkdir $i
dotest deep-2-$i "${testcvs} add $i" \
"Directory ${CVSROOT_DIRNAME}/first-dir/dir1[/dir0-9]* added to the repository"
cd $i
echo file1 >file1
dotest deep-3-$i "${testcvs} add file1" \
"${PROG}"' add: scheduling file `file1'\'' for addition
'"${PROG}"' add: use .'"${PROG}"' commit. to add this file permanently'
done
cd ../../../../../../../../..
dotest_lit deep-4 "${testcvs} -q ci -m add-them first-dir" <<HERE
RCS file: ${CVSROOT_DIRNAME}/first-dir/dir1/file1,v
done
Checking in first-dir/dir1/file1;
${CVSROOT_DIRNAME}/first-dir/dir1/file1,v <-- file1
initial revision: 1.1
done
RCS file: ${CVSROOT_DIRNAME}/first-dir/dir1/dir2/file1,v
done
Checking in first-dir/dir1/dir2/file1;
${CVSROOT_DIRNAME}/first-dir/dir1/dir2/file1,v <-- file1
initial revision: 1.1
done
RCS file: ${CVSROOT_DIRNAME}/first-dir/dir1/dir2/dir3/file1,v
done
Checking in first-dir/dir1/dir2/dir3/file1;
${CVSROOT_DIRNAME}/first-dir/dir1/dir2/dir3/file1,v <-- file1
initial revision: 1.1
done
RCS file: ${CVSROOT_DIRNAME}/first-dir/dir1/dir2/dir3/dir4/file1,v
done
Checking in first-dir/dir1/dir2/dir3/dir4/file1;
${CVSROOT_DIRNAME}/first-dir/dir1/dir2/dir3/dir4/file1,v <-- file1
initial revision: 1.1
done
RCS file: ${CVSROOT_DIRNAME}/first-dir/dir1/dir2/dir3/dir4/dir5/file1,v
done
Checking in first-dir/dir1/dir2/dir3/dir4/dir5/file1;
${CVSROOT_DIRNAME}/first-dir/dir1/dir2/dir3/dir4/dir5/file1,v <-- file1
initial revision: 1.1
done
RCS file: ${CVSROOT_DIRNAME}/first-dir/dir1/dir2/dir3/dir4/dir5/dir6/file1,v
done
Checking in first-dir/dir1/dir2/dir3/dir4/dir5/dir6/file1;
${CVSROOT_DIRNAME}/first-dir/dir1/dir2/dir3/dir4/dir5/dir6/file1,v <-- file1
initial revision: 1.1
done
RCS file: ${CVSROOT_DIRNAME}/first-dir/dir1/dir2/dir3/dir4/dir5/dir6/dir7/file1,v
done
Checking in first-dir/dir1/dir2/dir3/dir4/dir5/dir6/dir7/file1;
${CVSROOT_DIRNAME}/first-dir/dir1/dir2/dir3/dir4/dir5/dir6/dir7/file1,v <-- file1
initial revision: 1.1
done
RCS file: ${CVSROOT_DIRNAME}/first-dir/dir1/dir2/dir3/dir4/dir5/dir6/dir7/dir8/file1,v
done
Checking in first-dir/dir1/dir2/dir3/dir4/dir5/dir6/dir7/dir8/file1;
${CVSROOT_DIRNAME}/first-dir/dir1/dir2/dir3/dir4/dir5/dir6/dir7/dir8/file1,v <-- file1
initial revision: 1.1
done
HERE
cd first-dir/dir1/dir2/dir3/dir4/dir5/dir6/dir7/dir8
rm file1
dotest deep-4a0 "${testcvs} rm file1" \
"${PROG} remove: scheduling .file1. for removal
${PROG} remove: use .${PROG} commit. to remove this file permanently"
dotest deep-4a1 "${testcvs} -q ci -m rm-it" "Removing file1;
${CVSROOT_DIRNAME}/first-dir/dir1/dir2/dir3/dir4/dir5/dir6/dir7/dir8/file1,v <-- file1
new revision: delete; previous revision: 1\.1
done"
cd ../../..
dotest deep-4a2 "${testcvs} -q update -P dir6/dir7" ''
dotest_fail deep-4a3 "test -d dir6/dir7/dir8" ''
rm -r dir6
dotest deep-4b0a "${testcvs} -q diff" ''
dotest deep-4b0b "${testcvs} -q ci" ''
dotest deep-4b1 "${testcvs} -q update" ''
dotest deep-4b2 "${testcvs} -q update -d -P" \
'U dir6/file1
U dir6/dir7/file1'
cd dir6/dir7
dotest deep-rm1 "${testcvs} rm -f file1" \
"${PROG} remove: scheduling .file1. for removal
${PROG} remove: use .${PROG} commit. to remove this file permanently"
cd ..
dotest deep-rm2 "${testcvs} -q update -d -P" 'R dir7/file1'
dotest deep-rm3 "test -d dir7" ''
dotest deep-rm4 "${testcvs} -q ci -m rm-it" "Removing dir7/file1;
${CVSROOT_DIRNAME}/first-dir/dir1/dir2/dir3/dir4/dir5/dir6/dir7/file1,v <-- file1
new revision: delete; previous revision: 1\.1
done"
dotest deep-rm5 "${testcvs} -q update -d -P" ''
dotest_fail deep-rm6 "test -d dir7" ''
cd ../..
dotest deep-rm7 "${testcvs} rm -f -R dir5" \
"${PROG} remove: Removing dir5
${PROG} remove: scheduling .dir5/file1. for removal
${PROG} remove: Removing dir5/dir6
${PROG} remove: scheduling .dir5/dir6/file1. for removal
${PROG} remove: use .${PROG} commit. to remove these files permanently"
dotest deep-rm8 "${testcvs} -q ci -m rm-it" \
"Removing dir5/file1;
${CVSROOT_DIRNAME}/first-dir/dir1/dir2/dir3/dir4/dir5/file1,v <-- file1
new revision: delete; previous revision: 1\.1
done
Removing dir5/dir6/file1;
${CVSROOT_DIRNAME}/first-dir/dir1/dir2/dir3/dir4/dir5/dir6/file1,v <-- file1
new revision: delete; previous revision: 1\.1
done"
dotest deep-rm9 "${testcvs} -q update -d -P" ''
dotest_fail deep-rm10 "test -d dir5"
cd ../../../../..
if echo "yes" | ${testcvs} release -d first-dir >>${LOGFILE}; then
pass deep-5
else
fail deep-5
fi
rm -rf ${CVSROOT_DIRNAME}/first-dir
;;
basic2)
rm ${CVSROOT_DIRNAME}/CVSROOT/history
touch ${CVSROOT_DIRNAME}/CVSROOT/history
mkdir ${CVSROOT_DIRNAME}/first-dir
dotest basic2-1 "${testcvs} -q co first-dir" ''
for i in first-dir dir1 dir2 ; do
if test ! -d $i ; then
mkdir $i
dotest basic2-2-$i "${testcvs} add $i" \
"Directory ${CVSROOT_DIRNAME}/.*/$i added to the repository"
fi
cd $i
for j in file6 file7; do
echo $j > $j
done
dotest basic2-3-$i "${testcvs} add file6 file7" \
"${PROG} add: scheduling file .file6. for addition
${PROG} add: scheduling file .file7. for addition
${PROG} add: use .${PROG} commit. to add these files permanently"
done
cd ../../..
dotest basic2-4 "${testcvs} update first-dir" \
"${PROG} update: Updating first-dir
A first-dir/file6
A first-dir/file7
${PROG} update: Updating first-dir/dir1
A first-dir/dir1/file6
A first-dir/dir1/file7
${PROG} update: Updating first-dir/dir1/dir2
A first-dir/dir1/dir2/file6
A first-dir/dir1/dir2/file7"
dotest basic2-5 "${testcvs} log first-dir" \
"${PROG} log: Logging first-dir
${PROG} log: file6 has been added, but not committed
${PROG} log: file7 has been added, but not committed
${PROG} log: Logging first-dir/dir1
${PROG} log: file6 has been added, but not committed
${PROG} log: file7 has been added, but not committed
${PROG} log: Logging first-dir/dir1/dir2
${PROG} log: file6 has been added, but not committed
${PROG} log: file7 has been added, but not committed"
dotest basic2-6 "${testcvs} status first-dir" \
"${PROG} status: Examining first-dir
===================================================================
File: file6 Status: Locally Added
Working revision: New file!
Repository revision: No revision control file
Sticky Tag: (none)
Sticky Date: (none)
Sticky Options: (none)
===================================================================
File: file7 Status: Locally Added
Working revision: New file!
Repository revision: No revision control file
Sticky Tag: (none)
Sticky Date: (none)
Sticky Options: (none)
${PROG} status: Examining first-dir/dir1
===================================================================
File: file6 Status: Locally Added
Working revision: New file!
Repository revision: No revision control file
Sticky Tag: (none)
Sticky Date: (none)
Sticky Options: (none)
===================================================================
File: file7 Status: Locally Added
Working revision: New file!
Repository revision: No revision control file
Sticky Tag: (none)
Sticky Date: (none)
Sticky Options: (none)
${PROG} status: Examining first-dir/dir1/dir2
===================================================================
File: file6 Status: Locally Added
Working revision: New file!
Repository revision: No revision control file
Sticky Tag: (none)
Sticky Date: (none)
Sticky Options: (none)
===================================================================
File: file7 Status: Locally Added
Working revision: New file!
Repository revision: No revision control file
Sticky Tag: (none)
Sticky Date: (none)
Sticky Options: (none)"
dotest basic2-8 "${testcvs} -q ci -m 'second dive' first-dir" \
"RCS file: ${CVSROOT_DIRNAME}/first-dir/file6,v
done
Checking in first-dir/file6;
${CVSROOT_DIRNAME}/first-dir/file6,v <-- file6
initial revision: 1\.1
done
RCS file: ${CVSROOT_DIRNAME}/first-dir/file7,v
done
Checking in first-dir/file7;
${CVSROOT_DIRNAME}/first-dir/file7,v <-- file7
initial revision: 1\.1
done
RCS file: ${CVSROOT_DIRNAME}/first-dir/dir1/file6,v
done
Checking in first-dir/dir1/file6;
${CVSROOT_DIRNAME}/first-dir/dir1/file6,v <-- file6
initial revision: 1\.1
done
RCS file: ${CVSROOT_DIRNAME}/first-dir/dir1/file7,v
done
Checking in first-dir/dir1/file7;
${CVSROOT_DIRNAME}/first-dir/dir1/file7,v <-- file7
initial revision: 1\.1
done
RCS file: ${CVSROOT_DIRNAME}/first-dir/dir1/dir2/file6,v
done
Checking in first-dir/dir1/dir2/file6;
${CVSROOT_DIRNAME}/first-dir/dir1/dir2/file6,v <-- file6
initial revision: 1\.1
done
RCS file: ${CVSROOT_DIRNAME}/first-dir/dir1/dir2/file7,v
done
Checking in first-dir/dir1/dir2/file7;
${CVSROOT_DIRNAME}/first-dir/dir1/dir2/file7,v <-- file7
initial revision: 1\.1
done"
dotest basic2-9 "${testcvs} tag second-dive first-dir" \
"${PROG} tag: Tagging first-dir
T first-dir/file6
T first-dir/file7
${PROG} tag: Tagging first-dir/dir1
T first-dir/dir1/file6
T first-dir/dir1/file7
${PROG} tag: Tagging first-dir/dir1/dir2
T first-dir/dir1/dir2/file6
T first-dir/dir1/dir2/file7"
for i in first-dir dir1 dir2 ; do
cd $i
echo file6 >>file6
rm file7
dotest basic2-10-$i "${testcvs} rm file7" \
"${PROG} remove: scheduling .file7. for removal
${PROG} remove: use .${PROG} commit. to remove this file permanently"
echo file14 >file14
dotest basic2-11-$i "${testcvs} add file14" \
"${PROG} add: scheduling file .file14. for addition
${PROG} add: use .${PROG} commit. to add this file permanently"
done
cd ../../..
dotest basic2-12 "${testcvs} update first-dir" \
"${PROG} update: Updating first-dir
A first-dir/file14
M first-dir/file6
R first-dir/file7
${PROG} update: Updating first-dir/dir1
A first-dir/dir1/file14
M first-dir/dir1/file6
R first-dir/dir1/file7
${PROG} update: Updating first-dir/dir1/dir2
A first-dir/dir1/dir2/file14
M first-dir/dir1/dir2/file6
R first-dir/dir1/dir2/file7"
dotest basic2-13 "${testcvs} log first-dir" \
"${PROG} log: Logging first-dir
${PROG} log: file14 has been added, but not committed
RCS file: ${CVSROOT_DIRNAME}/first-dir/file6,v
Working file: first-dir/file6
head: 1\.1
branch:
locks: strict
access list:
symbolic names:
second-dive: 1\.1
keyword substitution: kv
total revisions: 1; selected revisions: 1
description:
----------------------------
revision 1\.1
date: [0-9/]* [0-9:]*; author: ${username}; state: Exp;
second dive
=============================================================================
RCS file: ${CVSROOT_DIRNAME}/first-dir/file7,v
Working file: first-dir/file7
head: 1\.1
branch:
locks: strict
access list:
symbolic names:
second-dive: 1\.1
keyword substitution: kv
total revisions: 1; selected revisions: 1
description:
----------------------------
revision 1\.1
date: [0-9/]* [0-9:]*; author: ${username}; state: Exp;
second dive
=============================================================================
${PROG} log: Logging first-dir/dir1
${PROG} log: file14 has been added, but not committed
RCS file: ${CVSROOT_DIRNAME}/first-dir/dir1/file6,v
Working file: first-dir/dir1/file6
head: 1\.1
branch:
locks: strict
access list:
symbolic names:
second-dive: 1\.1
keyword substitution: kv
total revisions: 1; selected revisions: 1
description:
----------------------------
revision 1\.1
date: [0-9/]* [0-9:]*; author: ${username}; state: Exp;
second dive
=============================================================================
RCS file: ${CVSROOT_DIRNAME}/first-dir/dir1/file7,v
Working file: first-dir/dir1/file7
head: 1\.1
branch:
locks: strict
access list:
symbolic names:
second-dive: 1\.1
keyword substitution: kv
total revisions: 1; selected revisions: 1
description:
----------------------------
revision 1\.1
date: [0-9/]* [0-9:]*; author: ${username}; state: Exp;
second dive
=============================================================================
${PROG} log: Logging first-dir/dir1/dir2
${PROG} log: file14 has been added, but not committed
RCS file: ${CVSROOT_DIRNAME}/first-dir/dir1/dir2/file6,v
Working file: first-dir/dir1/dir2/file6
head: 1\.1
branch:
locks: strict
access list:
symbolic names:
second-dive: 1\.1
keyword substitution: kv
total revisions: 1; selected revisions: 1
description:
----------------------------
revision 1\.1
date: [0-9/]* [0-9:]*; author: ${username}; state: Exp;
second dive
=============================================================================
RCS file: ${CVSROOT_DIRNAME}/first-dir/dir1/dir2/file7,v
Working file: first-dir/dir1/dir2/file7
head: 1\.1
branch:
locks: strict
access list:
symbolic names:
second-dive: 1\.1
keyword substitution: kv
total revisions: 1; selected revisions: 1
description:
----------------------------
revision 1\.1
date: [0-9/]* [0-9:]*; author: ${username}; state: Exp;
second dive
============================================================================="
dotest basic2-14 "${testcvs} status first-dir" \
"${PROG} status: Examining first-dir
===================================================================
File: file14 Status: Locally Added
Working revision: New file!
Repository revision: No revision control file
Sticky Tag: (none)
Sticky Date: (none)
Sticky Options: (none)
===================================================================
File: file6 Status: Locally Modified
Working revision: 1\.1.*
Repository revision: 1\.1 ${CVSROOT_DIRNAME}/first-dir/file6,v
Sticky Tag: (none)
Sticky Date: (none)
Sticky Options: (none)
===================================================================
File: no file file7 Status: Locally Removed
Working revision: -1\.1.*
Repository revision: 1\.1 ${CVSROOT_DIRNAME}/first-dir/file7,v
Sticky Tag: (none)
Sticky Date: (none)
Sticky Options: (none)
${PROG} status: Examining first-dir/dir1
===================================================================
File: file14 Status: Locally Added
Working revision: New file!
Repository revision: No revision control file
Sticky Tag: (none)
Sticky Date: (none)
Sticky Options: (none)
===================================================================
File: file6 Status: Locally Modified
Working revision: 1\.1.*
Repository revision: 1\.1 ${CVSROOT_DIRNAME}/first-dir/dir1/file6,v
Sticky Tag: (none)
Sticky Date: (none)
Sticky Options: (none)
===================================================================
File: no file file7 Status: Locally Removed
Working revision: -1\.1.*
Repository revision: 1\.1 ${CVSROOT_DIRNAME}/first-dir/dir1/file7,v
Sticky Tag: (none)
Sticky Date: (none)
Sticky Options: (none)
${PROG} status: Examining first-dir/dir1/dir2
===================================================================
File: file14 Status: Locally Added
Working revision: New file!
Repository revision: No revision control file
Sticky Tag: (none)
Sticky Date: (none)
Sticky Options: (none)
===================================================================
File: file6 Status: Locally Modified
Working revision: 1\.1.*
Repository revision: 1\.1 ${CVSROOT_DIRNAME}/first-dir/dir1/dir2/file6,v
Sticky Tag: (none)
Sticky Date: (none)
Sticky Options: (none)
===================================================================
File: no file file7 Status: Locally Removed
Working revision: -1\.1.*
Repository revision: 1\.1 ${CVSROOT_DIRNAME}/first-dir/dir1/dir2/file7,v
Sticky Tag: (none)
Sticky Date: (none)
Sticky Options: (none)"
dotest basic2-16 "${testcvs} ci -m 'third dive' first-dir" \
"${PROG} [a-z]*: Examining first-dir
${PROG} [a-z]*: Examining first-dir/dir1
${PROG} [a-z]*: Examining first-dir/dir1/dir2
RCS file: ${CVSROOT_DIRNAME}/first-dir/file14,v
done
Checking in first-dir/file14;
${CVSROOT_DIRNAME}/first-dir/file14,v <-- file14
initial revision: 1\.1
done
Checking in first-dir/file6;
${CVSROOT_DIRNAME}/first-dir/file6,v <-- file6
new revision: 1\.2; previous revision: 1\.1
done
Removing first-dir/file7;
${CVSROOT_DIRNAME}/first-dir/file7,v <-- file7
new revision: delete; previous revision: 1\.1
done
RCS file: ${CVSROOT_DIRNAME}/first-dir/dir1/file14,v
done
Checking in first-dir/dir1/file14;
${CVSROOT_DIRNAME}/first-dir/dir1/file14,v <-- file14
initial revision: 1\.1
done
Checking in first-dir/dir1/file6;
${CVSROOT_DIRNAME}/first-dir/dir1/file6,v <-- file6
new revision: 1\.2; previous revision: 1\.1
done
Removing first-dir/dir1/file7;
${CVSROOT_DIRNAME}/first-dir/dir1/file7,v <-- file7
new revision: delete; previous revision: 1\.1
done
RCS file: ${CVSROOT_DIRNAME}/first-dir/dir1/dir2/file14,v
done
Checking in first-dir/dir1/dir2/file14;
${CVSROOT_DIRNAME}/first-dir/dir1/dir2/file14,v <-- file14
initial revision: 1\.1
done
Checking in first-dir/dir1/dir2/file6;
${CVSROOT_DIRNAME}/first-dir/dir1/dir2/file6,v <-- file6
new revision: 1\.2; previous revision: 1\.1
done
Removing first-dir/dir1/dir2/file7;
${CVSROOT_DIRNAME}/first-dir/dir1/dir2/file7,v <-- file7
new revision: delete; previous revision: 1\.1
done"
dotest basic2-17 "${testcvs} -q update first-dir" ''
dotest basic2-18 "${testcvs} tag third-dive first-dir" \
"${PROG} tag: Tagging first-dir
T first-dir/file14
T first-dir/file6
${PROG} tag: Tagging first-dir/dir1
T first-dir/dir1/file14
T first-dir/dir1/file6
${PROG} tag: Tagging first-dir/dir1/dir2
T first-dir/dir1/dir2/file14
T first-dir/dir1/dir2/file6"
dotest basic2-19 "echo yes | ${testcvs} release -d first-dir" \
"You have \[0\] altered files in this repository\.
Are you sure you want to release (and delete) directory .first-dir.: "
dotest_fail basic2-20 "test -d first-dir" ""
dotest basic2-21 "${testcvs} rtag rtagged-by-head first-dir" \
"${PROG} rtag: Tagging first-dir
${PROG} rtag: Tagging first-dir/dir1
${PROG} rtag: Tagging first-dir/dir1/dir2"
dotest basic2-21b "${testcvs} co -p -r rtagged-by-head first-dir/file6" \
"===================================================================
Checking out first-dir/file6
RCS: $CVSROOT_DIRNAME/first-dir/file6,v
VERS: 1\.2
\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*
file6
file6"
dotest basic2-22 "${testcvs} rtag -r rtagged-by-head rtagged-by-tag first-dir" \
"${PROG} rtag: Tagging first-dir
${PROG} rtag: Tagging first-dir/dir1
${PROG} rtag: Tagging first-dir/dir1/dir2"
dotest basic2-23 "${testcvs} rtag -r1.1 rtagged-by-revision first-dir" \
"${PROG} rtag: Tagging first-dir
${PROG} rtag: Tagging first-dir/dir1
${PROG} rtag: Tagging first-dir/dir1/dir2"
dotest basic2-24 "${testcvs} rdiff -r1.1 -rrtagged-by-head first-dir" \
"${PROG} rdiff: Diffing first-dir
Index: first-dir/file6
diff -c first-dir/file6:1\.1 first-dir/file6:1\.2
\*\*\* first-dir/file6:1\.1 ${DATE}
--- first-dir/file6 ${DATE}
\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*
\*\*\* 1 \*\*\*\*
--- 1,2 ----
file6
${PLUS} file6
Index: first-dir/file7
diff -c first-dir/file7:1\.1 first-dir/file7:removed
\*\*\* first-dir/file7:1.1 ${DATE}
--- first-dir/file7 ${DATE}
\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*
\*\*\* 1 \*\*\*\*
- file7
--- 0 ----
${PROG} rdiff: Diffing first-dir/dir1
Index: first-dir/dir1/file6
diff -c first-dir/dir1/file6:1\.1 first-dir/dir1/file6:1\.2
\*\*\* first-dir/dir1/file6:1\.1 ${DATE}
--- first-dir/dir1/file6 ${DATE}
\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*
\*\*\* 1 \*\*\*\*
--- 1,2 ----
file6
${PLUS} file6
Index: first-dir/dir1/file7
diff -c first-dir/dir1/file7:1\.1 first-dir/dir1/file7:removed
\*\*\* first-dir/dir1/file7:1\.1 ${DATE}
--- first-dir/dir1/file7 ${DATE}
\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*
\*\*\* 1 \*\*\*\*
- file7
--- 0 ----
${PROG} rdiff: Diffing first-dir/dir1/dir2
Index: first-dir/dir1/dir2/file6
diff -c first-dir/dir1/dir2/file6:1\.1 first-dir/dir1/dir2/file6:1\.2
\*\*\* first-dir/dir1/dir2/file6:1\.1 ${DATE}
--- first-dir/dir1/dir2/file6 ${DATE}
\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*
\*\*\* 1 \*\*\*\*
--- 1,2 ----
file6
${PLUS} file6
Index: first-dir/dir1/dir2/file7
diff -c first-dir/dir1/dir2/file7:1\.1 first-dir/dir1/dir2/file7:removed
\*\*\* first-dir/dir1/dir2/file7:1\.1 ${DATE}
--- first-dir/dir1/dir2/file7 ${DATE}
\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*
\*\*\* 1 \*\*\*\*
- file7
--- 0 ----"
dotest basic2-24a "${testcvs} rdiff -l -r1.1 -rrtagged-by-head first-dir" \
"${PROG} rdiff: Diffing first-dir
Index: first-dir/file6
diff -c first-dir/file6:1\.1 first-dir/file6:1\.2
\*\*\* first-dir/file6:1\.1 ${DATE}
--- first-dir/file6 ${DATE}
\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*
\*\*\* 1 \*\*\*\*
--- 1,2 ----
file6
${PLUS} file6
Index: first-dir/file7
diff -c first-dir/file7:1\.1 first-dir/file7:removed
\*\*\* first-dir/file7:1.1 ${DATE}
--- first-dir/file7 ${DATE}
\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*
\*\*\* 1 \*\*\*\*
- file7
--- 0 ----"
dotest basic2-25 "${testcvs} export -r rtagged-by-head -d 1dir first-dir" \
"${PROG} export: Updating 1dir
U 1dir/file14
U 1dir/file6
${PROG} export: Updating 1dir/dir1
U 1dir/dir1/file14
U 1dir/dir1/file6
${PROG} export: Updating 1dir/dir1/dir2
U 1dir/dir1/dir2/file14
U 1dir/dir1/dir2/file6"
dotest_fail basic2-25a "test -d 1dir/CVS"
dotest_fail basic2-25b "test -d 1dir/dir1/CVS"
dotest_fail basic2-25c "test -d 1dir/dir1/dir2/CVS"
dotest basic2-26 "${testcvs} export -r rtagged-by-tag first-dir" \
"${PROG} export: Updating first-dir
U first-dir/file14
U first-dir/file6
${PROG} export: Updating first-dir/dir1
U first-dir/dir1/file14
U first-dir/dir1/file6
${PROG} export: Updating first-dir/dir1/dir2
U first-dir/dir1/dir2/file14
U first-dir/dir1/dir2/file6"
dotest_fail basic2-26a "test -d first-dir/CVS"
dotest_fail basic2-26b "test -d first-dir/dir1/CVS"
dotest_fail basic2-26c "test -d first-dir/dir1/dir2/CVS"
dotest basic2-27 "directory_cmp 1dir first-dir"
rm -r 1dir first-dir
mkdir export-dir
dotest basic2-28 "${testcvs} export -rrtagged-by-revision -d export-dir first-dir" \
"${PROG} export: Updating export-dir
U export-dir/file14
U export-dir/file6
U export-dir/file7
${PROG} export: Updating export-dir/dir1
U export-dir/dir1/file14
U export-dir/dir1/file6
U export-dir/dir1/file7
${PROG} export: Updating export-dir/dir1/dir2
U export-dir/dir1/dir2/file14
U export-dir/dir1/dir2/file6
U export-dir/dir1/dir2/file7"
dotest_fail basic2-28a "test -d export-dir/CVS"
dotest_fail basic2-28b "test -d export-dir/dir1/CVS"
dotest_fail basic2-28c "test -d export-dir/dir1/dir2/CVS"
dotest basic2-29 "${testcvs} co -r1.1 first-dir" \
"${PROG} checkout: Updating first-dir
U first-dir/file14
U first-dir/file6
U first-dir/file7
${PROG} checkout: Updating first-dir/dir1
U first-dir/dir1/file14
U first-dir/dir1/file6
U first-dir/dir1/file7
${PROG} checkout: Updating first-dir/dir1/dir2
U first-dir/dir1/dir2/file14
U first-dir/dir1/dir2/file6
U first-dir/dir1/dir2/file7"
mkdir first-dir.cpy ; (cd first-dir ; tar cf - . | (cd ../first-dir.cpy ; tar xf -))
dotest basic2-30 "directory_cmp first-dir export-dir"
cd export-dir
dotest_sort basic2-31 "${testcvs} import -m first-import second-dir first-immigration immigration1 immigration1_0" \
"
N second-dir/dir1/dir2/file14
N second-dir/dir1/dir2/file6
N second-dir/dir1/dir2/file7
N second-dir/dir1/file14
N second-dir/dir1/file6
N second-dir/dir1/file7
N second-dir/file14
N second-dir/file6
N second-dir/file7
No conflicts created by this import
${PROG} import: Importing ${CVSROOT_DIRNAME}/second-dir/dir1
${PROG} import: Importing ${CVSROOT_DIRNAME}/second-dir/dir1/dir2"
cd ..
dotest basic2-32 "${testcvs} export -r HEAD second-dir" \
"${PROG} export: Updating second-dir
U second-dir/file14
U second-dir/file6
U second-dir/file7
${PROG} export: Updating second-dir/dir1
U second-dir/dir1/file14
U second-dir/dir1/file6
U second-dir/dir1/file7
${PROG} export: Updating second-dir/dir1/dir2
U second-dir/dir1/dir2/file14
U second-dir/dir1/dir2/file6
U second-dir/dir1/dir2/file7"
dotest basic2-33 "directory_cmp first-dir second-dir"
rm -r second-dir
rm -r export-dir first-dir
mkdir first-dir
(cd first-dir.cpy ; tar cf - . | (cd ../first-dir ; tar xf -))
cd first-dir
dotest basic2-34 "${testcvs} update -A -l *file*" \
"[UP] file6
${PROG} update: file7 is no longer in the repository"
dotest basic2-35 "${testcvs} tag -l -d rtagged-by-revision" \
"${PROG} tag: Untagging \.
D file14
D file6"
dotest basic2-36 "${testcvs} tag -l rtagged-by-revision" \
"${PROG} tag: Tagging \.
T file14
T file6"
cd ..
mv first-dir 1dir
mv first-dir.cpy first-dir
cd first-dir
dotest basic2-37 "${testcvs} -q diff -u" ''
dotest basic2-38 "${testcvs} update" \
"${PROG} update: Updating .
${PROG} update: Updating dir1
${PROG} update: Updating dir1/dir2"
cd ..
rm -r 1dir first-dir
dotest basic2-64 "${testcvs} his -x TOFWUPCGMAR -a" \
"O [0-9-]* [0-9:]* ${PLUS}0000 ${username} first-dir =first-dir= ${TESTDIR}/\*
A [0-9-]* [0-9:]* ${PLUS}0000 ${username} 1\.1 file6 first-dir == ${TESTDIR}
A [0-9-]* [0-9:]* ${PLUS}0000 ${username} 1\.1 file7 first-dir == ${TESTDIR}
A [0-9-]* [0-9:]* ${PLUS}0000 ${username} 1\.1 file6 first-dir/dir1 == ${TESTDIR}
A [0-9-]* [0-9:]* ${PLUS}0000 ${username} 1\.1 file7 first-dir/dir1 == ${TESTDIR}
A [0-9-]* [0-9:]* ${PLUS}0000 ${username} 1\.1 file6 first-dir/dir1/dir2 == ${TESTDIR}
A [0-9-]* [0-9:]* ${PLUS}0000 ${username} 1\.1 file7 first-dir/dir1/dir2 == ${TESTDIR}
A [0-9-]* [0-9:]* ${PLUS}0000 ${username} 1\.1 file14 first-dir == ${TESTDIR}
M [0-9-]* [0-9:]* ${PLUS}0000 ${username} 1\.2 file6 first-dir == ${TESTDIR}
R [0-9-]* [0-9:]* ${PLUS}0000 ${username} 1\.2 file7 first-dir == ${TESTDIR}
A [0-9-]* [0-9:]* ${PLUS}0000 ${username} 1\.1 file14 first-dir/dir1 == ${TESTDIR}
M [0-9-]* [0-9:]* ${PLUS}0000 ${username} 1\.2 file6 first-dir/dir1 == ${TESTDIR}
R [0-9-]* [0-9:]* ${PLUS}0000 ${username} 1\.2 file7 first-dir/dir1 == ${TESTDIR}
A [0-9-]* [0-9:]* ${PLUS}0000 ${username} 1\.1 file14 first-dir/dir1/dir2 == ${TESTDIR}
M [0-9-]* [0-9:]* ${PLUS}0000 ${username} 1\.2 file6 first-dir/dir1/dir2 == ${TESTDIR}
R [0-9-]* [0-9:]* ${PLUS}0000 ${username} 1\.2 file7 first-dir/dir1/dir2 == ${TESTDIR}
F [0-9-]* [0-9:]* ${PLUS}0000 ${username} =first-dir= ${TESTDIR}/\*
T [0-9-]* [0-9:]* ${PLUS}0000 ${username} first-dir \[rtagged-by-head:A\]
T [0-9-]* [0-9:]* ${PLUS}0000 ${username} first-dir \[rtagged-by-tag:rtagged-by-head\]
T [0-9-]* [0-9:]* ${PLUS}0000 ${username} first-dir \[rtagged-by-revision:1\.1\]
O [0-9-]* [0-9:]* ${PLUS}0000 ${username} \[1\.1\] first-dir =first-dir= ${TESTDIR}/\*
U [0-9-]* [0-9:]* ${PLUS}0000 ${username} 1\.2 file6 first-dir == ${TESTDIR}/first-dir
W [0-9-]* [0-9:]* ${PLUS}0000 ${username} file7 first-dir == ${TESTDIR}/first-dir" \
"O [0-9-]* [0-9:]* ${PLUS}0000 ${username} first-dir =first-dir= <remote>/\*
A [0-9-]* [0-9:]* ${PLUS}0000 ${username} 1\.1 file6 first-dir == <remote>
A [0-9-]* [0-9:]* ${PLUS}0000 ${username} 1\.1 file7 first-dir == <remote>
A [0-9-]* [0-9:]* ${PLUS}0000 ${username} 1\.1 file6 first-dir/dir1 == <remote>
A [0-9-]* [0-9:]* ${PLUS}0000 ${username} 1\.1 file7 first-dir/dir1 == <remote>
A [0-9-]* [0-9:]* ${PLUS}0000 ${username} 1\.1 file6 first-dir/dir1/dir2 == <remote>
A [0-9-]* [0-9:]* ${PLUS}0000 ${username} 1\.1 file7 first-dir/dir1/dir2 == <remote>
A [0-9-]* [0-9:]* ${PLUS}0000 ${username} 1\.1 file14 first-dir == <remote>
M [0-9-]* [0-9:]* ${PLUS}0000 ${username} 1\.2 file6 first-dir == <remote>
R [0-9-]* [0-9:]* ${PLUS}0000 ${username} 1\.2 file7 first-dir == <remote>
A [0-9-]* [0-9:]* ${PLUS}0000 ${username} 1\.1 file14 first-dir/dir1 == <remote>
M [0-9-]* [0-9:]* ${PLUS}0000 ${username} 1\.2 file6 first-dir/dir1 == <remote>
R [0-9-]* [0-9:]* ${PLUS}0000 ${username} 1\.2 file7 first-dir/dir1 == <remote>
A [0-9-]* [0-9:]* ${PLUS}0000 ${username} 1\.1 file14 first-dir/dir1/dir2 == <remote>
M [0-9-]* [0-9:]* ${PLUS}0000 ${username} 1\.2 file6 first-dir/dir1/dir2 == <remote>
R [0-9-]* [0-9:]* ${PLUS}0000 ${username} 1\.2 file7 first-dir/dir1/dir2 == <remote>
F [0-9-]* [0-9:]* ${PLUS}0000 ${username} =first-dir= <remote>/\*
T [0-9-]* [0-9:]* ${PLUS}0000 ${username} first-dir \[rtagged-by-head:A\]
T [0-9-]* [0-9:]* ${PLUS}0000 ${username} first-dir \[rtagged-by-tag:rtagged-by-head\]
T [0-9-]* [0-9:]* ${PLUS}0000 ${username} first-dir \[rtagged-by-revision:1\.1\]
O [0-9-]* [0-9:]* ${PLUS}0000 ${username} \[1\.1\] first-dir =first-dir= <remote>/\*
P [0-9-]* [0-9:]* ${PLUS}0000 ${username} 1\.2 file6 first-dir == <remote>
W [0-9-]* [0-9:]* ${PLUS}0000 ${username} file7 first-dir == <remote>"
rm -rf ${CVSROOT_DIRNAME}/first-dir
rm -rf ${CVSROOT_DIRNAME}/second-dir
;;
parseroot)
mkdir 1; cd 1
CVSROOT_save=${CVSROOT}
CVSROOT="${CVSROOT}/////"
dotest parseroot-1 "${testcvs} -q co CVSROOT/modules" \
"U CVSROOT/modules"
dotest parseroot-2 "${testcvs} -q ci -fmnull-change CVSROOT/modules" \
"Checking in CVSROOT/modules;
${CVSROOT_DIRNAME}/CVSROOT/modules,v <-- modules
new revision: 1\.2; previous revision: 1\.1
done
${PROG} commit: Rebuilding administrative file database"
if $remote; then
CVSROOT=":pserver;proxy=localhost;proxyport=8080:localhost/dev/null"
dotest parseroot-3r "$testcvs -d'$CVSROOT' logout" \
"$PROG logout: WARNING: Ignoring method options found in CVSROOT: \`proxy=localhost;proxyport=8080'\.
$PROG logout: Use CVS version 1\.12\.7 or later to handle method options\.
Logging out of :pserver:$username@localhost:2401/dev/null
$PROG logout: warning: failed to open $HOME/\.cvspass for reading: No such file or directory
$PROG logout: Entry not found\."
fi
if $keep; then
echo Keeping $TESTDIR and exiting due to --keep
exit 0
fi
CVSROOT=$CVSROOT_save
cd ..
rm -r 1
;;
files)
mkdir 1; cd 1
dotest files-1 "${testcvs} -q co -l ." ""
mkdir first-dir
dotest files-2 "${testcvs} add first-dir" \
"Directory ${CVSROOT_DIRNAME}/first-dir added to the repository"
cd first-dir
touch tfile
dotest files-3 "${testcvs} add tfile" \
"${PROG} add: scheduling file .tfile. for addition
${PROG} add: use .${PROG} commit. to add this file permanently"
dotest files-4 "${testcvs} -q ci -m add" \
"RCS file: ${CVSROOT_DIRNAME}/first-dir/tfile,v
done
Checking in tfile;
${CVSROOT_DIRNAME}/first-dir/tfile,v <-- tfile
initial revision: 1\.1
done"
dotest files-5 "${testcvs} -q tag -b C" "T tfile"
dotest files-6 "${testcvs} -q update -r C" ""
mkdir dir
dotest files-7 "${testcvs} add dir" \
"Directory ${CVSROOT_DIRNAME}/first-dir/dir added to the repository
--> Using per-directory sticky tag .C'"
cd dir
touch .file
dotest files-6 "${testcvs} add .file" \
"${PROG} add: scheduling file .\.file' for addition on branch .C.
${PROG} add: use .${PROG} commit. to add this file permanently"
mkdir sdir
dotest files-7 "${testcvs} add sdir" \
"Directory ${CVSROOT_DIRNAME}/first-dir/dir/sdir added to the repository
--> Using per-directory sticky tag .C'"
cd sdir
mkdir ssdir
dotest files-8 "${testcvs} add ssdir" \
"Directory ${CVSROOT_DIRNAME}/first-dir/dir/sdir/ssdir added to the repository
--> Using per-directory sticky tag .C'"
cd ssdir
touch .file
dotest files-9 "${testcvs} add .file" \
"${PROG} add: scheduling file .\.file' for addition on branch .C.
${PROG} add: use .${PROG} commit. to add this file permanently"
cd ../..
dotest files-10 "${testcvs} -q ci -m test" \
"RCS file: ${CVSROOT_DIRNAME}/first-dir/dir/Attic/\.file,v
done
Checking in \.file;
${CVSROOT_DIRNAME}/first-dir/dir/Attic/\.file,v <-- \.file
new revision: 1\.1\.2\.1; previous revision: 1\.1
done
RCS file: ${CVSROOT_DIRNAME}/first-dir/dir/sdir/ssdir/Attic/\.file,v
done
Checking in sdir/ssdir/\.file;
${CVSROOT_DIRNAME}/first-dir/dir/sdir/ssdir/Attic/\.file,v <-- \.file
new revision: 1\.1\.2\.1; previous revision: 1\.1
done"
dotest files-11 \
"${testcvs} commit -m test -f ./.file ./sdir/ssdir/.file" \
"Checking in \.file;
${CVSROOT_DIRNAME}/first-dir/dir/Attic/\.file,v <-- \.file
new revision: 1\.1\.2\.2; previous revision: 1\.1\.2\.1
done
Checking in \./sdir/ssdir/\.file;
${CVSROOT_DIRNAME}/first-dir/dir/sdir/ssdir/Attic/\.file,v <-- \.file
new revision: 1\.1\.2\.2; previous revision: 1\.1\.2\.1
done"
if $remote; then
dotest_fail files-12 \
"${testcvs} commit -f -m test ./sdir/ssdir/.file ./.file" \
"${PROG} commit: Up-to-date check failed for .\.file'
${PROG} \[commit aborted\]: correct above errors first!"
dotest files-12-workaround \
"${testcvs} commit -f -m test sdir/ssdir/.file .file" \
"Checking in sdir/ssdir/\.file;
${CVSROOT_DIRNAME}/first-dir/dir/sdir/ssdir/Attic/\.file,v <-- \.file
new revision: 1\.1\.2\.3; previous revision: 1\.1\.2\.2
done
Checking in \.file;
${CVSROOT_DIRNAME}/first-dir/dir/Attic/\.file,v <-- \.file
new revision: 1\.1\.2\.3; previous revision: 1\.1\.2\.2
done"
else
dotest files-12 \
"${testcvs} commit -f -m test ./sdir/ssdir/.file ./.file" \
"Checking in \./sdir/ssdir/\.file;
${CVSROOT_DIRNAME}/first-dir/dir/sdir/ssdir/Attic/\.file,v <-- \.file
new revision: 1\.1\.2\.3; previous revision: 1\.1\.2\.2
done
Checking in \.file;
${CVSROOT_DIRNAME}/first-dir/dir/Attic/\.file,v <-- \.file
new revision: 1\.1\.2\.3; previous revision: 1\.1\.2\.2
done"
fi
dotest files-13 \
"${testcvs} commit -fmtest ./sdir/../sdir/ssdir/..///ssdir/.file" \
"Checking in \./sdir/\.\./sdir/ssdir/\.\.///ssdir/\.file;
${CVSROOT_DIRNAME}/first-dir/dir/sdir/ssdir/Attic/\.file,v <-- \.file
new revision: 1\.1\.2\.4; previous revision: 1\.1\.2\.3
done"
if $remote; then
dotest files-14 \
"${testcvs} commit -fmtest ../../first-dir/dir/.file" \
"Checking in \.\./\.\./first-dir/dir/\.file;
${CVSROOT_DIRNAME}/first-dir/dir/Attic/\.file,v <-- .file
new revision: 1\.1\.2\.4; previous revision: 1\.1\.2\.3
done"
else
dotest files-14 \
"${testcvs} commit -fmtest ../../first-dir/dir/.file" \
"Checking in \.\./\.\./first-dir/dir/\.file;
${CVSROOT_DIRNAME}/first-dir/dir/Attic/\.file,v <-- \.file
new revision: 1\.1\.2\.4; previous revision: 1\.1\.2\.3
done"
fi
cd ../../..
rm -r 1
rm -rf ${CVSROOT_DIRNAME}/first-dir
;;
spacefiles)
mkdir 1; cd 1
dotest spacefiles-1 "${testcvs} -q co -l ." ""
touch ./-c
dotest spacefiles-2 "${testcvs} add -- -c" \
"${PROG} add: scheduling file .-c. for addition
${PROG} add: use .${PROG} commit. to add this file permanently"
dotest spacefiles-3 "${testcvs} -q ci -m add" \
"RCS file: ${CVSROOT_DIRNAME}/-c,v
done
Checking in -c;
${CVSROOT_DIRNAME}/-c,v <-- -c
initial revision: 1\.1
done"
mkdir 'first dir'
dotest spacefiles-4 "${testcvs} add 'first dir'" \
"Directory ${CVSROOT_DIRNAME}/first dir added to the repository"
mkdir ./-b
dotest spacefiles-5 "${testcvs} add -- -b" \
"Directory ${CVSROOT_DIRNAME}/-b added to the repository"
cd 'first dir'
touch 'a file'
dotest spacefiles-6 "${testcvs} add 'a file'" \
"${PROG} add: scheduling file .a file. for addition
${PROG} add: use .${PROG} commit. to add this file permanently"
dotest spacefiles-7 "${testcvs} -q ci -m add" \
"RCS file: ${CVSROOT_DIRNAME}/first dir/a file,v
done
Checking in a file;
${CVSROOT_DIRNAME}/first dir/a file,v <-- a file
initial revision: 1\.1
done"
dotest spacefiles-8 "${testcvs} -q tag new-tag" "T a file"
cd ../..
mkdir 2; cd 2
dotest spacefiles-10 "${testcvs} co -- -b" \
"${PROG} checkout: Updating -b"
dotest spacefiles-11 "${testcvs} -q co -- -c" "U \./-c"
rm ./-c
dotest spacefiles-13 "${testcvs} -q co 'first dir'" \
"U first dir/a file"
cd ..
mkdir 3; cd 3
dotest spacefiles-14 "${testcvs} -q co 'first dir/a file'" \
"U first dir/a file"
cd ..
rm -r 1 2 3
rm -rf "${CVSROOT_DIRNAME}/first dir"
rm -r ${CVSROOT_DIRNAME}/-b
rm -f ${CVSROOT_DIRNAME}/-c,v
;;
commit-readonly)
mkdir 1; cd 1
module=x
: > junk
dotest commit-readonly-1 "$testcvs -Q import -m . $module X Y" ''
dotest commit-readonly-2 "$testcvs -Q co $module" ''
cd $module
file=m
echo '$Id''$' > $file
dotest commit-readonly-3 "$testcvs add $file" \
"${PROG} add: scheduling file .$file. for addition
${PROG} add: use .${PROG} commit. to add this file permanently"
dotest commit-readonly-4 "$testcvs -Q ci -m . $file" \
"RCS file: ${CVSROOT_DIRNAME}/$module/$file,v
done
Checking in $file;
${CVSROOT_DIRNAME}/$module/$file,v <-- $file
initial revision: 1\.1
done"
echo line2 >> $file
chmod a-w $file
dotest commit-readonly-5 "$testcvs -Q ci -m . $file" \
"Checking in $file;
${CVSROOT_DIRNAME}/$module/$file,v <-- $file
new revision: 1\.2; previous revision: 1\.1
done"
cd ../..
rm -rf 1
rm -rf ${CVSROOT_DIRNAME}/$module
;;
status)
mkdir status; cd status
dotest status-init-1 "${testcvs} -q co -l ." ""
mkdir first-dir
dotest status-init-2 "${testcvs} add first-dir" \
"Directory ${CVSROOT_DIRNAME}/first-dir added to the repository"
cd first-dir
echo a line >tfile
dotest status-init-3 "${testcvs} add tfile" \
"${PROG} add: scheduling file .tfile. for addition
${PROG} add: use .${PROG} commit. to add this file permanently"
dotest status-init-4 "${testcvs} -q ci -m add" \
"RCS file: ${CVSROOT_DIRNAME}/first-dir/tfile,v
done
Checking in tfile;
${CVSROOT_DIRNAME}/first-dir/tfile,v <-- tfile
initial revision: 1\.1
done"
cd ..
dotest status-init-5 "${testcvs} -q co -dsecond-dir first-dir" \
"U second-dir/tfile"
cd second-dir
echo some junk >>tfile
dotest status-init-6 "${testcvs} -q ci -maline" \
"Checking in tfile;
${CVSROOT_DIRNAME}/first-dir/tfile,v <-- tfile
new revision: 1\.2; previous revision: 1\.1
done"
cd ../first-dir
echo force a conflict >>tfile
dotest status-init-7 "${testcvs} -q up" \
"RCS file: ${CVSROOT_DIRNAME}/first-dir/tfile,v
retrieving revision 1\.1
retrieving revision 1\.2
Merging differences between 1\.1 and 1\.2 into tfile
rcsmerge: warning: conflicts during merge
${PROG} update: conflicts found in tfile
C tfile"
dotest status-1 "${testcvs} status tfile" \
"===================================================================
File: tfile Status: File had conflicts on merge
Working revision: 1\.2.*
Repository revision: 1\.2 ${CVSROOT_DIRNAME}/first-dir/tfile,v
Sticky Tag: (none)
Sticky Date: (none)
Sticky Options: (none)"
touch tfile
dotest status-2 "${testcvs} status tfile" \
"===================================================================
File: tfile Status: File had conflicts on merge
Working revision: 1\.2.*
Repository revision: 1\.2 ${CVSROOT_DIRNAME}/first-dir/tfile,v
Sticky Tag: (none)
Sticky Date: (none)
Sticky Options: (none)"
echo resolution >tfile
dotest status-3 "${testcvs} status tfile" \
"===================================================================
File: tfile Status: Locally Modified
Working revision: 1\.2.*
Repository revision: 1\.2 ${CVSROOT_DIRNAME}/first-dir/tfile,v
Sticky Tag: (none)
Sticky Date: (none)
Sticky Options: (none)"
save_CVSROOT=$CVSROOT
unset CVSROOT
dotest status-3a "${testcvs} status tfile" \
"===================================================================
File: tfile Status: Locally Modified
Working revision: 1\.2.*
Repository revision: 1\.2 ${CVSROOT_DIRNAME}/first-dir/tfile,v
Sticky Tag: (none)
Sticky Date: (none)
Sticky Options: (none)"
CVSROOT=$save_CVSROOT
export CVSROOT
dotest status-4 "grep 'Result of merge' CVS/Entries" \
"/tfile/1\.2/Result of merge${PLUS}[a-zA-Z0-9 :]*//"
cd ..
mkdir fourth-dir
dotest status-init-8 "$testcvs add fourth-dir" \
"Directory $CVSROOT_DIRNAME/fourth-dir added to the repository"
cd fourth-dir
echo yet another line >t3file
dotest status-init-9 "$testcvs add t3file" \
"$PROG add: scheduling file .t3file. for addition
$PROG add: use .$PROG commit. to add this file permanently"
dotest status-init-10 "$testcvs -q ci -m add" \
"RCS file: $CVSROOT_DIRNAME/fourth-dir/t3file,v
done
Checking in t3file;
$CVSROOT_DIRNAME/fourth-dir/t3file,v <-- t3file
initial revision: 1\.1
done"
cd ../first-dir
mkdir third-dir
dotest status-init-11 "$testcvs add third-dir" \
"Directory $CVSROOT_DIRNAME/first-dir/third-dir added to the repository"
cd third-dir
echo another line >t2file
dotest status-init-12 "$testcvs add t2file" \
"$PROG add: scheduling file .t2file. for addition
$PROG add: use .$PROG commit. to add this file permanently"
dotest status-init-13 "$testcvs -q ci -m add" \
"RCS file: $CVSROOT_DIRNAME/first-dir/third-dir/t2file,v
done
Checking in t2file;
$CVSROOT_DIRNAME/first-dir/third-dir/t2file,v <-- t2file
initial revision: 1\.1
done"
dotest status-5 "$testcvs status ../tfile" \
"===================================================================
File: tfile Status: Locally Modified
Working revision: 1\.2.*
Repository revision: 1\.2 $CVSROOT_DIRNAME/first-dir/tfile,v
Sticky Tag: (none)
Sticky Date: (none)
Sticky Options: (none)"
dotest status-6 "$testcvs status ../../fourth-dir/t3file" \
"===================================================================
File: t3file Status: Up-to-date
Working revision: 1\.1.*
Repository revision: 1\.1 $CVSROOT_DIRNAME/fourth-dir/t3file,v
Sticky Tag: (none)
Sticky Date: (none)
Sticky Options: (none)"
if $keep; then
echo Keeping $TESTDIR and exiting due to --keep
exit 0
fi
cd ../../..
rm -rf status
rm -rf $CVSROOT_DIRNAME/first-dir $CVSROOT_DIRNAME/fourth-dir
;;
rdiff)
cd ${TESTDIR}
mkdir testimport
cd testimport
echo '$''Id$' > foo
echo '$''Name$' >> foo
echo '$''Id$' > bar
echo '$''Name$' >> bar
dotest_sort rdiff-1 \
"${testcvs} import -I ! -m test-import-with-keyword trdiff TRDIFF T1" \
'
N trdiff/bar
N trdiff/foo
No conflicts created by this import'
dotest rdiff-2 \
"${testcvs} co -ko trdiff" \
"${PROG} checkout: Updating trdiff
U trdiff/bar
U trdiff/foo"
cd trdiff
echo something >> foo
dotest rdiff-3 \
"${testcvs} ci -m added-something foo" \
"Checking in foo;
${CVSROOT_DIRNAME}/trdiff/foo,v <-- foo
new revision: 1\.2; previous revision: 1\.1
done"
echo ' echo "new file" >> new
dotest rdiff-4 \
"${testcvs} add -m new-file-description new" \
"${PROG} add: scheduling file \`new' for addition
${PROG} add: use .${PROG} commit. to add this file permanently"
dotest rdiff-5 \
"${testcvs} commit -m added-new-file new" \
"RCS file: ${CVSROOT_DIRNAME}/trdiff/new,v
done
Checking in new;
${CVSROOT_DIRNAME}/trdiff/new,v <-- new
initial revision: 1\.1
done"
dotest rdiff-6 \
"${testcvs} tag local-v0" \
"${PROG} tag: Tagging .
T bar
T foo
T new"
dotest rdiff-7 \
"${testcvs} status -v foo" \
"===================================================================
File: foo Status: Up-to-date
Working revision: 1\.2.*
Repository revision: 1\.2 ${CVSROOT_DIRNAME}/trdiff/foo,v
Sticky Tag: (none)
Sticky Date: (none)
Sticky Options: -ko
Existing Tags:
local-v0 (revision: 1\.2)
T1 (revision: 1\.1\.1\.1)
TRDIFF (branch: 1\.1\.1)"
cd ..
rm -r trdiff
dotest rdiff-8 \
"${testcvs} rdiff -r T1 -r local-v0 trdiff" \
"${PROG}"' rdiff: Diffing trdiff
Index: trdiff/foo
diff -c trdiff/foo:1\.1\.1\.1 trdiff/foo:1\.2
\*\*\* trdiff/foo:1\.1\.1\.1 '"${DATE}"'
--- trdiff/foo '"${DATE}"'
\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*
\*\*\* 1,2 \*\*\*\*
! \$''Id: foo,v 1\.1\.1\.1 [0-9/]* [0-9:]* '"${username}"' Exp \$
! \$''Name: T1 \$
--- 1,3 ----
! \$''Id: foo,v 1\.2 [0-9/]* [0-9:]* '"${username}"' Exp \$
! \$''Name: local-v0 \$
! something
Index: trdiff/new
diff -c /dev/null trdiff/new:1\.1
\*\*\* /dev/null '"${DATE}"'
--- trdiff/new '"${DATE}"'
\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*
\*\*\* 0 \*\*\*\*
--- 1,2 ----
'"${PLUS}"' '"${PLUS}"' new file'
if $keep; then
echo Keeping ${TESTDIR} and exiting due to --keep
exit 0
fi
cd ..
rm -r testimport
rm -rf ${CVSROOT_DIRNAME}/trdiff
;;
rdiff-short)
mkdir rdiff-short; cd rdiff-short
mkdir abc
dotest rdiff-short-init-1 \
"${testcvs} -q import -I ! -m initial-import abc vendor initial" \
'
No conflicts created by this import'
dotest rdiff-short-init-2 "${testcvs} -q get abc" ''
cd abc
echo "abc" >file1.txt
dotest rdiff-short-init-3 "${testcvs} add file1.txt" \
"${PROG} add: scheduling file .file1\.txt' for addition
${PROG} add: use .${PROG} commit. to add this file permanently"
dotest rdiff-short-init-4 \
"${testcvs} commit -madd-file1 file1.txt" \
"RCS file: ${CVSROOT_DIRNAME}/abc/file1\.txt,v
done
Checking in file1\.txt;
${CVSROOT_DIRNAME}/abc/file1\.txt,v <-- file1\.txt
initial revision: 1\.1
done"
echo def >>file1.txt
dotest rdiff-short-init-5 \
"${testcvs} commit -mchange-file1 file1.txt" \
"Checking in file1\.txt;
${CVSROOT_DIRNAME}/abc/file1\.txt,v <-- file1\.txt
new revision: 1\.2; previous revision: 1\.1
done"
echo "abc" >file1.txt
dotest rdiff-short-init-6 \
"${testcvs} commit -mrestore-file1-rev1 file1.txt" \
"Checking in file1\.txt;
${CVSROOT_DIRNAME}/abc/file1\.txt,v <-- file1\.txt
new revision: 1\.3; previous revision: 1\.2
done"
dotest rdiff-short-init-7 \
"${testcvs} tag -r 1.1 tag1 file1.txt" \
"T file1\.txt"
dotest rdiff-short-init-8 \
"${testcvs} tag -r 1.2 tag2 file1.txt" \
"T file1\.txt"
dotest rdiff-short-init-9 \
"${testcvs} tag -r 1.3 tag3 file1.txt" \
"T file1\.txt"
echo "abc" >file2.txt
dotest rdiff-short-init-10 \
"${testcvs} add file2.txt" \
"${PROG} add: scheduling file .file2\.txt' for addition
${PROG} add: use .${PROG} commit. to add this file permanently"
dotest rdiff-add-remove-nodiff-init-11 \
"${testcvs} commit -madd-file2 file2.txt" \
"RCS file: ${CVSROOT_DIRNAME}/abc/file2\.txt,v
done
Checking in file2\.txt;
${CVSROOT_DIRNAME}/abc/file2\.txt,v <-- file2\.txt
initial revision: 1\.1
done"
dotest rdiff-short-init-12 \
"${testcvs} tag -r 1.1 tag4 file2.txt" \
"T file2\.txt"
dotest rdiff-short-init-13 \
"${testcvs} tag -r 1.1 tag5 file2.txt" \
"T file2\.txt"
cd ../..
rm -fr rdiff-short
dotest rdiff-short-no-real-change \
"${testcvs} -q rdiff -s -r tag1 -r tag3 abc"
dotest rdiff-short-real-change \
"${testcvs} -q rdiff -s -r tag1 -r tag2 abc" \
'File abc/file1.txt changed from revision 1\.1 to 1\.2'
dotest_sort rdiff-short-remove-add \
"${testcvs} -q rdiff -s -r tag2 -r tag4 abc" \
'File abc/file1\.txt is removed; tag2 revision 1\.2
File abc/file2\.txt is new; tag4 revision 1\.1'
dotest rdiff-short-no-change \
"${testcvs} -q rdiff -s -r tag4 -r tag5 abc"
dotest rdiff-short-against-trunk-1 \
"${testcvs} -q rdiff -s -rtag4 abc" \
"File abc/file1\.txt is new; current revision 1\.3"
dotest rdiff-short-against-trunk-2 \
"${testcvs} -q rdiff -s -rtag2 abc" \
"File abc/file1\.txt changed from revision 1\.2 to 1\.3
File abc/file2\.txt is new; current revision 1\.1"
rm -rf ${CVSROOT_DIRNAME}/abc
;;
rdiff2)
mkdir rdiff2; cd rdiff2
mkdir m; cd m
echo foo >foo
mkdir d
echo bar >d/bar
dotest_sort rdiff2-1 \
"${testcvs} -q import -I ! -m initial-import m vendor initial" \
'
N m/d/bar
N m/foo
No conflicts created by this import'
cd ..
rm -r m
dotest rdiff2-2 "${testcvs} get m" \
"${PROG} checkout: Updating m
U m/foo
${PROG} checkout: Updating m/d
U m/d/bar"
cd m
dotest rdiff2-3 "${testcvs} rm -f foo" \
"${PROG} remove: scheduling .foo. for removal
${PROG} remove: use .${PROG} commit. to remove this file permanently"
dotest rdiff2-4 "${testcvs} commit -m Removed foo" \
"Removing foo;
${CVSROOT_DIRNAME}/m/foo,v <-- foo
new revision: delete; previous revision: 1\.1\.1\.1
done"
echo foo >d/bar
dotest rdiff2-5 "${testcvs} commit -m Changed d/bar" \
"Checking in d/bar;
${CVSROOT_DIRNAME}/m/d/bar,v <-- bar
new revision: 1\.2; previous revision: 1\.1
done"
dotest_fail rdiff2-6 "${testcvs} rdiff -t m" \
"${PROG} rdiff: Diffing m
${PROG} rdiff: Diffing m/d
Index: m/d/bar
diff -c m/d/bar:1\.1\.1\.1 m/d/bar:1\.2
\*\*\* m/d/bar:1\.1\.1\.1 ${DATE}
--- m/d/bar ${DATE}
\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*
\*\*\* 1 \*\*\*\*
! bar
--- 1 ----
! foo"
if $keep; then
echo Keeping ${TESTDIR} and exiting due to --keep
exit 0
fi
cd ../..
rm -rf rdiff2
rm -rf ${CVSROOT_DIRNAME}/m
;;
diff)
mkdir 1; cd 1
dotest diff-1 "${testcvs} -q co -l ." ''
mkdir first-dir
dotest diff-2 "${testcvs} add first-dir" \
"Directory ${CVSROOT_DIRNAME}/first-dir added to the repository"
cd first-dir
dotest_fail diff-3 "${testcvs} diff xyzpdq" \
"${PROG} diff: I know nothing about xyzpdq"
touch abc
dotest diff-4 "${testcvs} add abc" \
"${PROG} add: scheduling file .abc. for addition
${PROG} add: use .${PROG} commit. to add this file permanently"
dotest diff-5 "${testcvs} -q ci -mtest" \
"RCS file: ${CVSROOT_DIRNAME}/first-dir/abc,v
done
Checking in abc;
${CVSROOT_DIRNAME}/first-dir/abc,v <-- abc
initial revision: 1\.1
done"
echo "extern int gethostname ();" >abc
dotest diff-6 "${testcvs} -q ci -mtest" \
"Checking in abc;
${CVSROOT_DIRNAME}/first-dir/abc,v <-- abc
new revision: 1\.2; previous revision: 1\.1
done"
echo "#include <winsock.h>" >abc
dotest_fail diff-7 "${testcvs} -q diff --ifdef=HAVE_WINSOCK_H" \
"Index: abc
===================================================================
RCS file: ${CVSROOT_DIRNAME}/first-dir/abc,v
retrieving revision 1\.2
diff --ifdef=HAVE_WINSOCK_H -r1\.2 abc
#ifndef HAVE_WINSOCK_H
extern int gethostname ();
#else /\* HAVE_WINSOCK_H \*/
#include <winsock\.h>
#endif /\* HAVE_WINSOCK_H \*/"
if $keep; then
echo Keeping ${TESTDIR} and exiting due to --keep
exit 0
fi
cd ../..
rm -rf ${CVSROOT_DIRNAME}/first-dir
rm -r 1
;;
diffnl)
mkdir 1; cd 1
dotest diffnl-000 "${testcvs} -q co -l ." ''
mkdir first-dir
dotest diffnl-001 "${testcvs} add first-dir" \
"Directory ${CVSROOT_DIRNAME}/first-dir added to the repository"
cd first-dir
${AWK} 'BEGIN {printf("one\ntwo\nthree\nfour\nfive\nsix")}' </dev/null >abc
dotest diffnl-002 "${testcvs} add abc" \
"${PROG} add: scheduling file .abc. for addition
${PROG} add: use .${PROG} commit. to add this file permanently"
dotest diffnl-003 "${testcvs} -q ci -mtest" \
"RCS file: ${CVSROOT_DIRNAME}/first-dir/abc,v
done
Checking in abc;
${CVSROOT_DIRNAME}/first-dir/abc,v <-- abc
initial revision: 1\.1
done"
${AWK} 'BEGIN {printf("one\ntwo\nthree\nfour\nsix")}' </dev/null >abc
dotest_fail diffnl-100 "${testcvs} diff abc" \
"Index: abc
===================================================================
RCS file: ${CVSROOT_DIRNAME}/first-dir/abc,v
retrieving revision 1\.1
diff -r1\.1 abc
5d4
< five"
dotest_fail diffnl-101 "${testcvs} diff -u abc" \
"Index: abc
===================================================================
RCS file: ${CVSROOT_DIRNAME}/first-dir/abc,v
retrieving revision 1\.1
diff -u -r1\.1 abc
--- abc ${RFCDATE} 1\.1
+++ abc ${RFCDATE}
@@ -2,5 +2,4 @@
two
three
four
-five
six
\\\\ No newline at end of file"
dotest diffnl-102 "${testcvs} -q ci -mtest abc" \
"Checking in abc;
${CVSROOT_DIRNAME}/first-dir/abc,v <-- abc
new revision: 1\.2; previous revision: 1\.1
done"
${AWK} 'BEGIN {printf("one\ntwo\nthree\nfour\nseven")}' </dev/null >abc
dotest_fail diffnl-200 "${testcvs} diff abc" \
"Index: abc
===================================================================
RCS file: ${CVSROOT_DIRNAME}/first-dir/abc,v
retrieving revision 1\.2
diff -r1\.2 abc
5c5
< six
\\\\ No newline at end of file
---
> seven
\\\\ No newline at end of file"
dotest_fail diffnl-201 "${testcvs} diff -u abc" \
"Index: abc
===================================================================
RCS file: ${CVSROOT_DIRNAME}/first-dir/abc,v
retrieving revision 1\.2
diff -u -r1\.2 abc
--- abc ${RFCDATE} 1\.2
+++ abc ${RFCDATE}
@@ -2,4 +2,4 @@
two
three
four
-six
\\\\ No newline at end of file
+seven
\\\\ No newline at end of file"
dotest diffnl-202 "${testcvs} ci -mtest abc" \
"Checking in abc;
${CVSROOT_DIRNAME}/first-dir/abc,v <-- abc
new revision: 1\.3; previous revision: 1\.2
done"
echo "one
two
three
four
seven" > abc
dotest_fail diffnl-300 "${testcvs} diff abc" \
"Index: abc
===================================================================
RCS file: ${CVSROOT_DIRNAME}/first-dir/abc,v
retrieving revision 1\.3
diff -r1\.3 abc
5c5
< seven
\\\\ No newline at end of file
---
> seven"
dotest_fail diffnl-301 "${testcvs} diff -u abc" \
"Index: abc
===================================================================
RCS file: ${CVSROOT_DIRNAME}/first-dir/abc,v
retrieving revision 1\.3
diff -u -r1\.3 abc
--- abc ${RFCDATE} 1\.3
+++ abc ${RFCDATE}
@@ -2,4 +2,4 @@
two
three
four
-seven
\\\\ No newline at end of file
+seven"
dotest diffnl-302 "${testcvs} ci -mtest abc" \
"Checking in abc;
${CVSROOT_DIRNAME}/first-dir/abc,v <-- abc
new revision: 1\.4; previous revision: 1\.3
done"
${AWK} 'BEGIN {printf("one\ntwo\nthree\nfour\nseven")}' </dev/null >abc
dotest_fail diffnl-400 "${testcvs} diff abc" \
"Index: abc
===================================================================
RCS file: ${CVSROOT_DIRNAME}/first-dir/abc,v
retrieving revision 1\.4
diff -r1\.4 abc
5c5
< seven
---
> seven
\\\\ No newline at end of file"
dotest_fail diffnl-401 "${testcvs} diff -u abc" \
"Index: abc
===================================================================
RCS file: ${CVSROOT_DIRNAME}/first-dir/abc,v
retrieving revision 1\.4
diff -u -r1\.4 abc
--- abc ${RFCDATE} 1\.4
+++ abc ${RFCDATE}
@@ -2,4 +2,4 @@
two
three
four
-seven
+seven
\\\\ No newline at end of file"
cd ../..
rm -r 1
rm -rf ${CVSROOT_DIRNAME}/first-dir
;;
death)
mkdir ${CVSROOT_DIRNAME}/first-dir
if ${CVS} co first-dir ; then
pass 65
else
fail 65
fi
cd first-dir
mkdir subdir
dotest 65a0 "${testcvs} add subdir" \
"Directory ${CVSROOT_DIRNAME}/first-dir/subdir added to the repository"
cd subdir
echo file in subdir >sfile
dotest 65a1 "${testcvs} add sfile" \
"${PROG}"' add: scheduling file `sfile'\'' for addition
'"${PROG}"' add: use .'"${PROG}"' commit. to add this file permanently'
dotest 65a2 "${testcvs} -q ci -m add-it" \
"RCS file: ${CVSROOT_DIRNAME}/first-dir/subdir/sfile,v
done
Checking in sfile;
${CVSROOT_DIRNAME}/first-dir/subdir/sfile,v <-- sfile
initial revision: 1\.1
done"
rm sfile
dotest 65a3 "${testcvs} rm sfile" \
"${PROG}"' remove: scheduling `sfile'\'' for removal
'"${PROG}"' remove: use .'"${PROG}"' commit. to remove this file permanently'
dotest 65a4 "${testcvs} -q ci -m remove-it" \
"Removing sfile;
${CVSROOT_DIRNAME}/first-dir/subdir/sfile,v <-- sfile
new revision: delete; previous revision: 1\.1
done"
cd ..
dotest 65a5 "${testcvs} -q update -P" ''
dotest_fail 65a6 "test -d subdir" ''
touch file1
if ${CVS} add file1 2>> ${LOGFILE}; then
pass 66
else
fail 66
fi
if ${CVS} ci -m test >> ${LOGFILE} 2>&1; then
pass 67
else
fail 67
fi
rm file1
if ${CVS} rm file1 2>> ${LOGFILE}; then
pass 68
else
fail 68
fi
if ${CVS} ci -m test >>${LOGFILE} ; then
pass 69
else
fail 69
fi
dotest_fail 69a0 "test -f file1" ''
if ${testcvs} update -p -r 1.1 file1 >file1 2>>${LOGFILE}; then
pass 69a1
else
fail 69a1
fi
dotest 69a2 "cat file1" ''
touch file2
if ${CVS} add file1 file2 2>> ${LOGFILE}; then
pass 70
else
fail 70
fi
if ${CVS} ci -m test >> ${LOGFILE} 2>&1; then
pass 71
else
fail 71
fi
if ${CVS} log file1 >> ${LOGFILE}; then
pass 72
else
fail 72
fi
echo file4 > file4
dotest death-file4-add "${testcvs} add file4" \
"${PROG}"' add: scheduling file `file4'\'' for addition
'"${PROG}"' add: use .'"${PROG}"' commit. to add this file permanently'
dotest death-file4-ciadd "${testcvs} -q ci -m add file4" \
"RCS file: ${CVSROOT_DIRNAME}/first-dir/file4,v
done
Checking in file4;
${CVSROOT_DIRNAME}/first-dir/file4,v <-- file4
initial revision: 1\.1
done"
rm file4
dotest death-file4-rm "${testcvs} remove file4" \
"${PROG}"' remove: scheduling `file4'\'' for removal
'"${PROG}"' remove: use .'"${PROG}"' commit. to remove this file permanently'
dotest death-file4-cirm "${testcvs} -q ci -m remove file4" \
"Removing file4;
${CVSROOT_DIRNAME}/first-dir/file4,v <-- file4
new revision: delete; previous revision: 1\.1
done"
dotest death-72a "${testcvs} -q tag bp_branch1" 'T file1
T file2'
if ${CVS} tag -b branch1 ; then
pass 73
else
fail 73
fi
if ${CVS} update -r branch1 ; then
pass 74
else
fail 74
fi
dotest_fail death-file4-3 "test -f file4" ''
echo line1 from branch1 >> file3
if ${CVS} add file3 2>> ${LOGFILE}; then
pass 75
else
fail 75
fi
if ${CVS} ci -m test >> ${LOGFILE} 2>&1; then
pass 76
else
fail 76
fi
dotest death-76a0 \
"${testcvs} -q rdiff -r bp_branch1 -r branch1 first-dir" \
"Index: first-dir/file3
diff -c /dev/null first-dir/file3:1\.1\.2\.1
\*\*\* /dev/null ${DATE}
--- first-dir/file3 ${DATE}
\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*
\*\*\* 0 \*\*\*\*
--- 1 ----
${PLUS} line1 from branch1"
dotest death-76a1 \
"${testcvs} -q rdiff -r branch1 -r bp_branch1 first-dir" \
"Index: first-dir/file3
diff -c first-dir/file3:1\.1\.2\.1 first-dir/file3:removed
\*\*\* first-dir/file3:1\.1\.2\.1 ${DATE}
--- first-dir/file3 ${DATE}
\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*
\*\*\* 1 \*\*\*\*
- line1 from branch1
--- 0 ----"
rm file3
if ${CVS} rm file3 2>> ${LOGFILE}; then
pass 77
else
fail 77
fi
if ${CVS} ci -m test >>${LOGFILE} ; then
pass 78
else
fail 78
fi
echo line1 from branch1 >> file3
if ${CVS} add file3 2>> ${LOGFILE}; then
pass 79
else
fail 79
fi
if ${CVS} ci -m test >> ${LOGFILE} 2>&1; then
pass 80
else
fail 80
fi
echo line2 from branch1 >> file1
if ${CVS} ci -m test >> ${LOGFILE} 2>&1; then
pass 81
else
fail 81
fi
rm file2
if ${CVS} rm file2 2>> ${LOGFILE}; then
pass 82
else
fail 82
fi
if ${CVS} ci -m test >>${LOGFILE}; then
pass 83
else
fail 83
fi
if ${CVS} update -A 2>> ${LOGFILE}; then
pass 84
else
fail 84
fi
dotest_fail death-file4-4 "test -f file4" ''
if test -f file3 ; then
fail 85
else
pass 85
fi
dotest 86 "${testcvs} -q update -j branch1" \
"RCS file: ${CVSROOT_DIRNAME}/first-dir/file1,v
retrieving revision 1\.3
retrieving revision 1\.3\.2\.1
Merging differences between 1\.3 and 1\.3\.2\.1 into file1
${PROG} update: scheduling file2 for removal
U file3"
dotest_fail death-file4-5 "test -f file4" ''
if test -f file3 ; then
pass 87
else
fail 87
fi
if echo line2 from branch1 | cmp - file1 >/dev/null; then
pass 87a
else
fail 87a
fi
if ${CVS} update ; then
pass 88
else
fail 88
fi
dotest 89 "${testcvs} -q ci -m test" \
"Checking in file1;
${CVSROOT_DIRNAME}/first-dir/file1,v <-- file1
new revision: 1\.4; previous revision: 1\.3
done
Removing file2;
${CVSROOT_DIRNAME}/first-dir/file2,v <-- file2
new revision: delete; previous revision: 1\.1
done
Checking in file3;
${CVSROOT_DIRNAME}/first-dir/file3,v <-- file3
new revision: 1\.2; previous revision: 1\.1
done"
cd ..
mkdir 2
cd 2
dotest 89a "${testcvs} -q co first-dir" 'U first-dir/file1
U first-dir/file3'
cd ..
rm -r 2
cd first-dir
rm file1
if ${CVS} rm file1 2>> ${LOGFILE}; then
pass 90
else
fail 90
fi
if ${CVS} ci -m test >>${LOGFILE}; then
pass 91
else
fail 91
fi
if test -f file1 ; then
fail 92
else
pass 92
fi
dotest_fail 92.1a "${testcvs} update -r brnach1" \
"${PROG}"' \[update aborted\]: no such tag brnach1'
if test -f file1 ; then
fail 92.1b
else
pass 92.1b
fi
if test -f file3 ; then
pass 92.1c
else
fail 92.1c
fi
if ${CVS} update -r branch1 2>> ${LOGFILE}; then
pass 93
else
fail 93
fi
dotest_fail death-file4-6 "test -f file4" ''
if test -f file1 ; then
pass 94
else
fail 94
fi
dotest 95 "${testcvs} -q update -j HEAD" \
"${PROG}"' update: file file1 has been modified, but has been removed in revision HEAD
'"${PROG}"' update: file file3 exists, but has been added in revision HEAD'
dotest_fail death-file4-7 "test -f file4" ''
dotest_fail death-file2-1 "test -f file2" ''
cd .. ; rm -rf first-dir ${CVSROOT_DIRNAME}/first-dir
;;
death2)
mkdir ${CVSROOT_DIRNAME}/first-dir
dotest death2-1 "${testcvs} -q co first-dir" ''
cd first-dir
echo "first revision" > file1
echo "file4 first revision" > file4
dotest death2-2 "${testcvs} add file1 file4" \
"${PROG}"' add: scheduling file `file1'\'' for addition
'"${PROG}"' add: scheduling file `file4'\'' for addition
'"${PROG}"' add: use .'"${PROG}"' commit. to add these files permanently'
dotest death2-3 "${testcvs} -q commit -m add" \
"RCS file: ${CVSROOT_DIRNAME}/first-dir/file1,v
done
Checking in file1;
${CVSROOT_DIRNAME}/first-dir/file1,v <-- file1
initial revision: 1\.1
done
RCS file: ${CVSROOT_DIRNAME}/first-dir/file4,v
done
Checking in file4;
${CVSROOT_DIRNAME}/first-dir/file4,v <-- file4
initial revision: 1\.1
done"
dotest death2-4 "${testcvs} -q tag -b branch" \
'T file1
T file4'
dotest death2-5 "${testcvs} -q tag tag" \
'T file1
T file4'
dotest death2-6 "${testcvs} -q update -r branch" ''
rm file1
dotest death2-7 "${testcvs} rm file1" \
"${PROG} remove: scheduling .file1. for removal
${PROG} remove: use .${PROG} commit. to remove this file permanently"
dotest_fail death2-diff-1 "${testcvs} -q diff file1" \
"${PROG} diff: file1 was removed, no comparison available"
dotest_fail death2-diff-2 "${testcvs} -q diff -N -c file1" \
"Index: file1
===================================================================
RCS file: file1
diff -N file1
\*\*\* file1 ${RFCDATE} [0-9.]*
--- /dev/null ${RFCDATE_EPOCH}
\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*
\*\*\* 1 \*\*\*\*
- first revision
--- 0 ----"
dotest death2-8 "${testcvs} -q ci -m removed" \
"Removing file1;
${CVSROOT_DIRNAME}/first-dir/file1,v <-- file1
new revision: delete; previous revision: 1\.1
done"
dotest_fail death2-diff-3 \
"${testcvs} -q diff -r1.1 -rbranch -c file1" \
"${PROG} diff: Tag branch refers to a dead (removed) revision in file .file1.\.
${PROG} diff: No comparison available\. Pass .-N. to .${PROG} diff.${QUESTION}"
dotest_fail death2-diff-3a \
"${testcvs} -q diff -rbranch -r1.1 -c file1" \
"${PROG} diff: Tag branch refers to a dead (removed) revision in file .file1.\.
${PROG} diff: No comparison available\. Pass .-N. to .${PROG} diff.${QUESTION}"
dotest_fail death2-diff-4 \
"${testcvs} -q diff -r1.1 -rbranch -N -c file1" \
"Index: file1
===================================================================
RCS file: file1
diff -N file1
\*\*\* file1 ${RFCDATE} [0-9.]*
--- /dev/null ${RFCDATE_EPOCH}
\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*
\*\*\* 1 \*\*\*\*
- first revision
--- 0 ----"
dotest_fail death2-diff-4a \
"${testcvs} -q diff -rbranch -r1.1 -N -c file1" \
"Index: file1
===================================================================
RCS file: file1
diff -N file1
\*\*\* /dev/null ${RFCDATE_EPOCH}
--- file1 ${RFCDATE} [0-9.]*
\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*
\*\*\* 0 \*\*\*\*
--- 1 ----
+ first revision"
dotest_fail death2-diff-5 "${testcvs} -q diff -rtag -c ." \
"${PROG} diff: file1 no longer exists, no comparison available"
dotest_fail death2-diff-6 "${testcvs} -q diff -rtag -N -c ." \
"Index: file1
===================================================================
RCS file: file1
diff -N file1
\*\*\* file1 [-a-zA-Z0-9: ]* [0-9.]*
--- /dev/null ${RFCDATE_EPOCH}
\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*
\*\*\* 1 \*\*\*\*
- first revision
--- 0 ----"
dotest death2-rdiff-1 \
"${testcvs} -q rtag -rbranch rdiff-tag first-dir" ''
dotest death2-rdiff-2 "${testcvs} -q rdiff -rtag -rbranch first-dir" \
"Index: first-dir/file1
diff -c first-dir/file1:1\.1 first-dir/file1:removed
\*\*\* first-dir/file1:1\.1 [a-zA-Z0-9: ]*
--- first-dir/file1 [a-zA-Z0-9: ]*
\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*
\*\*\* 1 \*\*\*\*
- first revision
--- 0 ----"
echo "second revision" > file1
dotest death2-9 "${testcvs} add file1" \
"${PROG}"' add: file `file1'\'' will be added on branch `branch'\'' from version 1\.1\.2\.1
'"${PROG}"' add: use .'"${PROG}"' commit. to add this file permanently'
dotest_fail death2-diff-7 "${testcvs} -q diff file1" \
"${PROG} diff: file1 is a new entry, no comparison available"
dotest_fail death2-diff-8 "${testcvs} -q diff -N -c file1" \
"Index: file1
===================================================================
RCS file: file1
diff -N file1
\*\*\* /dev/null ${RFCDATE_EPOCH}
--- file1 ${RFCDATE}
\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*
\*\*\* 0 \*\*\*\*
--- 1 ----
${PLUS} second revision"
dotest death2-10 "${testcvs} -q commit -m add" \
"Checking in file1;
${CVSROOT_DIRNAME}/first-dir/file1,v <-- file1
new revision: 1\.1\.2\.2; previous revision: 1\.1\.2\.1
done"
dotest death2-10a "${testcvs} rm -f file4" \
"${PROG} remove: scheduling .file4. for removal
${PROG} remove: use .${PROG} commit. to remove this file permanently"
dotest death2-10b "${testcvs} -q ci -m removed" \
"Removing file4;
${CVSROOT_DIRNAME}/first-dir/file4,v <-- file4
new revision: delete; previous revision: 1\.1
done"
dotest death2-11 "${testcvs} -q update -A" \
"[UP] file1
U file4"
echo "first revision" > file2
dotest death2-12 "${testcvs} add file2" \
"${PROG}"' add: scheduling file `file2'\'' for addition
'"${PROG}"' add: use .'"${PROG}"' commit. to add this file permanently'
dotest death2-13 "${testcvs} -q commit -m add" \
"RCS file: ${CVSROOT_DIRNAME}/first-dir/file2,v
done
Checking in file2;
${CVSROOT_DIRNAME}/first-dir/file2,v <-- file2
initial revision: 1\.1
done"
echo "new file4 revision" > file4
dotest death2-13a "${testcvs} -q commit -m mod" \
"Checking in file4;
${CVSROOT_DIRNAME}/first-dir/file4,v <-- file4
new revision: 1\.2; previous revision: 1\.1
done"
dotest death2-14 "${testcvs} -q update -r branch" \
"[UP] file1
${PROG} update: file2 is no longer in the repository
${PROG} update: file4 is no longer in the repository"
echo "branch revision" > file2
dotest death2-15 "${testcvs} add file2" \
"${PROG}"' add: scheduling file `file2'\'' for addition on branch `branch'\''
'"${PROG}"' add: use .'"${PROG}"' commit. to add this file permanently'
dotest death2-16 "${testcvs} -q commit -m add" \
"Checking in file2;
${CVSROOT_DIRNAME}/first-dir/file2,v <-- file2
new revision: 1\.1\.2\.2; previous revision: 1\.1\.2\.1
done"
echo "first revision" > file3
dotest death2-17 "${testcvs} add file3" \
"${PROG}"' add: scheduling file `file3'\'' for addition on branch `branch'\''
'"${PROG}"' add: use .'"${PROG}"' commit. to add this file permanently'
dotest death2-18 "${testcvs} -q commit -m add" \
"RCS file: ${CVSROOT_DIRNAME}/first-dir/Attic/file3,v
done
Checking in file3;
${CVSROOT_DIRNAME}/first-dir/Attic/file3,v <-- file3
new revision: 1\.1\.2\.1; previous revision: 1\.1
done"
dotest_fail death2-diff-9 "${testcvs} -q diff -rtag -c file3" \
"${PROG} diff: tag tag is not in file file3"
dotest_fail death2-diff-10 "${testcvs} -q diff -rtag -N -c file3" \
"Index: file3
===================================================================
RCS file: file3
diff -N file3
\*\*\* /dev/null ${RFCDATE_EPOCH}
--- file3 ${RFCDATE} [0-9.]*
\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*
\*\*\* 0 \*\*\*\*
--- 1 ----
${PLUS} first revision"
dotest_fail death2-diff-11 "${testcvs} -q diff -rtag -c ." \
"Index: file1
===================================================================
RCS file: ${CVSROOT_DIRNAME}/first-dir/file1,v
retrieving revision 1\.1
retrieving revision 1\.1\.2\.2
diff -c -r1\.1 -r1\.1\.2\.2
\*\*\* file1 ${RFCDATE} [0-9.]*
--- file1 ${RFCDATE} [0-9.]*
\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*
\*\*\* 1 \*\*\*\*
! first revision
--- 1 ----
! second revision
${PROG} diff: tag tag is not in file file2
${PROG} diff: tag tag is not in file file3
${PROG} diff: file4 no longer exists, no comparison available"
dotest_fail death2-diff-12 "${testcvs} -q diff -rtag -c -N ." \
"Index: file1
===================================================================
RCS file: ${CVSROOT_DIRNAME}/first-dir/file1,v
retrieving revision 1\.1
retrieving revision 1\.1\.2\.2
diff -c -r1\.1 -r1\.1\.2\.2
\*\*\* file1 ${RFCDATE} [0-9.]*
--- file1 ${RFCDATE} [0-9.]*
\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*
\*\*\* 1 \*\*\*\*
! first revision
--- 1 ----
! second revision
Index: file2
===================================================================
RCS file: file2
diff -N file2
\*\*\* /dev/null ${RFCDATE_EPOCH}
--- file2 ${RFCDATE} [0-9.]*
\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*
\*\*\* 0 \*\*\*\*
--- 1 ----
${PLUS} branch revision
Index: file3
===================================================================
RCS file: file3
diff -N file3
\*\*\* /dev/null ${RFCDATE_EPOCH}
--- file3 ${RFCDATE} [0-9.]*
\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*
\*\*\* 0 \*\*\*\*
--- 1 ----
${PLUS} first revision
Index: file4
===================================================================
RCS file: file4
diff -N file4
\*\*\* file4 ${RFCDATE} [0-9.]*
--- /dev/null ${RFCDATE_EPOCH}
\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*
\*\*\* 1 \*\*\*\*
- file4 first revision
--- 0 ----"
dotest death2-19 "${testcvs} -q update -r tag" \
"[UP] file1
${PROG} update: file2 is no longer in the repository
${PROG} update: file3 is no longer in the repository
U file4"
dotest_fail death2-20 "test -f file2"
dotest_fail death2-diff-13 "${testcvs} -q diff -r rdiff-tag" \
"${PROG} diff: Tag rdiff-tag refers to a dead (removed) revision in file .file1.\.
${PROG} diff: No comparison available\. Pass .-N. to .${PROG} diff.${QUESTION}"
dotest_fail death2-diff-14 "${testcvs} -q diff -r rdiff-tag -c -N" \
"Index: file1
===================================================================
RCS file: file1
diff -N file1
\*\*\* /dev/null ${RFCDATE_EPOCH}
--- file1 ${RFCDATE} [0-9.]*
\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*
\*\*\* 0 \*\*\*\*
--- 1 ----
${PLUS} first revision"
dotest death2-21 "${testcvs} -q update -A" \
"U file2
[UP] file4"
dotest death2-22 "${testcvs} -q co first-dir" \
"U first-dir/file1
U first-dir/file2
U first-dir/file4"
cd first-dir
dotest death2-23 "${testcvs} rm -f file4" \
"${PROG} remove: scheduling .file4. for removal
${PROG} remove: use .${PROG} commit. to remove this file permanently"
dotest death2-24 "${testcvs} -q ci -m removed file4" \
"Removing file4;
${CVSROOT_DIRNAME}/first-dir/file4,v <-- file4
new revision: delete; previous revision: 1\.2
done"
cd ..
echo "new stuff" >file4
dotest_fail death2-25 "${testcvs} up file4" \
"${PROG} update: conflict: file4 is modified but no longer in the repository
C file4"
cd .. ; rm -rf first-dir ${CVSROOT_DIRNAME}/first-dir
;;
rm-update-message)
mkdir rm-update-message; cd rm-update-message
mkdir $CVSROOT_DIRNAME/rm-update-message
dotest rm-update-message-setup-1 "$testcvs -q co rm-update-message" ''
cd rm-update-message
file=x
echo >$file
dotest rm-update-message-setup-2 "$testcvs -q add $file" \
"${PROG} add: use .${PROG} commit. to add this file permanently"
dotest rm-update-message-setup-3 "$testcvs -q ci -mcreate $file" \
"RCS file: $CVSROOT_DIRNAME/rm-update-message/$file,v
done
Checking in $file;
$CVSROOT_DIRNAME/rm-update-message/$file,v <-- $file
initial revision: 1\.1
done"
rm $file
dotest rm-update-message-1 "$testcvs up $file" \
"${PROG} update: warning: $file was lost
U $file"
cd ../..
if $keep; then :; else
rm -rf rm-update-message
rm -rf $CVSROOT_DIRNAME/rm-update-message
fi
;;
rmadd)
mkdir 1; cd 1
dotest rmadd-1 "${testcvs} -q co -l ." ''
mkdir first-dir
dotest rmadd-2 "${testcvs} add first-dir" \
"Directory ${CVSROOT_DIRNAME}/first-dir added to the repository"
cd first-dir
echo first file1 >file1
dotest rmadd-3 "${testcvs} add file1" \
"${PROG} add: scheduling file .file1. for addition
${PROG} add: use .${PROG} commit. to add this file permanently"
dotest_fail rmadd-4 "${testcvs} -q ci -r 1.2.2.4 -m add" \
"${PROG} commit: cannot add file .file1' with revision .1\.2\.2\.4'; must be on trunk
${PROG} \[commit aborted\]: correct above errors first!"
dotest_fail rmadd-5 "${testcvs} -q ci -r 1.2.2 -m add" \
"${PROG} commit: cannot add file .file1' with revision .1\.2\.2'; must be on trunk
${PROG} \[commit aborted\]: correct above errors first!"
dotest_fail rmadd-6 "${testcvs} -q ci -r mybranch -m add" \
"${PROG} \[commit aborted\]: no such tag mybranch"
dotest rmadd-7 "${testcvs} -q ci -r 7.... -m add" \
"RCS file: ${CVSROOT_DIRNAME}/first-dir/file1,v
done
Checking in file1;
${CVSROOT_DIRNAME}/first-dir/file1,v <-- file1
initial revision: 7\.1
done"
if $remote; then
dotest_fail rmadd-7a "test -f CVS/Tag"
echo T7 >CVS/Tag
else
dotest rmadd-7a "cat CVS/Tag" "T7"
fi
dotest rmadd-8 "${testcvs} -q tag -b mybranch" "T file1"
dotest rmadd-9 "${testcvs} -q tag mynonbranch" "T file1"
touch file2
dotest rmadd-10 "${testcvs} add file2" \
"${PROG} add: scheduling file .file2. for addition on branch .7'
${PROG} add: use .${PROG} commit. to add this file permanently"
dotest rmadd-11 "${testcvs} -q ci -m add" \
"RCS file: ${CVSROOT_DIRNAME}/first-dir/file2,v
done
Checking in file2;
${CVSROOT_DIRNAME}/first-dir/file2,v <-- file2
initial revision: 7\.1
done"
dotest rmadd-12 "${testcvs} -q update -A" ""
touch file3
dotest rmadd-13 "${testcvs} add file3" \
"${PROG} add: scheduling file .file3. for addition
${PROG} add: use .${PROG} commit. to add this file permanently"
dotest_fail rmadd-14 "${testcvs} -q ci -r mybranch -m add" \
"${PROG} commit: Up-to-date check failed for .file2'
${PROG} \[commit aborted\]: correct above errors first!"
dotest rmadd-15 "${testcvs} -q ci -r mybranch -m add file3" \
"RCS file: ${CVSROOT_DIRNAME}/first-dir/Attic/file3,v
done
Checking in file3;
${CVSROOT_DIRNAME}/first-dir/Attic/file3,v <-- file3
new revision: 1\.1\.2\.1; previous revision: 1\.1
done"
touch file4
dotest rmadd-16 "${testcvs} add file4" \
"${PROG} add: scheduling file .file4. for addition
${PROG} add: use .${PROG} commit. to add this file permanently"
dotest_fail rmadd-17 \
"${testcvs} -q ci -r mynonbranch -m add file4" \
"${PROG} \[commit aborted\]: no such tag mynonbranch"
dotest rmadd-18 "${testcvs} -q update -p -r mynonbranch file1" \
"first file1"
dotest_fail rmadd-19 \
"${testcvs} -q ci -r mynonbranch -m add file4" \
"${PROG} \[commit aborted\]: no such tag mynonbranch"
dotest rmadd-20 "${testcvs} -q update -r mynonbranch file1" ""
dotest rmadd-21 \
"${testcvs} -q ci -r mynonbranch -m add file4" \
"RCS file: ${CVSROOT_DIRNAME}/first-dir/Attic/file4,v
done
Checking in file4;
${CVSROOT_DIRNAME}/first-dir/Attic/file4,v <-- file4
new revision: 1\.1\.2\.1; previous revision: 1\.1
done"
echo file5 >file5
dotest rmadd-22 "${testcvs} add file5" \
"${PROG} add: scheduling file .file5. for addition
${PROG} add: use .${PROG} commit. to add this file permanently"
if $remote; then
dotest rmadd-23r "${testcvs} -q ci -m add" \
"RCS file: ${CVSROOT_DIRNAME}/first-dir/file5,v
done
Checking in file5;
${CVSROOT_DIRNAME}/first-dir/file5,v <-- file5
initial revision: 1\.1
done"
dotest rmadd-23-workaroundr \
"${testcvs} -q ci -r 7 -m bump-it file5" \
"Checking in file5;
${CVSROOT_DIRNAME}/first-dir/file5,v <-- file5
new revision: 7\.1; previous revision: 1\.1
done"
else
dotest rmadd-23 "${testcvs} -q ci -m add" \
"RCS file: ${CVSROOT_DIRNAME}/first-dir/file5,v
done
Checking in file5;
${CVSROOT_DIRNAME}/first-dir/file5,v <-- file5
initial revision: 7\.1
done"
fi
echo change it >file5
dotest_fail rmadd-24 "${testcvs} -q ci -r 4.8 -m change file5" \
"Checking in file5;
${CVSROOT_DIRNAME}/first-dir/file5,v <-- file5
${PROG} commit: ${CVSROOT_DIRNAME}/first-dir/file5,v: revision 4\.8 too low; must be higher than 7\.1
${PROG} commit: could not check in file5"
dotest rmadd-24a "${testcvs} -q ci -r 8.4 -m change file5" \
"Checking in file5;
${CVSROOT_DIRNAME}/first-dir/file5,v <-- file5
new revision: 8\.4; previous revision: 7\.1
done"
dotest rmadd-25 "${testcvs} status file5" \
"===================================================================
File: file5 Status: Up-to-date
Working revision: 8\.4.*
Repository revision: 8\.4 ${CVSROOT_DIRNAME}/first-dir/file5,v
Sticky Tag: 8\.4
Sticky Date: (none)
Sticky Options: (none)"
mkdir sub
dotest rmadd-26 "${testcvs} -q add sub" \
"Directory ${CVSROOT_DIRNAME}/first-dir/sub added to the repository"
echo hello >sub/subfile
dotest rmadd-27 "${testcvs} -q add sub/subfile" \
"${PROG} add: use .${PROG} commit. to add this file permanently"
dotest rmadd-28 "${testcvs} -q ci -m. sub" \
"RCS file: ${CVSROOT_DIRNAME}/first-dir/sub/subfile,v
done
Checking in sub/subfile;
${CVSROOT_DIRNAME}/first-dir/sub/subfile,v <-- subfile
initial revision: 1\.1
done"
dotest rmadd-29 "${testcvs} -q up -A" \
"${PROG} update: file3 is no longer in the repository
${PROG} update: file4 is no longer in the repository"
dotest rmadd-30 "${testcvs} -q ci -f -r9 -m." \
"Checking in file1;
${CVSROOT_DIRNAME}/first-dir/file1,v <-- file1
new revision: 9\.1; previous revision: 7\.1
done
Checking in file2;
${CVSROOT_DIRNAME}/first-dir/file2,v <-- file2
new revision: 9\.1; previous revision: 7\.1
done
Checking in file5;
${CVSROOT_DIRNAME}/first-dir/file5,v <-- file5
new revision: 9\.1; previous revision: 8\.4
done"
dotest rmadd-31 "${testcvs} -q ci -f -r9 -R -m." \
"Checking in file1;
${CVSROOT_DIRNAME}/first-dir/file1,v <-- file1
new revision: 9\.2; previous revision: 9\.1
done
Checking in file2;
${CVSROOT_DIRNAME}/first-dir/file2,v <-- file2
new revision: 9\.2; previous revision: 9\.1
done
Checking in file5;
${CVSROOT_DIRNAME}/first-dir/file5,v <-- file5
new revision: 9\.2; previous revision: 9\.1
done
Checking in sub/subfile;
${CVSROOT_DIRNAME}/first-dir/sub/subfile,v <-- subfile
new revision: 9\.1; previous revision: 1\.1
done"
if $remote; then
:
else
dotest rmadd-32 "cat CVS/Tag" "T9"
dotest rmadd-33 "cat sub/CVS/Tag" "T9"
fi
cd ../..
rm -r 1
rm -rf ${CVSROOT_DIRNAME}/first-dir
;;
rmadd2)
mkdir 1; cd 1
dotest rmadd2-1 "${testcvs} -q co -l ." ''
mkdir first-dir
dotest rmadd2-2 "${testcvs} add first-dir" \
"Directory ${CVSROOT_DIRNAME}/first-dir added to the repository"
cd first-dir
echo 'initial contents' >file1
dotest rmadd2-3 "${testcvs} add file1" \
"${PROG} add: scheduling file .file1. for addition
${PROG} add: use .${PROG} commit. to add this file permanently"
dotest rmadd2-4 "${testcvs} -q ci -m add" \
"RCS file: ${CVSROOT_DIRNAME}/first-dir/file1,v
done
Checking in file1;
${CVSROOT_DIRNAME}/first-dir/file1,v <-- file1
initial revision: 1\.1
done"
dotest rmadd2-4a "${testcvs} -Q tag tagone" ""
dotest rmadd2-5 "${testcvs} rm -f file1" \
"${PROG} remove: scheduling .file1. for removal
${PROG} remove: use .${PROG} commit. to remove this file permanently"
dotest rmadd2-6 "${testcvs} -q ci -m remove" \
"Removing file1;
${CVSROOT_DIRNAME}/first-dir/file1,v <-- file1
new revision: delete; previous revision: 1\.1
done"
dotest rmadd2-7 "${testcvs} -q update -j 1.2 -j 1.1 file1" "U file1"
dotest rmadd2-8 "${testcvs} -q ci -m readd" \
"Checking in file1;
${CVSROOT_DIRNAME}/first-dir/file1,v <-- file1
new revision: 1\.3; previous revision: 1\.2
done"
echo 'new contents' >file1
dotest rmadd2-9 "${testcvs} -q ci -m modify" \
"Checking in file1;
${CVSROOT_DIRNAME}/first-dir/file1,v <-- file1
new revision: 1\.4; previous revision: 1\.3
done"
dotest rmadd2-10 "${testcvs} -q update -j 1.4 -j 1.3 file1" \
"RCS file: ${CVSROOT_DIRNAME}/first-dir/file1,v
retrieving revision 1\.4
retrieving revision 1\.3
Merging differences between 1\.4 and 1\.3 into file1"
dotest rmadd2-11 "${testcvs} -q ci -m undo" \
"Checking in file1;
${CVSROOT_DIRNAME}/first-dir/file1,v <-- file1
new revision: 1\.5; previous revision: 1\.4
done"
dotest rmadd2-12 "cat file1" "initial contents"
dotest rmadd2-13 "${testcvs} -q update -p -r 1.3" "initial contents"
dotest rmadd2-14 "${testcvs} -q update -j 1.3 -j 1.2 file1" \
"${PROG} update: scheduling file1 for removal"
dotest rmadd2-14a "${testcvs} -q update -p" "initial contents"
dotest rmadd2-14b "${testcvs} -q update -p -r 1.5" "initial contents"
dotest rmadd2-14c "${testcvs} -q update -p -r 1.3" "initial contents"
dotest rmadd2-15 "${testcvs} -q ci -m re-remove" \
"Removing file1;
${CVSROOT_DIRNAME}/first-dir/file1,v <-- file1
new revision: delete; previous revision: 1\.5
done"
dotest rmadd2-16 "${testcvs} log -h file1" "
RCS file: ${CVSROOT_DIRNAME}/first-dir/Attic/file1,v
Working file: file1
head: 1\.6
branch:
locks: strict
access list:
symbolic names:
tagone: 1\.1
keyword substitution: kv
total revisions: 6
============================================================================="
dotest rmadd2-17 "${testcvs} status -v file1" \
"===================================================================
File: no file file1 Status: Up-to-date
Working revision: No entry for file1
Repository revision: 1\.6 ${CVSROOT_DIRNAME}/first-dir/Attic/file1,v
Existing Tags:
tagone (revision: 1.1)"
cd ../..
rm -r 1
rm -rf ${CVSROOT_DIRNAME}/first-dir
;;
rmadd3)
mkdir 1; cd 1
dotest rmadd3-init1 "${testcvs} -q co -l ." ''
mkdir first-dir
dotest rmadd3-init2 "${testcvs} add first-dir" \
"Directory ${CVSROOT_DIRNAME}/first-dir added to the repository"
cd first-dir
echo initial content for file1 >file1
dotest rmadd3-init3 "${testcvs} add file1" \
"${PROG} add: scheduling file \`file1' for addition
${PROG} add: use '${PROG} commit' to add this file permanently"
dotest rmadd3-init4 "${testcvs} -q ci -m add" \
"RCS file: ${CVSROOT_DIRNAME}/first-dir/file1,v
done
Checking in file1;
${CVSROOT_DIRNAME}/first-dir/file1,v <-- file1
initial revision: 1\.1
done"
dotest rmadd3-1 "${testcvs} rm -f file1" \
"${PROG} remove: scheduling \`file1' for removal
${PROG} remove: use '${PROG} commit' to remove this file permanently"
echo desired future contents for file1 >file1
dotest_fail rmadd3-2 "${testcvs} add file1" \
"${PROG} add: file1 should be removed and is still there (or is back again)"
dotest_fail rmadd3-3 "${testcvs} -q ci -m." \
"$PROG commit: \`file1' should be removed and is still there (or is back again)
$PROG \[commit aborted\]: correct above errors first!"
dotest rmadd3-4 "test -f file1"
dotest rmadd3-5 "cat file1" "desired future contents for file1"
if $keep; then
echo Keeping ${TESTDIR} and exiting due to --keep
exit 0
fi
cd ../..
rm -r 1
rm -rf ${CVSROOT_DIRNAME}/first-dir
;;
resurrection)
mkdir 1; cd 1
dotest resurrection-init1 "$testcvs -q co -l ." ''
mkdir first-dir
dotest resurrection-init2 "$testcvs add first-dir" \
"Directory $CVSROOT_DIRNAME/first-dir added to the repository"
cd first-dir
echo initial content for file1 >file1
dotest resurrection-init3 "$testcvs add file1" \
"$PROG add: scheduling file \`file1' for addition
$PROG add: use '$PROG commit' to add this file permanently"
dotest resurrection-init4 "$testcvs -q ci -m add" \
"RCS file: $CVSROOT_DIRNAME/first-dir/file1,v
done
Checking in file1;
$CVSROOT_DIRNAME/first-dir/file1,v <-- file1
initial revision: 1\.1
done"
dotest resurrection-init5 "$testcvs -Q rm -f file1"
dotest_sort resurrection-1 "$testcvs add file1" \
"U file1
$PROG add: file1, version 1\.1, resurrected"
dotest resurrection-2 "$testcvs -Q diff file1" ""
dotest resurrection-init6 "$testcvs -Q tag -b resurrection"
dotest resurrection-init7 "$testcvs -Q rm -f file1"
dotest resurrection-init8 "$testcvs -Q ci -mrm" \
"Removing file1;
$CVSROOT_DIRNAME/first-dir/file1,v <-- file1
new revision: delete; previous revision: 1\.1
done"
dotest_sort resurrection-3 "$testcvs add file1" \
"U file1
$PROG add: Re-adding file \`file1' (in place of dead revision 1\.2)\.
$PROG add: Resurrecting file \`file1' from revision 1\.1\.
$PROG add: use 'cvs commit' to add this file permanently"
dotest resurrection-4 "$testcvs -q diff -r1.1 file1" ""
dotest resurrection-5 "$testcvs -q ci -mreadd" \
"Checking in file1;
$CVSROOT_DIRNAME/first-dir/file1,v <-- file1
new revision: 1\.3; previous revision: 1\.2
done"
dotest resurrection-init9 "$testcvs -Q up -rresurrection"
dotest resurrection-init10 "$testcvs -Q rm -f file1"
dotest resurrection-init11 "$testcvs -Q ci -mrm-on-resurrection" \
"Removing file1;
$CVSROOT_DIRNAME/first-dir/file1,v <-- file1
new revision: delete; previous revision: 1\.1
done"
dotest_sort resurrection-6 "$testcvs add file1" \
"U file1
$PROG add: Resurrecting file \`file1' from revision 1\.1\.
$PROG add: file \`file1' will be added on branch \`resurrection' from version 1\.1\.2\.1
$PROG add: use 'cvs commit' to add this file permanently"
dotest resurrection-7 "$testcvs -Q diff -r1.1 file1" ""
dotest resurrection-8 "$testcvs -q ci -mreadd" \
"Checking in file1;
$CVSROOT_DIRNAME/first-dir/file1,v <-- file1
new revision: 1\.1\.2\.2; previous revision: 1\.1\.2\.1
done"
touch file2
dotest resurrection-9 "$testcvs -Q add file2"
dotest resurrection-10 "$testcvs -Q ci -mnew-file2" \
"RCS file: $CVSROOT_DIRNAME/first-dir/Attic/file2,v
done
Checking in file2;
$CVSROOT_DIRNAME/first-dir/Attic/file2,v <-- file2
new revision: 1\.1\.2\.1; previous revision: 1\.1
done"
dotest resurrection-11 "$testcvs -Q up -A"
dotest resurrection-12 "$testcvs add file2" \
"$PROG add: File \`file2' has no previous revision to resurrect\."
if $keep; then
echo Keeping $TESTDIR and exiting due to --keep
exit 0
fi
cd ../..
rm -r 1
rm -rf $CVSROOT_DIRNAME/first-dir
;;
dirs)
mkdir imp-dir; cd imp-dir
echo file1 >file1
mkdir sdir
echo sfile >sdir/sfile
dotest_sort dirs-1 \
"${testcvs} import -m import-it dir1 vend rel" "
N dir1/file1
N dir1/sdir/sfile
No conflicts created by this import
${PROG} import: Importing ${CVSROOT_DIRNAME}/dir1/sdir"
cd ..
mkdir 1; cd 1
dotest dirs-2 "${testcvs} -Q co dir1" ""
rm -rf ${CVSROOT_DIRNAME}/dir1/sdir
dotest dirs-3 "${testcvs} update" \
"${PROG} update: Updating dir1
${PROG} update: Updating dir1/sdir
${PROG} update: cannot open directory ${CVSROOT_DIRNAME}/dir1/sdir: No such file or directory
${PROG} update: skipping directory dir1/sdir"
dotest dirs-3a "${testcvs} update -d" \
"${PROG} update*: Updating dir1
${PROG} update: Updating dir1/sdir
${PROG} update: cannot open directory ${CVSROOT_DIRNAME}/dir1/sdir: No such file or directory
${PROG} update: skipping directory dir1/sdir"
dotest dirs-4 "echo no | ${testcvs} release -d dir1/sdir" \
"${PROG} update: cannot open directory ${CVSROOT_DIRNAME}/dir1/sdir: No such file or directory
${PROG} update: skipping directory
You have \[0\] altered files in this repository\.
Are you sure you want to release (and delete) directory .dir1/sdir': .. .release' aborted by user choice."
rm -r dir1/sdir
dotest dirs-5 "cat dir1/CVS/Entries" \
"/file1/1.1.1.1/[a-zA-Z0-9 :]*//
D/sdir////"
dotest dirs-6 "${testcvs} update" "${PROG} update: Updating dir1"
dotest dirs-7 "cat dir1/CVS/Entries" \
"/file1/1.1.1.1/[a-zA-Z0-9 :]*//
D/sdir////"
dotest dirs-8 "${testcvs} update -d dir1" \
"${PROG} update: Updating dir1"
cd ..
rm -r imp-dir 1
rm -rf ${CVSROOT_DIRNAME}/dir1
;;
dirs2)
mkdir 1; cd 1
dotest dirs2-1 "${testcvs} -q co -l ." ''
mkdir first-dir
dotest dirs2-2 "${testcvs} add first-dir" \
"Directory ${CVSROOT_DIRNAME}/first-dir added to the repository"
cd first-dir
mkdir sdir
dotest dirs2-3 "${testcvs} add sdir" \
"Directory ${CVSROOT_DIRNAME}/first-dir/sdir added to the repository"
touch sdir/file1
dotest dirs2-4 "${testcvs} add sdir/file1" \
"${PROG} add: scheduling file .sdir/file1. for addition
${PROG} add: use .${PROG} commit. to add this file permanently"
dotest dirs2-5 "${testcvs} -q ci -m add" \
"RCS file: ${CVSROOT_DIRNAME}/first-dir/sdir/file1,v
done
Checking in sdir/file1;
${CVSROOT_DIRNAME}/first-dir/sdir/file1,v <-- file1
initial revision: 1\.1
done"
rm -r sdir/CVS
if $remote; then
dotest_fail dirs2-6 "${testcvs} update -d" \
"${QUESTION} sdir
${PROG} update: Updating \.
${PROG} update: Updating sdir
${PROG} update: move away sdir/file1; it is in the way
C sdir/file1"
rm sdir/file1
rm -r sdir/CVS
dotest dirs2-7 "${testcvs} update -d" \
"${QUESTION} sdir
${PROG} update: Updating \.
${PROG} update: Updating sdir
U sdir/file1"
else
dotest dirs2-6 "${testcvs} update -d" \
"${PROG} update: Updating \.
${QUESTION} sdir"
rm sdir/file1
dotest dirs2-7 "${testcvs} update -d" \
"${PROG} update: Updating \.
${QUESTION} sdir"
fi
cd ../..
mkdir 2; cd 2
dotest dirs2-8 "${testcvs} -q co first-dir" 'U first-dir/sdir/file1'
cd first-dir
dotest dirs2-9 "${testcvs} -q tag -b br" "T sdir/file1"
rm -r sdir/CVS
if $remote; then
dotest_fail dirs2-10 "${testcvs} update -d -r br" \
"${QUESTION} sdir
${PROG} \[update aborted\]: no such tag br"
dotest dirs2-10ar \
"${testcvs} -q rdiff -u -r 1.1 -r br first-dir/sdir/file1"
dotest_fail dirs2-10-again "${testcvs} update -d -r br" \
"${QUESTION} sdir
${PROG} update: Updating \.
${PROG} update: Updating sdir
${PROG} update: move away sdir/file1; it is in the way
C sdir/file1"
else
dotest_fail dirs2-10 "${testcvs} update -d -r br" \
"${PROG} update: in directory sdir:
${PROG} \[update aborted\]: there is no version here; do '${PROG} checkout' first"
fi
cd ../..
mkdir 3; cd 3
dotest dirs2-11 "${testcvs} -q co -r br first-dir" \
"U first-dir/sdir/file1"
cd first-dir
dotest dirs2-12 "${testcvs} rm -f sdir/file1" \
"${PROG} remove: scheduling .sdir/file1. for removal
${PROG} remove: use .${PROG} commit. to remove this file permanently"
dotest dirs2-13 "${testcvs} -q ci -m remove" \
"Removing sdir/file1;
${CVSROOT_DIRNAME}/first-dir/sdir/file1,v <-- file1
new revision: delete; previous revision: 1\.1
done"
cd ../../2/first-dir
if $remote; then
dotest dirs2-14 "${testcvs} update -d -r br" \
"${QUESTION} sdir/file1
${PROG} update: Updating \.
${PROG} update: Updating sdir"
else
dotest dirs2-14 "${testcvs} update -d -r br" \
"${PROG} update: Updating \.
${QUESTION} sdir"
fi
cd ../..
rm -r 1 2 3
rm -rf ${CVSROOT_DIRNAME}/first-dir
;;
branches)
mkdir ${CVSROOT_DIRNAME}/first-dir
dotest branches-1 "${testcvs} -q co first-dir" ''
cd first-dir
echo 1:ancest >file1
echo 2:ancest >file2
echo 3:ancest >file3
echo 4:trunk-1 >file4
dotest branches-2 "${testcvs} add file1 file2 file3 file4" \
"${PROG}"' add: scheduling file `file1'\'' for addition
'"${PROG}"' add: scheduling file `file2'\'' for addition
'"${PROG}"' add: scheduling file `file3'\'' for addition
'"${PROG}"' add: scheduling file `file4'\'' for addition
'"${PROG}"' add: use .'"${PROG}"' commit. to add these files permanently'
dotest branches-2a "${testcvs} -n -q ci -m dont-commit" ""
dotest_lit branches-3 "${testcvs} -q ci -m add-it" <<HERE
RCS file: ${CVSROOT_DIRNAME}/first-dir/file1,v
done
Checking in file1;
${CVSROOT_DIRNAME}/first-dir/file1,v <-- file1
initial revision: 1.1
done
RCS file: ${CVSROOT_DIRNAME}/first-dir/file2,v
done
Checking in file2;
${CVSROOT_DIRNAME}/first-dir/file2,v <-- file2
initial revision: 1.1
done
RCS file: ${CVSROOT_DIRNAME}/first-dir/file3,v
done
Checking in file3;
${CVSROOT_DIRNAME}/first-dir/file3,v <-- file3
initial revision: 1.1
done
RCS file: ${CVSROOT_DIRNAME}/first-dir/file4,v
done
Checking in file4;
${CVSROOT_DIRNAME}/first-dir/file4,v <-- file4
initial revision: 1.1
done
HERE
echo 4:trunk-2 >file4
dotest branches-3.2 "${testcvs} -q ci -m trunk-before-branch" \
"Checking in file4;
${CVSROOT_DIRNAME}/first-dir/file4,v <-- file4
new revision: 1\.2; previous revision: 1\.1
done"
dotest branches-3.3 "${testcvs} -qn tag dont-tag" \
"T file1
T file2
T file3
T file4"
echo 1:br1 >file1
dotest branches-4 "${testcvs} tag -b br1" "${PROG}"' tag: Tagging \.
T file1
T file2
T file3
T file4'
dotest branches-5 "${testcvs} update -r br1" \
"${PROG} update: Updating \.
M file1"
echo 2:br1 >file2
echo 4:br1 >file4
dotest branches-6 "${testcvs} -q ci -m modify" \
"Checking in file1;
${CVSROOT_DIRNAME}/first-dir/file1,v <-- file1
new revision: 1\.1\.2\.1; previous revision: 1\.1
done
Checking in file2;
${CVSROOT_DIRNAME}/first-dir/file2,v <-- file2
new revision: 1\.1\.2\.1; previous revision: 1\.1
done
Checking in file4;
${CVSROOT_DIRNAME}/first-dir/file4,v <-- file4
new revision: 1\.2\.2\.1; previous revision: 1\.2
done"
dotest branches-7 "${testcvs} -q tag -b brbr" 'T file1
T file2
T file3
T file4'
dotest branches-8 "${testcvs} -q update -r brbr" ''
echo 1:brbr >file1
echo 4:brbr >file4
dotest branches-9 "${testcvs} -q ci -m modify" \
"Checking in file1;
${CVSROOT_DIRNAME}/first-dir/file1,v <-- file1
new revision: 1\.1\.2\.1\.2\.1; previous revision: 1\.1\.2\.1
done
Checking in file4;
${CVSROOT_DIRNAME}/first-dir/file4,v <-- file4
new revision: 1\.2\.2\.1\.2\.1; previous revision: 1\.2\.2\.1
done"
dotest branches-10 "cat file1 file2 file3 file4" '1:brbr
2:br1
3:ancest
4:brbr'
dotest branches-11 "${testcvs} -q update -r br1" \
'[UP] file1
[UP] file4'
dotest branches-12 "cat file1 file2 file3 file4" '1:br1
2:br1
3:ancest
4:br1'
echo 4:br1-2 >file4
dotest branches-12.2 "${testcvs} -q ci -m change-on-br1" \
"Checking in file4;
${CVSROOT_DIRNAME}/first-dir/file4,v <-- file4
new revision: 1\.2\.2\.2; previous revision: 1\.2\.2\.1
done"
dotest branches-13 "${testcvs} -q update -A" '[UP] file1
[UP] file2
[UP] file4'
dotest branches-14 "cat file1 file2 file3 file4" '1:ancest
2:ancest
3:ancest
4:trunk-2'
echo 4:trunk-3 >file4
dotest branches-14.2 \
"${testcvs} -q ci -m trunk-change-after-branch" \
"Checking in file4;
${CVSROOT_DIRNAME}/first-dir/file4,v <-- file4
new revision: 1\.3; previous revision: 1\.2
done"
dotest branches-14.3 "${testcvs} log file4" \
"
RCS file: ${CVSROOT_DIRNAME}/first-dir/file4,v
Working file: file4
head: 1\.3
branch:
locks: strict
access list:
symbolic names:
brbr: 1\.2\.2\.1\.0\.2
br1: 1\.2\.0\.2
keyword substitution: kv
total revisions: 6; selected revisions: 6
description:
----------------------------
revision 1\.3
date: [0-9/: ]*; author: ${username}; state: Exp; lines: ${PLUS}1 -1
trunk-change-after-branch
----------------------------
revision 1\.2
date: [0-9/: ]*; author: ${username}; state: Exp; lines: ${PLUS}1 -1
branches: 1\.2\.2;
trunk-before-branch
----------------------------
revision 1\.1
date: [0-9/: ]*; author: ${username}; state: Exp;
add-it
----------------------------
revision 1\.2\.2\.2
date: [0-9/: ]*; author: ${username}; state: Exp; lines: ${PLUS}1 -1
change-on-br1
----------------------------
revision 1\.2\.2\.1
date: [0-9/: ]*; author: ${username}; state: Exp; lines: ${PLUS}1 -1
branches: 1\.2\.2\.1\.2;
modify
----------------------------
revision 1\.2\.2\.1\.2\.1
date: [0-9/: ]*; author: ${username}; state: Exp; lines: ${PLUS}1 -1
modify
============================================================================="
dotest_fail branches-14.4 \
"${testcvs} diff -c -r 1.1 -r 1.3 file4" \
"Index: file4
===================================================================
RCS file: ${CVSROOT_DIRNAME}/first-dir/file4,v
retrieving revision 1\.1
retrieving revision 1\.3
diff -c -r1\.1 -r1\.3
\*\*\* file4 ${RFCDATE} 1\.1
--- file4 ${RFCDATE} 1\.3
\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*
\*\*\* 1 \*\*\*\*
! 4:trunk-1
--- 1 ----
! 4:trunk-3"
dotest_fail branches-14.5 \
"${testcvs} diff -c -r 1.1 -r 1.2.2.1 file4" \
"Index: file4
===================================================================
RCS file: ${CVSROOT_DIRNAME}/first-dir/file4,v
retrieving revision 1\.1
retrieving revision 1\.2\.2\.1
diff -c -r1\.1 -r1\.2\.2\.1
\*\*\* file4 ${RFCDATE} 1\.1
--- file4 ${RFCDATE} 1\.2\.2\.1
\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*
\*\*\* 1 \*\*\*\*
! 4:trunk-1
--- 1 ----
! 4:br1"
dotest branches-15 \
"${testcvs} update -j 1.1.2.1 -j 1.1.2.1.2.1 file1" \
"RCS file: ${CVSROOT_DIRNAME}/first-dir/file1,v
retrieving revision 1\.1\.2\.1
retrieving revision 1\.1\.2\.1\.2\.1
Merging differences between 1\.1\.2\.1 and 1\.1\.2\.1\.2\.1 into file1
rcsmerge: warning: conflicts during merge"
dotest branches-16 "cat file1" '<<<<<<< file1
1:ancest
[=]======
1:brbr
[>]>>>>>> 1\.1\.2\.1\.2\.1'
dotest branches-o1 "${testcvs} -q admin -o ::brbr" \
"RCS file: ${CVSROOT_DIRNAME}/first-dir/file1,v
done
RCS file: ${CVSROOT_DIRNAME}/first-dir/file2,v
done
RCS file: ${CVSROOT_DIRNAME}/first-dir/file3,v
done
RCS file: ${CVSROOT_DIRNAME}/first-dir/file4,v
done"
cd ..
if $keep; then
echo Keeping ${TESTDIR} and exiting due to --keep
exit 0
fi
rm -rf ${CVSROOT_DIRNAME}/first-dir
rm -r first-dir
;;
branches2)
mkdir ${CVSROOT_DIRNAME}/first-dir
mkdir trunk; cd trunk
dotest branches2-1 "${testcvs} -q co first-dir"
cd first-dir
echo "file1 first revision" > file1
dotest branches2-2 "${testcvs} add file1" \
"${PROG} add: scheduling file .file1. for addition
${PROG} add: use .${PROG} commit. to add this file permanently"
dotest branches2-3 "${testcvs} commit -m add file1" \
"RCS file: ${CVSROOT_DIRNAME}/first-dir/file1,v
done
Checking in file1;
${CVSROOT_DIRNAME}/first-dir/file1,v <-- file1
initial revision: 1\.1
done"
dotest branches2-4 "${testcvs} -q tag tag1" 'T file1'
dotest branches2-5 "${testcvs} -q rtag -b -r tag1 b1 first-dir" ''
dotest branches2-6 "${testcvs} -q rtag -b -r tag1 b2 first-dir" ''
cd ../..
mkdir b1; cd b1
dotest branches2-7 "${testcvs} -q co -r b1 first-dir" \
"U first-dir/file1"
cd first-dir
echo "file2 first revision" > file2
dotest branches2-8 "${testcvs} add file2" \
"${PROG}"' add: scheduling file `file2'\'' for addition on branch `b1'\''
'"${PROG}"' add: use .'"${PROG}"' commit. to add this file permanently'
mkdir dir1
dotest branches2-9 "${testcvs} add dir1" \
"Directory ${CVSROOT_DIRNAME}/first-dir/dir1 added to the repository
--> Using per-directory sticky tag "'`'"b1'"
echo "file3 first revision" > dir1/file3
dotest branches2-10 "${testcvs} add dir1/file3" \
"${PROG}"' add: scheduling file `dir1/file3'\'' for addition on branch `b1'\''
'"${PROG}"' add: use .'"${PROG}"' commit. to add this file permanently'
dotest branches2-11 "${testcvs} -q ci -madd ." \
"RCS file: ${CVSROOT_DIRNAME}/first-dir/Attic/file2,v
done
Checking in file2;
${CVSROOT_DIRNAME}/first-dir/Attic/file2,v <-- file2
new revision: 1\.1\.2\.1; previous revision: 1\.1
done
RCS file: ${CVSROOT_DIRNAME}/first-dir/dir1/Attic/file3,v
done
Checking in dir1/file3;
${CVSROOT_DIRNAME}/first-dir/dir1/Attic/file3,v <-- file3
new revision: 1\.1\.2\.1; previous revision: 1\.1
done"
cd ../..
mkdir b2; cd b2
dotest branches2-12 "${testcvs} -q co -r b2 first-dir" \
'U first-dir/file1'
cd first-dir
dotest branches2-13 "${testcvs} update -d -r b1 dir1" \
"${PROG} update: Updating dir1
U dir1/file3"
dotest branches2-14 "${testcvs} -q status" \
"===================================================================
File: file1 Status: Up-to-date
Working revision: 1\.1.*
Repository revision: 1\.1 ${CVSROOT_DIRNAME}/first-dir/file1,v
Sticky Tag: b2 (branch: 1\.1\.4)
Sticky Date: (none)
Sticky Options: (none)
===================================================================
File: file3 Status: Up-to-date
Working revision: 1\.1\.2\.1.*
Repository revision: 1\.1\.2\.1 ${CVSROOT_DIRNAME}/first-dir/dir1/Attic/file3,v
Sticky Tag: b1 (branch: 1\.1\.2)
Sticky Date: (none)
Sticky Options: (none)"
rm -r dir1
dotest branches2-15 "${testcvs} update -d -j b1 dir1" \
"${PROG} update: Updating dir1
U dir1/file3"
dotest branches2-16 "${testcvs} -q status" \
"===================================================================
File: file1 Status: Up-to-date
Working revision: 1\.1.*
Repository revision: 1\.1 ${CVSROOT_DIRNAME}/first-dir/file1,v
Sticky Tag: b2 (branch: 1\.1\.4)
Sticky Date: (none)
Sticky Options: (none)
===================================================================
File: file3 Status: Locally Added
Working revision: New file!
Repository revision: No revision control file
Sticky Tag: b2 - MISSING from RCS file!
Sticky Date: (none)
Sticky Options: (none)"
cd ../../trunk/first-dir
dotest branches2-17 "${testcvs} update -d -P dir1" \
"${PROG} update: Updating dir1"
dotest_fail branches2-18 "test -d dir1"
dotest branches2-19 "${testcvs} update -d -P -r b1 dir1" \
"${PROG} update: Updating dir1
U dir1/file3"
dotest branches2-20 "${testcvs} -q status" \
"===================================================================
File: file1 Status: Up-to-date
Working revision: 1\.1.*
Repository revision: 1\.1 ${CVSROOT_DIRNAME}/first-dir/file1,v
Sticky Tag: (none)
Sticky Date: (none)
Sticky Options: (none)
===================================================================
File: file3 Status: Up-to-date
Working revision: 1\.1\.2\.1.*
Repository revision: 1\.1\.2\.1 ${CVSROOT_DIRNAME}/first-dir/dir1/Attic/file3,v
Sticky Tag: b1 (branch: 1\.1\.2)
Sticky Date: (none)
Sticky Options: (none)"
rm -r dir1
dotest branches2-21 "${testcvs} update -d -P -j b1 dir1" \
"${PROG} update: Updating dir1
U dir1/file3"
dotest branches2-22 "${testcvs} -q status" \
"===================================================================
File: file1 Status: Up-to-date
Working revision: 1\.1.*
Repository revision: 1\.1 ${CVSROOT_DIRNAME}/first-dir/file1,v
Sticky Tag: (none)
Sticky Date: (none)
Sticky Options: (none)
===================================================================
File: file3 Status: Locally Added
Working revision: New file!
Repository revision: 1\.1 ${CVSROOT_DIRNAME}/first-dir/dir1/Attic/file3,v
Sticky Tag: (none)
Sticky Date: (none)
Sticky Options: (none)"
cd ../..
rm -r b1 b2
mkdir b1a
mkdir b1b
cd b1b
dotest branches2-23 "${testcvs} -q co -r b1 first-dir" \
'U first-dir/file1
U first-dir/file2
U first-dir/dir1/file3'
cd ../b1a
dotest branches2-24 "${testcvs} -q co -r b1 first-dir" \
'U first-dir/file1
U first-dir/file2
U first-dir/dir1/file3'
cd first-dir
mkdir dir2
dotest branches2-25 "${testcvs} add dir2" \
"Directory ${CVSROOT_DIRNAME}/first-dir/dir2 added to the repository
--> Using per-directory sticky tag "'`'"b1'"
echo "file4 first revision" > dir2/file4
dotest branches2-26 "${testcvs} add dir2/file4" \
"${PROG}"' add: scheduling file `dir2/file4'\'' for addition on branch `b1'\''
'"${PROG}"' add: use .'"${PROG}"' commit. to add this file permanently'
dotest branches2-27 "${testcvs} -q commit -madd" \
"RCS file: ${CVSROOT_DIRNAME}/first-dir/dir2/Attic/file4,v
done
Checking in dir2/file4;
${CVSROOT_DIRNAME}/first-dir/dir2/Attic/file4,v <-- file4
new revision: 1\.1\.2\.1; previous revision: 1\.1
done"
cd ../../b1b/first-dir
dotest branches2-28 "${testcvs} update -d dir2" \
"${PROG} update: Updating dir2
U dir2/file4"
cd dir2
dotest branches2-29 "${testcvs} -q status" \
"===================================================================
File: file4 Status: Up-to-date
Working revision: 1\.1\.2\.1.*
Repository revision: 1\.1\.2\.1 ${CVSROOT_DIRNAME}/first-dir/dir2/Attic/file4,v
Sticky Tag: b1 (branch: 1\.1\.2)
Sticky Date: (none)
Sticky Options: (none)"
dotest branches2-30 "cat CVS/Tag" 'Tb1'
cd ..
rm -r dir2
dotest branches2-31 "${testcvs} update -A -d dir2" \
"${PROG} update: Updating dir2"
cd dir2
dotest branches2-32 "${testcvs} -q status" ''
dotest_fail branches2-33 "test -f CVS/Tag"
echo "file5 first revision" > file5
dotest branches2-34 "${testcvs} add file5" \
"${PROG}"' add: scheduling file `file5'\'' for addition
'"${PROG}"' add: use .'"${PROG}"' commit. to add this file permanently'
dotest branches2-35 "${testcvs} -q commit -madd" \
"RCS file: ${CVSROOT_DIRNAME}/first-dir/dir2/file5,v
done
Checking in file5;
${CVSROOT_DIRNAME}/first-dir/dir2/file5,v <-- file5
initial revision: 1\.1
done"
cd ../../../trunk/first-dir
dotest branches2-36 "${testcvs} -q update -d dir2" 'U dir2/file5'
cd dir2
dotest branches2-37 "${testcvs} -q status" \
"===================================================================
File: file5 Status: Up-to-date
Working revision: 1\.1.*
Repository revision: 1\.1 ${CVSROOT_DIRNAME}/first-dir/dir2/file5,v
Sticky Tag: (none)
Sticky Date: (none)
Sticky Options: (none)"
dotest_fail branches2-38 "test -f CVS/status"
cd ../../..
rm -rf ${CVSROOT_DIRNAME}/first-dir
rm -r trunk b1a b1b
;;
tagc)
mkdir 1; cd 1
dotest tagc-1 "${testcvs} -q co -l ." ''
mkdir first-dir
dotest tagc-2 "${testcvs} add first-dir" \
"Directory ${CVSROOT_DIRNAME}/first-dir added to the repository"
cd first-dir
touch file1 file2
dotest tagc-3 "${testcvs} add file1 file2" \
"${PROG} add: scheduling file .file1. for addition
${PROG} add: scheduling file .file2. for addition
${PROG} add: use .${PROG} commit. to add these files permanently"
dotest tagc-4 "${testcvs} -q ci -m add" \
"RCS file: ${CVSROOT_DIRNAME}/first-dir/file1,v
done
Checking in file1;
${CVSROOT_DIRNAME}/first-dir/file1,v <-- file1
initial revision: 1\.1
done
RCS file: ${CVSROOT_DIRNAME}/first-dir/file2,v
done
Checking in file2;
${CVSROOT_DIRNAME}/first-dir/file2,v <-- file2
initial revision: 1\.1
done"
dotest tagc-5 "${testcvs} -q tag -c tag1" \
"T file1
T file2"
touch file1 file2
dotest tagc-6 "${testcvs} -q tag -c tag2" \
"T file1
T file2"
sleep 1
echo myedit >>file1
dotest tagc-6a "${testcvs} rm -f file2" \
"${PROG} remove: scheduling .file2. for removal
${PROG} remove: use .${PROG} commit. to remove this file permanently"
touch file3
dotest tagc-6b "${testcvs} add file3" \
"${PROG} add: scheduling file .file3. for addition
${PROG} add: use .${PROG} commit. to add this file permanently"
dotest_fail tagc-7 "${testcvs} -q tag -c tag3" \
"${PROG} tag: file1 is locally modified
${PROG} tag: file2 is locally modified
${PROG} tag: file3 is locally modified
${PROG} \[tag aborted\]: correct the above errors first!"
cd ../..
mkdir 2
cd 2
dotest tagc-8 "${testcvs} -q co first-dir" \
"U first-dir/file1
U first-dir/file2"
cd ../1/first-dir
dotest tagc-9 "${testcvs} -q ci -m modify" \
"Checking in file1;
${CVSROOT_DIRNAME}/first-dir/file1,v <-- file1
new revision: 1\.2; previous revision: 1\.1
done
Removing file2;
${CVSROOT_DIRNAME}/first-dir/file2,v <-- file2
new revision: delete; previous revision: 1\.1
done
RCS file: ${CVSROOT_DIRNAME}/first-dir/file3,v
done
Checking in file3;
${CVSROOT_DIRNAME}/first-dir/file3,v <-- file3
initial revision: 1\.1
done"
cd ../../2/first-dir
dotest tagc-10 "${testcvs} -q tag -c tag4" \
"${PROG} tag: file2 is no longer in the repository
T file1
T file2"
cd ../..
rm -r 1 2
rm -rf ${CVSROOT_DIRNAME}/first-dir
;;
update-p)
mkdir 1; cd 1
module=x
echo > unused-file
dotest update-p-1 \
"$testcvs -Q import -m. $module X Y" ''
file=F
dotest update-p-2 "$testcvs -Q co $module" ''
cd $module
dotest update-p-3 "$testcvs -Q tag -b B" ''
echo v1 > $file
dotest update-p-4 "$testcvs -Q add $file" ''
dotest update-p-5 "$testcvs -Q ci -m. $file" \
"RCS file: ${CVSROOT_DIRNAME}/$module/$file,v
done
Checking in $file;
${CVSROOT_DIRNAME}/$module/$file,v <-- $file
initial revision: 1\.1
done"
dotest update-p-6 "$testcvs -Q tag T $file" ''
dotest update-p-7 "$testcvs -Q update -rB" ''
dotest update-p-8 "$testcvs -Q update -jT" ''
dotest update-p-9 "$testcvs update -p -rT $file" \
"===================================================================
Checking out $file
RCS: ${CVSROOT_DIRNAME}/$module/$file,v
VERS: 1\.1
\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*
v1"
rm $file
dotest update-p-10 "$testcvs update -p -rT $file" \
"===================================================================
Checking out $file
RCS: ${CVSROOT_DIRNAME}/$module/$file,v
VERS: 1\.1
\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*
v1"
touch new
dotest update-p-a1 "$testcvs -Q add new" ''
dotest update-p-a2 "$testcvs -Q update -p new" ''
dotest update-p-a3 "$testcvs -Q rm -f new" ''
dotest update-p-undead-0 "$testcvs update -A" \
"${PROG} update: Updating \.
${PROG} update: warning: new-born $file has disappeared"
dotest update-p-undead-1 "$testcvs update" \
"${PROG} update: Updating \.
U $file"
dotest update-p-undead-2 "$testcvs -Q update -p -rT $file" v1
dotest update-p-undead-3 "$testcvs -Q rm -f $file" ''
dotest update-p-undead-4 "$testcvs -Q update -p -rT $file" v1
dotest update-p-undead-5 "$testcvs -Q ci -m. $file" \
"Removing $file;
${CVSROOT_DIRNAME}/$module/$file,v <-- $file
new revision: delete; previous revision: 1\.1
done"
dotest update-p-undead-6 "$testcvs -Q update -p -rT $file" v1
echo v2 > $file
dotest update-p-undead-7 "$testcvs -Q update -p -rT $file" v1
dotest update-p-undead-8 "$testcvs add $file" \
"${PROG} add: Re-adding file .$file. (in place of dead revision 1\.2)\.
${PROG} add: use .${PROG} commit. to add this file permanently"
dotest update-p-undead-9 "$testcvs -Q update -p -rT $file" v1
cd ../..
rm -rf 1
rm -rf ${CVSROOT_DIRNAME}/$module
;;
tagf)
mkdir 1; cd 1
dotest tagf-1 "${testcvs} -q co -l ." ''
mkdir first-dir
dotest tagf-2 "${testcvs} add first-dir" \
"Directory ${CVSROOT_DIRNAME}/first-dir added to the repository"
cd first-dir
touch file1 file2
dotest tagf-3 "${testcvs} add file1 file2" \
"${PROG} add: scheduling file .file1. for addition
${PROG} add: scheduling file .file2. for addition
${PROG} add: use .${PROG} commit. to add these files permanently"
dotest tagf-4 "${testcvs} -q ci -m add" \
"RCS file: ${CVSROOT_DIRNAME}/first-dir/file1,v
done
Checking in file1;
${CVSROOT_DIRNAME}/first-dir/file1,v <-- file1
initial revision: 1\.1
done
RCS file: ${CVSROOT_DIRNAME}/first-dir/file2,v
done
Checking in file2;
${CVSROOT_DIRNAME}/first-dir/file2,v <-- file2
initial revision: 1\.1
done"
dotest tagf-5 "${testcvs} -q tag -b br" "T file1
T file2"
dotest tagf-6 "${testcvs} -q update -r br" ""
echo brmod >> file1
echo brmod >> file2
dotest tagf-7 "${testcvs} -q ci -m modify" \
"Checking in file1;
${CVSROOT_DIRNAME}/first-dir/file1,v <-- file1
new revision: 1\.1\.2\.1; previous revision: 1\.1
done
Checking in file2;
${CVSROOT_DIRNAME}/first-dir/file2,v <-- file2
new revision: 1\.1\.2\.1; previous revision: 1\.1
done"
dotest tagf-8a "${testcvs} -q tag -F br" \
"${PROG} tag: file1: Not moving branch tag .br. from 1\.1\.2\.1 to 1\.1\\.2\.1\.
${PROG} tag: file2: Not moving branch tag .br. from 1\.1\.2\.1 to 1\.1\.2\.1\."
dotest tagf-8 "${testcvs} -q tag -F -B br" "T file1
T file2"
echo moremod >> file1
echo moremod >> file2
dotest tagf-9 "${testcvs} -q status -v file1" \
"===================================================================
File: file1 Status: Locally Modified
Working revision: 1\.1\.2\.1.*
Repository revision: 1\.1\.2\.1 ${CVSROOT_DIRNAME}/first-dir/file1,v
Sticky Tag: br (revision: 1\.1\.2\.1)
Sticky Date: (none)
Sticky Options: (none)
Existing Tags:
br (revision: 1\.1\.2\.1)"
dotest tagf-10 "${testcvs} -q tag -d br" "D file1
D file2"
dotest tagf-11 "${testcvs} -q tag -r 1.1 -b br file1" "T file1"
dotest tagf-12 "${testcvs} -q admin -nbr:1.1.2 file2" \
"RCS file: ${CVSROOT_DIRNAME}/first-dir/file2,v
done"
dotest tagf-13 "${testcvs} -q update -r br" \
"RCS file: ${CVSROOT_DIRNAME}/first-dir/file1,v
retrieving revision 1\.1\.2\.1
retrieving revision 1\.1
Merging differences between 1\.1\.2\.1 and 1\.1 into file1
rcsmerge: warning: conflicts during merge
${PROG} update: conflicts found in file1
C file1
M file2"
dotest tagf-14 "cat file1" \
"<<<<<<< file1
brmod
moremod
[=]======
[>]>>>>>> 1\.1"
echo resolve >file1
dotest tagf-15 "${testcvs} -q ci -m recovered" \
"Checking in file1;
${CVSROOT_DIRNAME}/first-dir/file1,v <-- file1
new revision: 1\.1\.4\.1; previous revision: 1\.1
done
Checking in file2;
${CVSROOT_DIRNAME}/first-dir/file2,v <-- file2
new revision: 1\.1\.2\.2; previous revision: 1\.1\.2\.1
done"
dotest_fail tagf-16 "${testcvs} tag -d br" \
"${PROG} tag: Untagging \.
${PROG} tag: Not removing branch tag .br. from .${CVSROOT_DIRNAME}/first-dir/file1,v.\.
${PROG} tag: Not removing branch tag .br. from .${CVSROOT_DIRNAME}/first-dir/file2,v.\."
dotest_fail tagf-17 "${testcvs} rtag -d br first-dir" \
"${PROG} rtag: Untagging first-dir
${PROG} rtag: Not removing branch tag .br. from .${CVSROOT_DIRNAME}/first-dir/file1,v.\.
${PROG} rtag: Not removing branch tag .br. from .${CVSROOT_DIRNAME}/first-dir/file2,v.\."
dotest tagf-18 "${testcvs} tag -r1.1 -F br file1" \
"${PROG} tag: file1: Not moving branch tag .br. from 1\.1\.4\.1 to 1\.1\."
dotest tagf-19 "${testcvs} rtag -r1.1 -F br first-dir" \
"${PROG} rtag: Tagging first-dir
${PROG} rtag: first-dir/file1: Not moving branch tag .br. from 1\.1\.4\.1 to 1\.1\.
${PROG} rtag: first-dir/file2: Not moving branch tag .br. from 1\.1\.2\.2 to 1\.1\."
dotest tagf-20 "${testcvs} rtag regulartag first-dir" \
"${PROG} rtag: Tagging first-dir"
dotest tagf-21 "${testcvs} tag -F -B -b regulartag file1" \
"${PROG} tag: file1: Not moving non-branch tag .regulartag. from 1\.1 to 1\.1\.4\.1\.0\.2 due to .-B. option\."
dotest tagf-22 "${testcvs} rtag -F -B -b regulartag first-dir" \
"${PROG} rtag: Tagging first-dir
${PROG} rtag: first-dir/file1: Not moving non-branch tag .regulartag. from 1\.1 to 1\.1\.0\.6 due to .-B. option\.
${PROG} rtag: first-dir/file2: Not moving non-branch tag .regulartag. from 1\.1 to 1\.1\.0\.4 due to .-B. option\."
dotest_fail tagf-23 "${testcvs} tag -d -B regulartag file1" \
"${PROG} tag: Not removing non-branch tag .regulartag. from .${CVSROOT_DIRNAME}/first-dir/file1,v. due to .-B. option\."
dotest_fail tagf-24 \
"${testcvs} rtag -d -B regulartag first-dir" \
"${PROG} rtag: Untagging first-dir
${PROG} rtag: Not removing non-branch tag .regulartag. from .${CVSROOT_DIRNAME}/first-dir/file1,v. due to .-B. option\.
${PROG} rtag: Not removing non-branch tag .regulartag. from .${CVSROOT_DIRNAME}/first-dir/file2,v. due to .-B. option\."
dotest tagf-25a "${testcvs} tag -F -b regulartag file1" "T file1"
dotest tagf-25b "${testcvs} tag -F -B -b -r1.1 regulartag file1" \
"T file1"
dotest tagf-26a "${testcvs} rtag -F -b regulartag first-dir" \
"${PROG} rtag: Tagging first-dir
${PROG} rtag: first-dir/file1: Not moving branch tag .regulartag. from 1\.1 to 1\.1\.0\.8\."
dotest tagf-26b "${testcvs} rtag -F -B -b -r1.1 regulartag first-dir" \
"${PROG} rtag: Tagging first-dir"
dotest tagf-27 "${testcvs} update -r regulartag" \
"${PROG} update: Updating \.
U file1
U file2"
echo changes >> file1
echo changes >> file2
dotest tagf-28 "${testcvs} ci -m changes" \
"${PROG} [a-z]*: Examining \.
Checking in file1;
${CVSROOT_DIRNAME}/first-dir/file1,v <-- file1
new revision: 1\.1\.8\.1; previous revision: 1\.1
done
Checking in file2;
${CVSROOT_DIRNAME}/first-dir/file2,v <-- file2
new revision: 1\.1\.6\.1; previous revision: 1\.1
done"
dotest tagf-29 "${testcvs} tag -F -B -r1.1 regulartag file1" \
"T file1"
dotest tagf-29a "${testcvs} tag -F -B -r br regulartag file1" \
"${PROG} tag: file1: Not moving non-branch tag .regulartag. from 1\.1 to 1\.1\.4\.1 due to .-B. option\."
dotest tagf-29b "${testcvs} rtag -F -B -r br regulartag first-dir" \
"${PROG} rtag: Tagging first-dir
${PROG} rtag: first-dir/file1: Not moving non-branch tag .regulartag. from 1\.1 to 1\.1\.4\.1 due to .-B. option\."
dotest tagf-30 "${testcvs} rtag -F -B -r1.1 br first-dir" \
"${PROG} rtag: Tagging first-dir"
dotest tagf-31 "${testcvs} rtag -b brtag first-dir" \
"${PROG} rtag: Tagging first-dir"
dotest tagf-32 "${testcvs} tag -d -B brtag file1" "D file1"
dotest tagf-33 "${testcvs} rtag -d -B brtag first-dir" \
"${PROG} rtag: Untagging first-dir"
cd ../..
rm -r 1
rm -rf ${CVSROOT_DIRNAME}/first-dir
;;
tag-space)
mkdir 1; cd 1
dotest tag-space-init-1 "$testcvs -q co -l ."
mkdir first-dir
dotest tag-space-init-2 "$testcvs add first-dir" \
"Directory $CVSROOT_DIRNAME/first-dir added to the repository"
cd first-dir
touch file1
dotest tag-space-init-3 "$testcvs add file1" \
"$PROG add: scheduling file \`file1' for addition
$PROG add: use '$PROG commit' to add this file permanently"
dotest tag-space-init-4 "$testcvs -Q ci -m add" \
"RCS file: $CVSROOT_DIRNAME/first-dir/file1,v
done
Checking in file1;
$CVSROOT_DIRNAME/first-dir/file1,v <-- file1
initial revision: 1\.1
done"
dotest_fail tag-space-1 "$testcvs tag ' spacetag '" \
"$PROG \[tag aborted\]: tag \` spacetag ' must start with a letter"
dotest_fail tag-space-2 "$testcvs tag 'spacetag '" \
"$PROG \[tag aborted\]: tag \`spacetag ' has non-visible graphic characters"
if $remote; then
dotest tag-space-3 "$testcvs server" \
"E $PROG \[tag aborted\]: tag \` spacetag ' must start with a letter
error " <<EOF
Root $CVSROOT_DIRNAME
UseUnchanged
Argument --
Argument spacetag
Directory .
$CVSROOT_DIRNAME/first-dir
Entry /file1/1.1///
Unchanged file1
tag
EOF
dotest tag-space-4 "$testcvs server" \
"E $PROG \[tag aborted\]: tag \`spacetag ' has non-visible graphic characters
error " <<EOF
Root $CVSROOT_DIRNAME
UseUnchanged
Argument --
Argument spacetag
Directory .
$CVSROOT_DIRNAME/first-dir
Entry /file1/1.1///
Unchanged file1
tag
EOF
fi
dotest tag-space-5 "$testcvs -Q tag t1"
dotest tag-space-5b "$testcvs -Q tag t2"
dotest tag-space-5c "$testcvs -Q tag -b b1"
cd ../..
mkdir 2; cd 2
mkdir project; cd project
touch file1
dotest tag-space-init-4 \
"$testcvs -Q import -mimport second-dir VENDOR RELEASE"
cd ..
dotest_fail tag-space-6 "$testcvs -Q co -r ' spacetag ' first-dir" \
"$PROG \[checkout aborted\]: tag \` spacetag ' must start with a letter"
dotest_fail tag-space-7 "$testcvs -Q co -r ' spacetag ' second-dir" \
"$PROG \[checkout aborted\]: tag \` spacetag ' must start with a letter"
if $remote; then
dotest tag-space-8 "$testcvs server" \
"E $PROG \[checkout aborted\]: tag \` spacetag ' must start with a letter
error " <<EOF
Root $CVSROOT_DIRNAME
Argument -P
Argument -r
Argument spacetag
Argument first-dir
Directory .
$CVSROOT_DIRNAME
co
EOF
dotest tag-space-9 "$testcvs server" \
"E $PROG \[checkout aborted\]: tag \` spacetag ' must start with a letter
error " <<EOF
Root $CVSROOT_DIRNAME
Argument -P
Argument -r
Argument spacetag
Argument second-dir
Directory .
$CVSROOT_DIRNAME
co
EOF
fi
dotest tag-space-10 "$testcvs -Q co second-dir"
cd second-dir
dotest_fail tag-space-11 "$testcvs -Q up -r ' spacetag '" \
"$PROG \[update aborted\]: tag \` spacetag ' must start with a letter"
if $remote; then
dotest tag-space-12 "$testcvs server" \
"E $PROG \[update aborted\]: tag \` spacetag ' must start with a letter
error " <<EOF
Root $CVSROOT_DIRNAME
Argument -r
Argument spacetag
Argument -u
Argument --
Directory .
$CVSROOT_DIRNAME
Unchanged file1
update
EOF
fi
if $keep; then
echo Keeping $TESTDIR and exiting due to --keep
exit 0
fi
cd ../..
rm -r 1 2
rm -rf $CVSROOT_DIRNAME/first-dir $CVSROOT_DIRNAME/second-dir
;;
rcslib)
mkdir ${CVSROOT_DIRNAME}/first-dir
dotest rcsdiff-1 "${testcvs} -q co first-dir" ''
cd first-dir
echo "I am the first foo, and my name is $""Name$." > foo.c
dotest rcsdiff-2 "${testcvs} add -m new-file foo.c" \
"${PROG} add: scheduling file .foo\.c. for addition
${PROG} add: use .${PROG} commit. to add this file permanently"
dotest rcsdiff-3 "${testcvs} commit -m rev1 foo.c" \
"RCS file: ${CVSROOT_DIRNAME}/first-dir/foo\.c,v
done
Checking in foo\.c;
${CVSROOT_DIRNAME}/first-dir/foo.c,v <-- foo\.c
initial revision: 1\.1
done"
dotest rcsdiff-4 "${testcvs} tag first foo.c" "T foo\.c"
dotest rcsdiff-5 "${testcvs} update -p -r first foo.c" \
"===================================================================
Checking out foo\.c
RCS: ${CVSROOT_DIRNAME}/first-dir/foo\.c,v
VERS: 1\.1
\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*
I am the first foo, and my name is \$""Name: first \$\."
echo "I am the second foo, and my name is $""Name$." > foo.c
dotest rcsdiff-6 "${testcvs} commit -m rev2 foo.c" \
"Checking in foo\.c;
${CVSROOT_DIRNAME}/first-dir/foo\.c,v <-- foo\.c
new revision: 1\.2; previous revision: 1\.1
done"
dotest rcsdiff-7 "${testcvs} tag second foo.c" "T foo\.c"
dotest rcsdiff-8 "${testcvs} update -p -r second foo.c" \
"===================================================================
Checking out foo\.c
RCS: ${CVSROOT_DIRNAME}/first-dir/foo\.c,v
VERS: 1\.2
\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*
I am the second foo, and my name is \$""Name: second \$\."
dotest_fail rcsdiff-9 "${testcvs} diff -r first -r second" \
"${PROG} diff: Diffing \.
Index: foo\.c
===================================================================
RCS file: ${CVSROOT_DIRNAME}/first-dir/foo\.c,v
retrieving revision 1\.1
retrieving revision 1\.2
diff -r1\.1 -r1\.2
1c1
< I am the first foo, and my name is \$""Name: \$\.
---
> I am the second foo, and my name is \$""Name: \$\."
echo "I am the once and future foo, and my name is $""Name$." > foo.c
dotest_fail rcsdiff-10 "${testcvs} diff -r first" \
"${PROG} diff: Diffing \.
Index: foo\.c
===================================================================
RCS file: ${CVSROOT_DIRNAME}/first-dir/foo\.c,v
retrieving revision 1\.1
diff -r1\.1 foo\.c
1c1
< I am the first foo, and my name is \$""Name: \$\.
---
> I am the once and future foo, and my name is \$""Name\$\."
cat >rgx.c <<EOF
test_regex (whiz, bang)
{
foo;
bar;
baz;
grumble;
}
EOF
dotest rcslib-diffrgx-1 "${testcvs} -q add -m '' rgx.c" \
"${PROG} add: use .${PROG} commit. to add this file permanently"
dotest rcslib-diffrgx-2 "${testcvs} -q ci -m '' rgx.c" \
"RCS file: ${CVSROOT_DIRNAME}/first-dir/rgx\.c,v
done
Checking in rgx\.c;
${CVSROOT_DIRNAME}/first-dir/rgx\.c,v <-- rgx\.c
initial revision: 1\.1
done"
cat >rgx.c <<EOF
test_regex (whiz, bang)
{
foo;
bar;
baz;
mumble;
}
EOF
dotest_fail rcslib-diffrgx-3 "${testcvs} diff -c -F'.*(' rgx.c" \
"Index: rgx\.c
===================================================================
RCS file: ${CVSROOT_DIRNAME}/first-dir/rgx\.c,v
retrieving revision 1\.1
diff -c -F\.\*( -r1\.1 rgx\.c
\*\*\* rgx\.c ${RFCDATE} 1\.1
--- rgx\.c ${RFCDATE}
\*\*\*\*\*\*\*\*\*\*\*\*\*\*\* test_regex (whiz, bang)
\*\*\* 3,7 \*\*\*\*
foo;
bar;
baz;
! grumble;
}
--- 3,7 ----
foo;
bar;
baz;
! mumble;
}"
cd ..
rm -rf ${CVSROOT_DIRNAME}/first-dir
rm -r first-dir
mkdir 1; cd 1
dotest rcslib-merge-1 "${testcvs} -q co -l ." ""
mkdir first-dir
dotest rcslib-merge-2 "${testcvs} -q add first-dir" \
"Directory ${CVSROOT_DIRNAME}.*/first-dir added to the repository"
cd ..; rm -r 1
dotest rcslib-merge-3 "${testcvs} -q co first-dir" ""
cd first-dir
echo '$''Revision$' > file1
echo '2' >> file1
echo '3' >> file1
dotest rcslib-merge-4 "${testcvs} -q add file1" \
"${PROG} add: use .${PROG} commit. to add this file permanently"
dotest rcslib-merge-5 "${testcvs} -q commit -m '' file1" \
"RCS file: ${CVSROOT_DIRNAME}/first-dir/file1,v
done
Checking in file1;
${CVSROOT_DIRNAME}/first-dir/file1,v <-- file1
initial revision: 1\.1
done"
sed -e 's/2/two/' file1 > f; mv f file1
dotest rcslib-merge-6 "${testcvs} -q commit -m '' file1" \
"Checking in file1;
${CVSROOT_DIRNAME}/first-dir/file1,v <-- file1
new revision: 1\.2; previous revision: 1\.1
done"
dotest rcslib-merge-7 "${testcvs} -q tag -b -r 1.1 patch1" "T file1"
dotest rcslib-merge-8 "${testcvs} -q update -r patch1" "[UP] file1"
dotest rcslib-merge-9 "${testcvs} -q status" \
"===================================================================
File: file1 Status: Up-to-date
Working revision: 1\.1.*
Repository revision: 1\.1 ${CVSROOT_DIRNAME}/first-dir/file1,v
Sticky Tag: patch1 (branch: 1\.1\.2)
Sticky Date: (none)
Sticky Options: (none)"
dotest rcslib-merge-10 "cat file1" \
'$''Revision: 1\.1 $
2
3'
sed -e 's/3/three/' file1 > f; mv f file1
dotest rcslib-merge-11 "${testcvs} -q commit -m '' file1" \
"Checking in file1;
${CVSROOT_DIRNAME}/first-dir/file1,v <-- file1
new revision: 1\.1\.2\.1; previous revision: 1\.1
done"
dotest rcslib-merge-12 "${testcvs} -q update -kv -j1.2" \
"U file1
RCS file: ${CVSROOT_DIRNAME}/first-dir/file1,v
retrieving revision 1\.1
retrieving revision 1\.2
Merging differences between 1\.1 and 1\.2 into file1
rcsmerge: warning: conflicts during merge"
dotest rcslib-merge-13 "cat file1" \
"<<<<<<< file1
1\.1\.2\.1
2
three
[=]======
1\.2
two
3
[>]>>>>>> 1\.2"
if test -n "$remotehost"; then
dotest rcslib-symlink-1remotehost "${CVS_RSH} $remotehost 'ln -s file1,v ${CVSROOT_DIRNAME}/first-dir/file2,v'"
else
dotest rcslib-symlink-1 "ln -s file1,v ${CVSROOT_DIRNAME}/first-dir/file2,v"
fi
dotest rcslib-symlink-2 "${testcvs} update file2" "U file2"
echo "This is a change" >> file2
dotest rcslib-symlink-3 "${testcvs} ci -m because file2" \
"Checking in file2;
${CVSROOT_DIRNAME}/first-dir/file1,v <-- file2
new revision: 1\.1\.2\.2; previous revision: 1\.1\.2\.1
done"
if test -n "$remotehost"; then
dotest rcslib-symlink-4 "$CVS_RSH $remotehost 'ls -l $CVSROOT_DIRNAME/first-dir/file2,v'" \
".*$CVSROOT_DIRNAME/first-dir/file2,v -> file1,v"
else
dotest rcslib-symlink-4 "ls -l $CVSROOT_DIRNAME/first-dir/file2,v" \
".*$CVSROOT_DIRNAME/first-dir/file2,v -> file1,v"
fi
rm file1
dotest rcslib-symlink-3a "${testcvs} -q up file1" \
"${PROG} update: warning: file1 was lost
U file1"
echo "This is a change" >> file1
dotest rcslib-symlink-3b "${testcvs} ci -m because file1" \
"Checking in file1;
${CVSROOT_DIRNAME}/first-dir/file1,v <-- file1
new revision: 1\.1\.2\.[0-9]*; previous revision: 1\.1\.2\.[0-9]*
done"
dotest rcslib-symlink-3c "${testcvs} update file2" "[UP] file2"
echo some new text >file3
dotest rcslib-symlink-3d "${testcvs} -Q add file3" ''
dotest rcslib-symlink-3e "${testcvs} -Q ci -mtest file3" \
"RCS file: ${CVSROOT_DIRNAME}/first-dir/Attic/file3,v
done
Checking in file3;
${CVSROOT_DIRNAME}/first-dir/Attic/file3,v <-- file3
new revision: 1\.1\.2\.1; previous revision: 1\.1
done"
rm -f ${CVSROOT_DIRNAME}/first-dir/file2,v
if test -n "$remotehost"; then
dotest rcslib-symlink-3f "$CVS_RSH $remotehost 'ln -s Attic/file3,v ${CVSROOT_DIRNAME}/first-dir/file2,v'"
else
dotest rcslib-symlink-3f "ln -s Attic/file3,v ${CVSROOT_DIRNAME}/first-dir/file2,v"
fi
dotest rcslib-symlink-3g "${testcvs} update file2" "U file2"
dotest rcslib-symlink-3i "${testcvs} -Q rm -f file3" ''
dotest rcslib-symlink-3j "${testcvs} -Q ci -mwhatever file3" \
"Removing file3;
${CVSROOT_DIRNAME}/first-dir/Attic/file3,v <-- file3
new revision: delete; previous revision: 1\.1\.2\.1
done"
rm -f ${CVSROOT_DIRNAME}/first-dir/file2,v
rm -f ${CVSROOT_DIRNAME}/first-dir/Attic/file3,v
if test -n "$remotehost"; then
dotest rcslib-symlink-3h "$CVS_RSH $remotehost 'ln -s file1,v ${CVSROOT_DIRNAME}/first-dir/file2,v'"
else
dotest rcslib-symlink-3h "ln -s file1,v ${CVSROOT_DIRNAME}/first-dir/file2,v"
fi
dotest rcslib-symlink-5 "${testcvs} tag the_tag" \
"${PROG} tag: Tagging .
T file1
W file2 : the_tag already exists on version 1.1.2.3 : NOT MOVING tag to version 1.1.2.1"
if test -n "$remotehost"; then
dotest rcslib-symlink-6 "$CVS_RSH $remotehost 'ls -l $CVSROOT_DIRNAME/first-dir/file2,v'" \
".*$CVSROOT_DIRNAME/first-dir/file2,v -> file1,v"
else
dotest rcslib-symlink-6 "ls -l $CVSROOT_DIRNAME/first-dir/file2,v" \
".*$CVSROOT_DIRNAME/first-dir/file2,v -> file1,v"
fi
cd ..
mkdir 2; cd 2
dotest rcslib-symlink-7 "${testcvs} -q co first-dir" \
"U first-dir/file1
U first-dir/file2"
cd first-dir
dotest rcslib-symlink-8 "${testcvs} rm -f file2" \
"${PROG} remove: scheduling .file2. for removal
${PROG} remove: use .${PROG} commit. to remove this file permanently"
dotest rcslib-symlink-9 "${testcvs} -q ci -m rm-it" \
"Removing file2;
${CVSROOT_DIRNAME}/first-dir/file1,v <-- file2
new revision: delete; previous revision: 1\.2
done"
dotest rcslib-symlink-10 \
"${testcvs} -q rtag -b -r the_tag brtag first-dir" \
"${PROG} rtag: could not read RCS file for file2
${PROG} rtag: could not read RCS file for first-dir/file2
${PROG} rtag: could not read RCS file for first-dir/file2"
dotest rcslib-long-symlink-init-1 "$testcvs -Q up -A"
dotest rcslib-long-symlink-init-2 "$testcvs -Q add file1"
dotest rcslib-long-symlink-init-3 "$testcvs -Q ci -mback" \
"Checking in file1;
$CVSROOT_DIRNAME/first-dir/file1,v <-- file1
new revision: 1\.4; previous revision: 1\.3
done"
cd ../..
longpath=$CVSROOT_DIRNAME
count=0
while test $count -lt 10; do
count=`expr $count + 1`
longpath=$longpath/123456789012345678901234567890
mkdir $longpath
done
cp $CVSROOT_DIRNAME/first-dir/file1,v $longpath
mkdir $CVSROOT_DIRNAME/second-dir
if test -n "$remotehost"; then
dotest rcslib-long-symlink-1rh \
"$CVS_RSH $remotehost 'ln -s $longpath/file1,v $CVSROOT_DIRNAME/second-dir/fileX,v'"
else
dotest rcslib-long-symlink-1 \
"ln -s $longpath/file1,v $CVSROOT_DIRNAME/second-dir/fileX,v"
fi
dotest rcslib-long-symlink-2 "$testcvs co second-dir" \
"$PROG checkout: Updating second-dir
U second-dir/fileX"
cd second-dir
echo change-it >>fileX
dotest rcslib-long-symlink-3 "$testcvs -q ci -mwrite-it" \
"Checking in fileX;
$CVSROOT_DIRNAME/123456789012345678901234567890/123456789012345678901234567890/123456789012345678901234567890/123456789012345678901234567890/123456789012345678901234567890/123456789012345678901234567890/123456789012345678901234567890/123456789012345678901234567890/123456789012345678901234567890/123456789012345678901234567890/file1,v <-- fileX
new revision: 1\.5; previous revision: 1\.4
done"
if $keep; then
echo Keeping ${TESTDIR} and exiting due to --keep
exit 0
fi
cd ..
if test -n "$remotehost"; then
$CVS_RSH $remotehost \
"rm -f $CVSROOT_DIRNAME/first-dir/file2,v $CVSROOT_DIRNAME/second-dir/fileX,v"
fi
rm -rf $CVSROOT_DIRNAME/first-dir $CVSROOT_DIRNAME/second-dir \
$CVSROOT_DIRNAME/123456789012345678901234567890
rm -r first-dir second-dir 2
;;
multibranch)
mkdir ${CVSROOT_DIRNAME}/first-dir
dotest multibranch-1 "${testcvs} -q co first-dir" ''
cd first-dir
echo 1:trunk-1 >file1
dotest multibranch-2 "${testcvs} add file1" \
"${PROG}"' add: scheduling file `file1'\'' for addition
'"${PROG}"' add: use .'"${PROG}"' commit. to add this file permanently'
dotest_lit multibranch-3 "${testcvs} -q ci -m add-it" <<HERE
RCS file: ${CVSROOT_DIRNAME}/first-dir/file1,v
done
Checking in file1;
${CVSROOT_DIRNAME}/first-dir/file1,v <-- file1
initial revision: 1.1
done
HERE
dotest multibranch-4 "${testcvs} tag -b br1" \
"${PROG} tag: Tagging \.
T file1"
dotest multibranch-5 "${testcvs} tag -b br2" \
"${PROG} tag: Tagging \.
T file1"
dotest multibranch-6 "${testcvs} -q update -r br1" ''
echo on-br1 >file1
dotest multibranch-7 "${testcvs} -q ci -m modify-on-br1" \
"Checking in file1;
${CVSROOT_DIRNAME}/first-dir/file1,v <-- file1
new revision: 1\.1\.2\.1; previous revision: 1\.1
done"
dotest multibranch-8 "${testcvs} -q update -r br2" '[UP] file1'
echo br2 adds a line >>file1
dotest multibranch-9 "${testcvs} -q ci -m modify-on-br2" \
"Checking in file1;
${CVSROOT_DIRNAME}/first-dir/file1,v <-- file1
new revision: 1\.1\.4\.1; previous revision: 1\.1
done"
dotest multibranch-10 "${testcvs} -q update -r br1" '[UP] file1'
dotest multibranch-11 "cat file1" 'on-br1'
dotest multibranch-12 "${testcvs} -q update -r br2" '[UP] file1'
dotest multibranch-13 "cat file1" '1:trunk-1
br2 adds a line'
dotest multibranch-14 "${testcvs} log file1" \
"
RCS file: ${CVSROOT_DIRNAME}/first-dir/file1,v
Working file: file1
head: 1\.1
branch:
locks: strict
access list:
symbolic names:
br2: 1\.1\.0\.4
br1: 1\.1\.0\.2
keyword substitution: kv
total revisions: 3; selected revisions: 3
description:
----------------------------
revision 1\.1
date: [0-9/]* [0-9:]*; author: ${username}; state: Exp;
branches: 1\.1\.2; 1\.1\.4;
add-it
----------------------------
revision 1\.1\.4\.1
date: [0-9/]* [0-9:]*; author: ${username}; state: Exp; lines: ${PLUS}1 -0
modify-on-br2
----------------------------
revision 1\.1\.2\.1
date: [0-9/]* [0-9:]*; author: ${username}; state: Exp; lines: ${PLUS}1 -1
modify-on-br1
============================================================================="
cd ..
if $keep; then
echo Keeping ${TESTDIR} and exiting due to --keep
exit 0
fi
rm -rf ${CVSROOT_DIRNAME}/first-dir
rm -r first-dir
;;
import)
mkdir import-dir ; cd import-dir
for i in 1 2 3 4 ; do
echo imported file"$i" > imported-f"$i"
done
mkdir RCS
echo ignore.me >RCS/ignore.me
echo 'import should not expand $''Id$' >>imported-f2
cp imported-f2 ../imported-f2-orig.tmp
dotest_sort import-96 \
"${testcvs} import -m first-import first-dir vendor-branch junk-1_0" \
"
I first-dir/RCS
N first-dir/imported-f1
N first-dir/imported-f2
N first-dir/imported-f3
N first-dir/imported-f4
No conflicts created by this import"
dotest import-96.5 "cmp ../imported-f2-orig.tmp imported-f2" ''
cd ..
dotest import-97 "${testcvs} -q co first-dir" \
"U first-dir/imported-f1
U first-dir/imported-f2
U first-dir/imported-f3
U first-dir/imported-f4"
cd first-dir
for i in 1 2 3 4 ; do
dotest import-98-$i "test -f imported-f$i" ''
done
dotest_fail import-98.5 "test -d RCS" ''
rm imported-f1
dotest import-99 "${testcvs} rm imported-f1" \
"${PROG}"' remove: scheduling `imported-f1'\'' for removal
'"${PROG}"' remove: use .'"${PROG}"' commit. to remove this file permanently'
echo local-change >> imported-f2
dotest import-100 "${testcvs} ci -m local-changes" \
"${PROG} [a-z]*: Examining .
Removing imported-f1;
${CVSROOT_DIRNAME}/first-dir/imported-f1,v <-- imported-f1
new revision: delete; previous revision: 1\.1\.1\.1
done
Checking in imported-f2;
${CVSROOT_DIRNAME}/first-dir/imported-f2,v <-- imported-f2
new revision: 1\.2; previous revision: 1\.1
done"
dotest import-101 "${testcvs} log imported-f1" \
"
RCS file: ${CVSROOT_DIRNAME}/first-dir/Attic/imported-f1,v
Working file: imported-f1
head: 1\.2
branch:
locks: strict
access list:
symbolic names:
junk-1_0: 1\.1\.1\.1
vendor-branch: 1\.1\.1
keyword substitution: kv
total revisions: 3; selected revisions: 3
description:
----------------------------
revision 1\.2
date: [0-9/]* [0-9:]*; author: ${username}; state: dead; lines: ${PLUS}0 -0
local-changes
----------------------------
revision 1\.1
date: [0-9/]* [0-9:]*; author: ${username}; state: Exp;
branches: 1\.1\.1;
Initial revision
----------------------------
revision 1\.1\.1\.1
date: [0-9/]* [0-9:]*; author: ${username}; state: Exp; lines: ${PLUS}0 -0
first-import
============================================================================="
dotest import-102 "${testcvs} update -rvendor-branch" \
"${PROG} update: Updating .
[UP] imported-f1
[UP] imported-f2"
rm imported-f4
dotest import-103 "${testcvs} rm imported-f4" \
"${PROG}"' remove: scheduling `imported-f4'\'' for removal
'"${PROG}"' remove: use .'"${PROG}"' commit. to remove this file permanently'
dotest import-104 \
"${testcvs} ci -m vendor-removed imported-f4" \
"Removing imported-f4;
${CVSROOT_DIRNAME}/first-dir/imported-f4,v <-- imported-f4
new revision: delete; previous revision: 1\.1\.1\.1
done"
dotest import-105 "${testcvs} -q update -A" \
"${PROG} update: imported-f1 is no longer in the repository
[UP] imported-f2"
cd ../import-dir
for i in 1 2 3 ; do
echo rev 2 of file $i >> imported-f"$i"
done
cp imported-f2 ../imported-f2-orig.tmp
dotest_sort import-106 \
"${testcvs} import -m second-import first-dir vendor-branch junk-2_0" \
"
${PROG} checkout -j<prev_rel_tag> -jjunk-2_0 first-dir
2 conflicts created by this import.
C first-dir/imported-f1
C first-dir/imported-f2
I first-dir/RCS
U first-dir/imported-f3
U first-dir/imported-f4
Use the following command to help the merge:"
dotest import-106.5 "cmp ../imported-f2-orig.tmp imported-f2" \
''
cd ..
rm imported-f2-orig.tmp
dotest import-107 "${testcvs} co first-dir" \
"${PROG} checkout: Updating first-dir
[UP] first-dir/imported-f3
[UP] first-dir/imported-f4"
cd first-dir
dotest_fail import-108 "test -f imported-f1" ''
for i in 2 3 ; do
dotest import-109-$i "test -f imported-f$i" ''
done
dotest import-110 "${testcvs} -q update -rvendor-branch" \
"[UP] imported-f1
[UP] imported-f2"
dotest import-111 "test -f imported-f4" ''
dotest import-112 "${testcvs} -q update -A" \
"${PROG} update: imported-f1 is no longer in the repository
[UP] imported-f2"
cd ..
dotest import-113 \
"${testcvs} -q co -jjunk-1_0 -jjunk-2_0 first-dir" \
"${PROG} checkout: file first-dir/imported-f1 does not exist, but is present in revision junk-2_0
RCS file: ${CVSROOT_DIRNAME}/first-dir/imported-f2,v
retrieving revision 1\.1\.1\.1
retrieving revision 1\.1\.1\.2
Merging differences between 1\.1\.1\.1 and 1\.1\.1\.2 into imported-f2
rcsmerge: warning: conflicts during merge
first-dir/imported-f3 already contains the differences between 1\.1\.1\.1 and 1\.1\.1\.2
first-dir/imported-f4 already contains the differences between 1\.1\.1\.1 and 1\.1\.1\.3"
cd first-dir
dotest_fail import-114 "test -f imported-f1" ''
for i in 2 3 ; do
dotest import-115-$i "test -f imported-f$i" ''
done
dotest import-116 'cat imported-f2' \
'imported file2
[<]<<<<<< imported-f2
import should not expand \$''Id: imported-f2,v 1\.2 [0-9/]* [0-9:]* '"${username}"' Exp \$
local-change
[=]======
import should not expand \$''Id: imported-f2,v 1\.1\.1\.2 [0-9/]* [0-9:]* '"${username}"' Exp \$
rev 2 of file 2
[>]>>>>>> 1\.1\.1\.2'
cd ..
rm -r first-dir
rm -rf ${CVSROOT_DIRNAME}/first-dir
rm -r import-dir
;;
importb)
mkdir imp-dir
cd imp-dir
echo 'OpenMunger sources' >file1
echo 'OpenMunger sources' >file2
dotest_sort importb-1 \
"${testcvs} import -m add first-dir openmunger openmunger-1_0" \
"
N first-dir/file1
N first-dir/file2
No conflicts created by this import"
cd ..
rm -r imp-dir
mkdir imp-dir
cd imp-dir
echo 'FreeMunger sources' >file1
echo 'FreeMunger sources' >file2
dotest_sort importb-2 \
"${testcvs} -d ${CVSROOT} import -m add -b 1.1.3 first-dir freemunger freemunger-1_0" \
"
${PROG} -d ${CVSROOT} checkout -j<prev_rel_tag> -jfreemunger-1_0 first-dir
2 conflicts created by this import.
C first-dir/file1
C first-dir/file2
Use the following command to help the merge:"
cd ..
rm -r imp-dir
mkdir imp-dir
cd imp-dir
echo 'my own stuff' >mine1.c
echo 'my own stuff' >mine2.c
dotest_fail importb-3 \
"${testcvs} import -m add -b 1 second-dir dummy really_dumb_y" \
"$PROG \[import aborted\]: Only numeric branch specifications with two dots are
supported by import, not \`1'\. For example: \`1\.1\.1'\."
: when we implement main-branch import, should be \
"N second-dir/mine1\.c
N second-dir/mine2\.c
No conflicts created by this import"
cd ..
rm -r imp-dir
mkdir 1
cd 1
dotest importb-4 "${testcvs} -q co first-dir" \
"U first-dir/file1
U first-dir/file2"
cd first-dir
dotest importb-5 "${testcvs} -q log file1" "
RCS file: ${CVSROOT_DIRNAME}/first-dir/file1,v
Working file: file1
head: 1\.1
branch: 1\.1\.1
locks: strict
access list:
symbolic names:
freemunger-1_0: 1\.1\.3\.1
freemunger: 1\.1\.3
openmunger-1_0: 1\.1\.1\.1
openmunger: 1\.1\.1
keyword substitution: kv
total revisions: 3; selected revisions: 3
description:
----------------------------
revision 1\.1
date: [0-9/]* [0-9:]*; author: ${username}; state: Exp;
branches: 1\.1\.1; 1\.1\.3;
Initial revision
----------------------------
revision 1\.1\.3\.1
date: [0-9/]* [0-9:]*; author: ${username}; state: Exp; lines: ${PLUS}1 -1
add
----------------------------
revision 1\.1\.1\.1
date: [0-9/]* [0-9:]*; author: ${username}; state: Exp; lines: ${PLUS}0 -0
add
============================================================================="
cd ../..
rm -r 1
rm -rf ${CVSROOT_DIRNAME}/first-dir ${CVSROOT_DIRNAME}/second-dir
;;
importc)
mkdir 1; cd 1
mkdir adir bdir cdir
mkdir adir/sub1 adir/sub2
mkdir adir/sub1/ssdir
mkdir bdir/subdir
touch adir/sub1/file1 adir/sub2/file2 adir/sub1/ssdir/ssfile
touch -t 197107040343 bdir/subdir/file1
touch -t 203412251801 cdir/cfile
dotest_sort importc-1 \
"${testcvs} import -d -m import-it first-dir vendor release" \
"
N first-dir/adir/sub1/file1
N first-dir/adir/sub1/ssdir/ssfile
N first-dir/adir/sub2/file2
N first-dir/bdir/subdir/file1
N first-dir/cdir/cfile
No conflicts created by this import
${PROG} import: Importing ${CVSROOT_DIRNAME}/first-dir/adir
${PROG} import: Importing ${CVSROOT_DIRNAME}/first-dir/adir/sub1
${PROG} import: Importing ${CVSROOT_DIRNAME}/first-dir/adir/sub1/ssdir
${PROG} import: Importing ${CVSROOT_DIRNAME}/first-dir/adir/sub2
${PROG} import: Importing ${CVSROOT_DIRNAME}/first-dir/bdir
${PROG} import: Importing ${CVSROOT_DIRNAME}/first-dir/bdir/subdir
${PROG} import: Importing ${CVSROOT_DIRNAME}/first-dir/cdir"
cd ..
mkdir 2; cd 2
dotest importc-2 "${testcvs} -q co first-dir" \
"U first-dir/adir/sub1/file1
U first-dir/adir/sub1/ssdir/ssfile
U first-dir/adir/sub2/file2
U first-dir/bdir/subdir/file1
U first-dir/cdir/cfile"
cd first-dir
dotest importc-3 "${testcvs} update adir/sub1" \
"${PROG} update: Updating adir/sub1
${PROG} update: Updating adir/sub1/ssdir"
dotest importc-4 "${testcvs} update adir/sub1 bdir/subdir" \
"${PROG} update: Updating adir/sub1
${PROG} update: Updating adir/sub1/ssdir
${PROG} update: Updating bdir/subdir"
echo modify >>cdir/cfile
dotest importc-5 \
"${testcvs} -q rtag -b -r release wip_test first-dir" ""
dotest importc-6 "${testcvs} -q update -r wip_test" "M cdir/cfile"
dotest importc-7 "${testcvs} -q ci -m modify -r wip_test" \
"Checking in cdir/cfile;
${CVSROOT_DIRNAME}/first-dir/cdir/cfile,v <-- cfile
new revision: 1\.1\.1\.1\.2\.1; previous revision: 1\.1\.1\.1
done"
dotest importc-8 "${testcvs} -q log cdir/cfile" "
RCS file: ${CVSROOT_DIRNAME}/first-dir/cdir/cfile,v
Working file: cdir/cfile
head: 1\.1
branch: 1\.1\.1
locks: strict
access list:
symbolic names:
wip_test: 1\.1\.1\.1\.0\.2
release: 1\.1\.1\.1
vendor: 1\.1\.1
keyword substitution: kv
total revisions: 3; selected revisions: 3
description:
----------------------------
revision 1\.1
date: 2034/12/2[4-6] [0-9][0-9]:01:[0-9][0-9]; author: ${username}; state: Exp;
branches: 1\.1\.1;
Initial revision
----------------------------
revision 1\.1\.1\.1
date: 2034/12/2[4-6] [0-9][0-9]:01:[0-9][0-9]; author: ${username}; state: Exp; lines: ${PLUS}0 -0
branches: 1\.1\.1\.1\.2;
import-it
----------------------------
revision 1\.1\.1\.1\.2\.1
date: [0-9/]* [0-9:]*; author: ${username}; state: Exp; lines: ${PLUS}1 -0
modify
============================================================================="
dotest importc-9 "${testcvs} -q log bdir/subdir/file1" "
RCS file: ${CVSROOT_DIRNAME}/first-dir/bdir/subdir/file1,v
Working file: bdir/subdir/file1
head: 1\.1
branch: 1\.1\.1
locks: strict
access list:
symbolic names:
wip_test: 1\.1\.1\.1\.0\.2
release: 1\.1\.1\.1
vendor: 1\.1\.1
keyword substitution: kv
total revisions: 2; selected revisions: 2
description:
----------------------------
revision 1\.1
date: 1971/07/0[3-5] [0-9][0-9]:43:[0-9][0-9]; author: ${username}; state: Exp;
branches: 1\.1\.1;
Initial revision
----------------------------
revision 1\.1\.1\.1
date: 1971/07/0[3-5] [0-9][0-9]:43:[0-9][0-9]; author: ${username}; state: Exp; lines: ${PLUS}0 -0
import-it
============================================================================="
cd ..
cd ../1
dotest_fail importc-10 \
"${testcvs} import -m imp ../other vendor release2" \
"${PROG} \[[a-z]* aborted\]: directory \.\./other not relative within the repository"
dotest_fail importc-11 \
"${testcvs} import -m imp ${TESTDIR}/other vendor release3" \
"${PROG} \[[a-z]* aborted\]: directory ${TESTDIR}/other not relative within the repository"
dotest_fail importc-12 "test -d ${TESTDIR}/other" ""
cd ..
rm -r 1 2
rm -rf ${CVSROOT_DIRNAME}/first-dir
;;
import-CVS)
mkdir import-CVS
cd import-CVS
touch file1 file2 file3
dotest_fail import-CVS-1 "$testcvs import CVS vtag rtag" \
"$PROG import: The word \`CVS' is reserved by CVS and may not be used
$PROG \[import aborted\]: as a directory in a path or as a file name\."
mkdir sdir
mkdir sdir/CVS
touch sdir/CVS/file4 sdir/CVS/file5 sdir/file6 sdir/file7
dotest_sort import-CVS-2 \
"$testcvs import -I! -mimport import-CVS vtag rtag" \
"
I import-CVS/sdir/CVS
N import-CVS/file1
N import-CVS/file2
N import-CVS/file3
N import-CVS/sdir/file6
N import-CVS/sdir/file7
No conflicts created by this import
$PROG import: Importing $CVSROOT_DIRNAME/import-CVS/sdir"
if $keep; then
echo Keeping ${TESTDIR} and exiting due to --keep
exit 0
fi
cd ..
rm -r import-CVS
rm -rf $CVSROOT_DIRNAME/import-CVS
;;
import-quirks)
mkdir import-quirks
cd import-quirks
touch file1 file2 file3
dotest_fail import-quirks-1 \
"$testcvs import -b1.1. -mbad-bad-bad import-quirks VB RT" \
"$PROG \[import aborted\]: Only numeric branch specifications with two dots are
supported by import, not \`1\.1\.'\. For example: \`1\.1\.1'\."
dotest_fail import-quirks-2 \
"$testcvs import -b1.1.1.. -mbad-bad-bad import-quirks VB RT" \
"$PROG \[import aborted\]: Only numeric branch specifications with two dots are
supported by import, not \`1\.1\.1\.\.'\. For example: \`1\.1\.1'\."
dotest_sort import-quirks-2 \
"$testcvs import -b10.10.101 -mthis-ones-ok import-quirks-2 VB RT" \
"
N import-quirks-2/file1
N import-quirks-2/file2
N import-quirks-2/file3
No conflicts created by this import"
dotest_sort import-quirks-3 \
"$testcvs import -b2345678901.2345678901.2345678901 -mthis-ones-ok import-quirks-3 VB RT" \
"
N import-quirks-3/file1
N import-quirks-3/file2
N import-quirks-3/file3
No conflicts created by this import"
dotest_sort import-quirks-4 \
"$testcvs import -b1.1.2 -mthis-ones-ok import-quirks-4 VB RT" \
"
N import-quirks-4/file1
N import-quirks-4/file2
N import-quirks-4/file3
No conflicts created by this import"
if $keep; then
echo Keeping $TESTDIR and exiting due to --keep
exit 0
fi
cd ..
rm -r import-quirks
rm -rf $CVSROOT_DIRNAME/import-quirks-2 \
$CVSROOT_DIRNAME/import-quirks-3 \
$CVSROOT_DIRNAME/import-quirks-4
;;
import-after-initial)
mkdir 1; cd 1
module=x
echo > unused-file
dotest import-after-initial-1 \
"$testcvs -Q import -m. $module X Y" ''
file=m
dotest import-after-initial-2 "$testcvs -Q co $module" ''
cd $module
echo original > $file
dotest import-after-initial-3 "${testcvs} -Q add $file" ""
dotest import-after-initial-4 "${testcvs} -Q ci -m. $file" \
"RCS file: ${CVSROOT_DIRNAME}/$module/$file,v
done
Checking in $file;
${CVSROOT_DIRNAME}/$module/$file,v <-- $file
initial revision: 1\.1
done"
sleep 2
mkdir sub
cd sub
echo newer-via-import > $file
dotest import-after-initial-5 \
"$testcvs -Q import -m. $module X Y2" ''
cd ..
sleep 1
dotest import-after-initial-6 \
"$testcvs -Q update -p -D now $file" 'original'
cd ../..
rm -rf 1
rm -rf ${CVSROOT_DIRNAME}/$module
;;
branch-after-import)
mkdir branch-after-import
cd branch-after-import
mkdir imp-dir
cd imp-dir
echo 'OpenMunger sources' >file1
echo 'OpenMunger sources' >file2
dotest_sort branch-after-import-1 \
"${testcvs} import -m add first-dir openmunger openmunger-1_0" \
'
N first-dir/file1
N first-dir/file2
No conflicts created by this import'
cd ..
dotest branch-after-import-2 \
"${testcvs} -q co first-dir" \
'U first-dir/file1
U first-dir/file2'
cd first-dir
dotest branch-after-import-3 \
"${testcvs} tag -b TESTTOTRON file1" \
'T file1'
dotest branch-after-import-4 \
"${testcvs} -q update -r TESTTOTRON" \
"${PROG} update: file2 is no longer in the repository"
cp ../imp-dir/file2 .
dotest branch-after-import-5 \
"${testcvs} add file2" \
"${PROG} add: scheduling file .file2. for addition on branch .TESTTOTRON.
${PROG} add: use .${PROG} commit. to add this file permanently"
dotest branch-after-import-6 \
"${testcvs} commit -m cvs-add file2" \
"Checking in file2;
${CVSROOT_DIRNAME}/first-dir/file2,v <-- file2
new revision: 1\.1\.1\.1\.2\.2; previous revision: 1\.1\.1\.1\.2\.1
done"
if $keep; then
echo Keeping ${TESTDIR} and exiting due to --keep
exit 0
fi
cd ../..
rm -r branch-after-import
rm -rf ${CVSROOT_DIRNAME}/first-dir
;;
join)
mkdir ${CVSROOT_DIRNAME}/first-dir
mkdir 1
cd 1
dotest join-1 "${testcvs} -q co first-dir" ''
cd first-dir
echo 'first revision of file3' > file3
echo 'first revision of file4' > file4
echo 'first revision of file6' > file6
echo 'first revision of file8' > file8
echo 'first revision of file9' > file9
dotest join-2 "${testcvs} add file3 file4 file6 file8 file9" \
"${PROG}"' add: scheduling file `file3'\'' for addition
'"${PROG}"' add: scheduling file `file4'\'' for addition
'"${PROG}"' add: scheduling file `file6'\'' for addition
'"${PROG}"' add: scheduling file `file8'\'' for addition
'"${PROG}"' add: scheduling file `file9'\'' for addition
'"${PROG}"' add: use .'"${PROG}"' commit. to add these files permanently'
dotest join-3 "${testcvs} -q commit -m add" \
"RCS file: ${CVSROOT_DIRNAME}/first-dir/file3,v
done
Checking in file3;
${CVSROOT_DIRNAME}/first-dir/file3,v <-- file3
initial revision: 1\.1
done
RCS file: ${CVSROOT_DIRNAME}/first-dir/file4,v
done
Checking in file4;
${CVSROOT_DIRNAME}/first-dir/file4,v <-- file4
initial revision: 1\.1
done
RCS file: ${CVSROOT_DIRNAME}/first-dir/file6,v
done
Checking in file6;
${CVSROOT_DIRNAME}/first-dir/file6,v <-- file6
initial revision: 1\.1
done
RCS file: ${CVSROOT_DIRNAME}/first-dir/file8,v
done
Checking in file8;
${CVSROOT_DIRNAME}/first-dir/file8,v <-- file8
initial revision: 1\.1
done
RCS file: ${CVSROOT_DIRNAME}/first-dir/file9,v
done
Checking in file9;
${CVSROOT_DIRNAME}/first-dir/file9,v <-- file9
initial revision: 1\.1
done"
dotest join-4 "${testcvs} -q tag -b branch ." \
'T file3
T file4
T file6
T file8
T file9'
echo 'first revision of file2' > file2
echo 'second revision of file4' > file4
echo 'first revision of file7' > file7
rm file6 file8 file9
echo 'first revision of file10' > file10
dotest join-5 "${testcvs} add file2 file7 file10" \
"${PROG}"' add: scheduling file `file2'\'' for addition
'"${PROG}"' add: scheduling file `file7'\'' for addition
'"${PROG}"' add: scheduling file `file10'\'' for addition
'"${PROG}"' add: use .'"${PROG}"' commit. to add these files permanently'
dotest join-6 "${testcvs} rm file6 file8 file9" \
"${PROG}"' remove: scheduling `file6'\'' for removal
'"${PROG}"' remove: scheduling `file8'\'' for removal
'"${PROG}"' remove: scheduling `file9'\'' for removal
'"${PROG}"' remove: use .'"${PROG}"' commit. to remove these files permanently'
dotest join-7 "${testcvs} -q ci -mx ." \
"RCS file: ${CVSROOT_DIRNAME}/first-dir/file10,v
done
Checking in file10;
${CVSROOT_DIRNAME}/first-dir/file10,v <-- file10
initial revision: 1\.1
done
RCS file: ${CVSROOT_DIRNAME}/first-dir/file2,v
done
Checking in file2;
${CVSROOT_DIRNAME}/first-dir/file2,v <-- file2
initial revision: 1\.1
done
Checking in file4;
${CVSROOT_DIRNAME}/first-dir/file4,v <-- file4
new revision: 1\.2; previous revision: 1\.1
done
Removing file6;
${CVSROOT_DIRNAME}/first-dir/file6,v <-- file6
new revision: delete; previous revision: 1\.1
done
RCS file: ${CVSROOT_DIRNAME}/first-dir/file7,v
done
Checking in file7;
${CVSROOT_DIRNAME}/first-dir/file7,v <-- file7
initial revision: 1\.1
done
Removing file8;
${CVSROOT_DIRNAME}/first-dir/file8,v <-- file8
new revision: delete; previous revision: 1\.1
done
Removing file9;
${CVSROOT_DIRNAME}/first-dir/file9,v <-- file9
new revision: delete; previous revision: 1\.1
done"
dotest join-7a "${testcvs} rm -f file10" \
"${PROG}"' remove: scheduling `file10'\'' for removal
'"${PROG}"' remove: use .'"${PROG}"' commit. to remove this file permanently'
dotest join-7b "${testcvs} -q ci -mx ." \
"Removing file10;
${CVSROOT_DIRNAME}/first-dir/file10,v <-- file10
new revision: delete; previous revision: 1\.1
done"
cd ../..
mkdir 2
cd 2
dotest join-8 "${testcvs} -q co -r branch first-dir" \
'U first-dir/file3
U first-dir/file4
U first-dir/file6
U first-dir/file8
U first-dir/file9'
cd first-dir
echo 'first branch revision of file3' > file3
echo 'first branch revision of file4' > file4
echo 'first branch revision of file5' > file5
echo 'first branch revision of file6' > file6
echo 'first branch revision of file9' > file9
dotest join-9 "${testcvs} add file5" \
"${PROG}"' add: scheduling file `file5'\'' for addition on branch `branch'\''
'"${PROG}"' add: use .'"${PROG}"' commit. to add this file permanently'
dotest join-10 "${testcvs} -q ci -mx ." \
"Checking in file3;
${CVSROOT_DIRNAME}/first-dir/file3,v <-- file3
new revision: 1\.1\.2\.1; previous revision: 1\.1
done
Checking in file4;
${CVSROOT_DIRNAME}/first-dir/file4,v <-- file4
new revision: 1\.1\.2\.1; previous revision: 1\.1
done
RCS file: ${CVSROOT_DIRNAME}/first-dir/Attic/file5,v
done
Checking in file5;
${CVSROOT_DIRNAME}/first-dir/Attic/file5,v <-- file5
new revision: 1\.1\.2\.1; previous revision: 1\.1
done
Checking in file6;
${CVSROOT_DIRNAME}/first-dir/Attic/file6,v <-- file6
new revision: 1\.1\.2\.1; previous revision: 1\.1
done
Checking in file9;
${CVSROOT_DIRNAME}/first-dir/Attic/file9,v <-- file9
new revision: 1\.1\.2\.1; previous revision: 1\.1
done"
dotest join-11 "${testcvs} -q tag T1 ." \
'T file3
T file4
T file5
T file6
T file8
T file9'
echo 'first branch revision of file1' > file1
echo 'first branch revision of file2' > file2
echo 'second branch revision of file9' > file9
rm file3 file4 file5 file6
dotest join-12 "${testcvs} add file1 file2" \
"${PROG}"' add: scheduling file `file1'\'' for addition on branch `branch'\''
'"${PROG}"' add: scheduling file `file2'\'' for addition on branch `branch'\''
'"${PROG}"' add: use .'"${PROG}"' commit. to add these files permanently'
dotest join-13 "${testcvs} rm file3 file4 file5 file6" \
"${PROG}"' remove: scheduling `file3'\'' for removal
'"${PROG}"' remove: scheduling `file4'\'' for removal
'"${PROG}"' remove: scheduling `file5'\'' for removal
'"${PROG}"' remove: scheduling `file6'\'' for removal
'"${PROG}"' remove: use .'"${PROG}"' commit. to remove these files permanently'
dotest join-14 "${testcvs} -q ci -mx ." \
"RCS file: ${CVSROOT_DIRNAME}/first-dir/Attic/file1,v
done
Checking in file1;
${CVSROOT_DIRNAME}/first-dir/Attic/file1,v <-- file1
new revision: 1\.1\.2\.1; previous revision: 1\.1
done
Checking in file2;
${CVSROOT_DIRNAME}/first-dir/file2,v <-- file2
new revision: 1\.1\.2\.2; previous revision: 1\.1\.2\.1
done
Removing file3;
${CVSROOT_DIRNAME}/first-dir/file3,v <-- file3
new revision: delete; previous revision: 1\.1\.2\.1
done
Removing file4;
${CVSROOT_DIRNAME}/first-dir/file4,v <-- file4
new revision: delete; previous revision: 1\.1\.2\.1
done
Removing file5;
${CVSROOT_DIRNAME}/first-dir/Attic/file5,v <-- file5
new revision: delete; previous revision: 1\.1\.2\.1
done
Removing file6;
${CVSROOT_DIRNAME}/first-dir/Attic/file6,v <-- file6
new revision: delete; previous revision: 1\.1\.2\.1
done
Checking in file9;
${CVSROOT_DIRNAME}/first-dir/Attic/file9,v <-- file9
new revision: 1\.1\.2\.2; previous revision: 1\.1\.2\.1
done"
dotest join-15 "${testcvs} -q tag T2 ." \
'T file1
T file2
T file8
T file9'
cd ../..
mkdir 3
cd 3
dotest join-16 "${testcvs} -q co -jT1 -jT2 first-dir" \
'U first-dir/file1
U first-dir/file2
'"${PROG}"' checkout: file first-dir/file2 exists, but has been added in revision T2
U first-dir/file3
'"${PROG}"' checkout: scheduling first-dir/file3 for removal
U first-dir/file4
'"${PROG}"' checkout: scheduling first-dir/file4 for removal
U first-dir/file7
'"${PROG}"' checkout: file first-dir/file9 does not exist, but is present in revision T2'
cd first-dir
dotest join-17 "${testcvs} -q update" \
'A file1
R file3
R file4'
cd ../../1/first-dir
echo 'third revision of file4' > file4
dotest join-18 "${testcvs} -q update -jT1 -jT2 ." \
'U file1
'"${PROG}"' update: file file2 exists, but has been added in revision T2
'"${PROG}"' update: scheduling file3 for removal
M file4
'"${PROG}"' update: file file4 is locally modified, but has been removed in revision T2
'"${PROG}"' update: file file9 does not exist, but is present in revision T2'
dotest join-19 "${testcvs} -q update" \
'A file1
R file3
M file4'
cd ../../3
rm -r first-dir
dotest join-20 "${testcvs} -q co -jbranch first-dir" \
"U first-dir/file1
U first-dir/file2
RCS file: ${CVSROOT_DIRNAME}/first-dir/file2,v
retrieving revision 1\.1
retrieving revision 1\.1\.2\.2
Merging differences between 1\.1 and 1\.1\.2\.2 into file2
U first-dir/file3
${PROG} checkout: scheduling first-dir/file3 for removal
U first-dir/file4
${PROG} checkout: file first-dir/file4 has been modified, but has been removed in revision branch
U first-dir/file7
${PROG} checkout: file first-dir/file9 does not exist, but is present in revision branch"
cd first-dir
dotest join-21 "${testcvs} -q update" \
'A file1
M file2
R file3'
cd ../../1
rm -r first-dir
dotest join-22 "${testcvs} -q co first-dir" \
'U first-dir/file2
U first-dir/file3
U first-dir/file4
U first-dir/file7'
cd first-dir
echo 'third revision of file4' > file4
dotest join-23 "${testcvs} -q update -jbranch ." \
"U file1
RCS file: ${CVSROOT_DIRNAME}/first-dir/file2,v
retrieving revision 1\.1
retrieving revision 1\.1\.2\.2
Merging differences between 1\.1 and 1\.1\.2\.2 into file2
${PROG} update: scheduling file3 for removal
M file4
${PROG} update: file file4 is locally modified, but has been removed in revision branch
${PROG} update: file file9 does not exist, but is present in revision branch"
dotest join-24 "${testcvs} -q update" \
'A file1
M file2
R file3
M file4'
cd ..
rm -r first-dir
dotest join-25 "${testcvs} -q co first-dir" \
'U first-dir/file2
U first-dir/file3
U first-dir/file4
U first-dir/file7'
cd first-dir
dotest join-26 "${testcvs} -q tag -b br2" \
"T file2
T file3
T file4
T file7"
dotest join-27 "${testcvs} -q update -r br2" ""
dotest join-28 "${testcvs} -q update -j branch" \
"U file1
RCS file: ${CVSROOT_DIRNAME}/first-dir/file2,v
retrieving revision 1.1
retrieving revision 1.1.2.2
Merging differences between 1.1 and 1.1.2.2 into file2
${PROG} update: scheduling file3 for removal
${PROG} update: file file4 has been modified, but has been removed in revision branch
U file8
U file9"
dotest join-29 "${testcvs} -q update" \
"A file1
M file2
R file3
A file8
A file9"
cd ..
rm -r first-dir
dotest join-twobranch-1 "${testcvs} -q co -rbranch first-dir" \
'U first-dir/file1
U first-dir/file2
U first-dir/file8
U first-dir/file9'
cd first-dir
dotest join-twobranch-2 "${testcvs} -q update -rbr2 -jbranch" \
"${PROG} update: file1 is no longer in the repository
U file1
U file2
RCS file: ${CVSROOT_DIRNAME}/first-dir/file2,v
retrieving revision 1\.1
retrieving revision 1\.1\.2\.2
Merging differences between 1\.1 and 1\.1\.2\.2 into file2
U file3
${PROG} update: scheduling file3 for removal
U file4
${PROG} update: file file4 has been modified, but has been removed in revision branch
U file7
${PROG} update: file8 is no longer in the repository
U file8
${PROG} update: file9 is no longer in the repository
U file9"
dotest join-twobranch-3 "${testcvs} -q update" \
"A file1
M file2
R file3
A file8
A file9"
cd ..
rm -r first-dir
dotest join-30 "${testcvs} -q co first-dir" \
'U first-dir/file2
U first-dir/file3
U first-dir/file4
U first-dir/file7'
cd first-dir
dotest join-31 "${testcvs} -q tag T3 ." \
'T file2
T file3
T file4
T file7'
echo 'second revision of file7' > file7
dotest join-32 "${testcvs} -q ci -mx ." \
"Checking in file7;
${CVSROOT_DIRNAME}/first-dir/file7,v <-- file7
new revision: 1\.2; previous revision: 1\.1
done"
dotest join-33 "${testcvs} -q tag T4 ." \
'T file2
T file3
T file4
T file7'
cd ../../2/first-dir
dotest join-34 "${testcvs} -q up -jT3" \
"${PROG} update: file file4 does not exist, but is present in revision T3
U file7"
dotest join-35 "${testcvs} -q update" \
'A file7'
dotest join-36 "${testcvs} -q up -j T3 -j T4" \
"A file7
RCS file: ${CVSROOT_DIRNAME}/first-dir/file7,v
retrieving revision 1\.1
retrieving revision 1\.2
Merging differences between 1\.1 and 1\.2 into file7"
dotest join-37 "${testcvs} -q update" \
'A file7'
cd ../..
rm -r 1 2 3
rm -rf ${CVSROOT_DIRNAME}/first-dir
;;
join2)
mkdir 1; cd 1
dotest join2-1 "${testcvs} -q co -l ." ''
mkdir first-dir
dotest join2-2 "${testcvs} add first-dir" \
"Directory ${CVSROOT_DIRNAME}/first-dir added to the repository"
cd first-dir
echo 'initial contents of file1' >file1
dotest join2-3 "${testcvs} add file1" \
"${PROG} add: scheduling file .file1. for addition
${PROG} add: use .${PROG} commit. to add this file permanently"
dotest join2-4 "${testcvs} -q ci -m add" \
"RCS file: ${CVSROOT_DIRNAME}/first-dir/file1,v
done
Checking in file1;
${CVSROOT_DIRNAME}/first-dir/file1,v <-- file1
initial revision: 1\.1
done"
dotest join2-5 "${testcvs} -q tag -b br1" "T file1"
dotest join2-6 "${testcvs} -q update -r br1" ""
echo 'modify on branch' >>file1
touch bradd
dotest join2-6a "${testcvs} add bradd" \
"${PROG} add: scheduling file .bradd. for addition on branch .br1.
${PROG} add: use .${PROG} commit. to add this file permanently"
dotest join2-7 "${testcvs} -q ci -m modify" \
"RCS file: ${CVSROOT_DIRNAME}/first-dir/Attic/bradd,v
done
Checking in bradd;
${CVSROOT_DIRNAME}/first-dir/Attic/bradd,v <-- bradd
new revision: 1\.1\.2\.1; previous revision: 1\.1
done
Checking in file1;
${CVSROOT_DIRNAME}/first-dir/file1,v <-- file1
new revision: 1\.1\.2\.1; previous revision: 1\.1
done"
dotest join2-8 "${testcvs} -q update -A file1" '[UP] file1'
dotest join2-9 "${testcvs} -q status file1" \
"===================================================================
File: file1 Status: Up-to-date
Working revision: 1\.1.*
Repository revision: 1\.1 ${CVSROOT_DIRNAME}/first-dir/file1,v
Sticky Tag: (none)
Sticky Date: (none)
Sticky Options: (none)"
dotest join2-10 "cat CVS/Tag" "Tbr1"
dotest join2-11 "${testcvs} -q update -j br1 file1" \
"RCS file: ${CVSROOT_DIRNAME}/first-dir/file1,v
retrieving revision 1\.1
retrieving revision 1\.1\.2\.1
Merging differences between 1\.1 and 1\.1\.2\.1 into file1"
dotest join2-12 "cat file1" "initial contents of file1
modify on branch"
dotest join2-13 "${testcvs} -q status file1" \
"===================================================================
File: file1 Status: Locally Modified
Working revision: 1\.1.*
Repository revision: 1\.1 ${CVSROOT_DIRNAME}/first-dir/file1,v
Sticky Tag: (none)
Sticky Date: (none)
Sticky Options: (none)"
dotest join2-14 "cat CVS/Tag" "Tbr1"
dotest join2-15 "${testcvs} -q ci -m modify file1" \
"Checking in file1;
${CVSROOT_DIRNAME}/first-dir/file1,v <-- file1
new revision: 1\.2; previous revision: 1\.1
done"
dotest join2-16 "${testcvs} -q update -r br1" "[UP] file1"
dotest join2-17-circumvent "${testcvs} -q update -A" \
"${PROG} update: bradd is no longer in the repository
[UP] file1"
: dotest join2-17 "${testcvs} -q update -A bradd" \
"${PROG} update: warning: bradd is not (any longer) pertinent"
dotest join2-18 "${testcvs} -q update -j br1 bradd" "U bradd"
dotest join2-19 "${testcvs} -q status bradd" \
"===================================================================
File: bradd Status: Locally Added
Working revision: New file!
Repository revision: 1\.1 ${CVSROOT_DIRNAME}/first-dir/Attic/bradd,v
Sticky Tag: (none)
Sticky Date: (none)
Sticky Options: (none)"
dotest join2-20 "${testcvs} -q ci -m modify bradd" \
"Checking in bradd;
${CVSROOT_DIRNAME}/first-dir/bradd,v <-- bradd
new revision: 1\.2; previous revision: 1\.1
done"
cd ../..
rm -r 1
rm -rf ${CVSROOT_DIRNAME}/first-dir
;;
join3)
mkdir 1; cd 1
dotest join3-1 "${testcvs} -q co -l ." ''
mkdir first-dir
dotest join3-2 "${testcvs} add first-dir" \
"Directory ${CVSROOT_DIRNAME}/first-dir added to the repository"
cd first-dir
echo 'initial contents of file1' >file1
dotest join3-3 "${testcvs} add file1" \
"${PROG} add: scheduling file .file1. for addition
${PROG} add: use .${PROG} commit. to add this file permanently"
dotest join3-4 "${testcvs} -q ci -m add" \
"RCS file: ${CVSROOT_DIRNAME}/first-dir/file1,v
done
Checking in file1;
${CVSROOT_DIRNAME}/first-dir/file1,v <-- file1
initial revision: 1\.1
done"
dotest join3-5 "${testcvs} -q tag -b br1" "T file1"
dotest join3-6 "${testcvs} -q update -r br1" ""
echo 'br1:line1' >>file1
dotest join3-7 "${testcvs} -q ci -m modify" \
"Checking in file1;
${CVSROOT_DIRNAME}/first-dir/file1,v <-- file1
new revision: 1\.1\.2\.1; previous revision: 1\.1
done"
dotest join3-8 "${testcvs} -q update -A" "[UP] file1"
echo 'trunk:line1' > file2
dotest join3-8a "${testcvs} add file2" \
"${PROG} add: scheduling file .file2. for addition
${PROG} add: use .${PROG} commit. to add this file permanently"
echo 'trunk:line1' >>file1
dotest join3-9 "${testcvs} -q ci -m modify" \
"Checking in file1;
${CVSROOT_DIRNAME}/first-dir/file1,v <-- file1
new revision: 1\.2; previous revision: 1\.1
done
RCS file: ${CVSROOT_DIRNAME}/first-dir/file2,v
done
Checking in file2;
${CVSROOT_DIRNAME}/first-dir/file2,v <-- file2
initial revision: 1\.1
done"
dotest join3-10 "${testcvs} -q tag -b br2" "T file1
T file2"
dotest join3-11 "${testcvs} -q update -r br1" "[UP] file1
${PROG} update: file2 is no longer in the repository"
dotest join3-12 "${testcvs} -q update -j br2" \
"RCS file: ${CVSROOT_DIRNAME}/first-dir/file1,v
retrieving revision 1\.1
retrieving revision 1\.2
Merging differences between 1\.1 and 1\.2 into file1
rcsmerge: warning: conflicts during merge
U file2"
dotest join3-13 "cat file1" \
"initial contents of file1
[<]<<<<<< file1
br1:line1
[=]======
trunk:line1
[>]>>>>>> 1\.2"
rm file1
dotest join3-14 "${testcvs} -q update -r br2 file1" \
"${PROG} update: warning: file1 was lost
U file1" "U file1"
echo 'br2:line1' >>file1
dotest join3-15 "${testcvs} -q ci -m modify file1" \
"Checking in file1;
${CVSROOT_DIRNAME}/first-dir/file1,v <-- file1
new revision: 1\.2\.2\.1; previous revision: 1\.2
done"
dotest join3-16 "${testcvs} -q update -r br1 file1" "[UP] file1"
dotest join3-17 "${testcvs} -q update -j br2 file1" \
"RCS file: ${CVSROOT_DIRNAME}/first-dir/file1,v
retrieving revision 1\.1
retrieving revision 1\.2\.2\.1
Merging differences between 1\.1 and 1\.2\.2\.1 into file1
rcsmerge: warning: conflicts during merge"
dotest join3-18 "cat file1" \
"initial contents of file1
[<]<<<<<< file1
br1:line1
[=]======
trunk:line1
br2:line1
[>]>>>>>> 1\.2\.2\.1"
cd ../..
rm -r 1
rm -rf ${CVSROOT_DIRNAME}/first-dir
;;
join4)
mkdir ${CVSROOT_DIRNAME}/first-dir
mkdir 1
cd 1
dotest join4-1 "${testcvs} -q co first-dir" ''
cd first-dir
echo 'first revision of file3' > file3
echo 'first revision of file4' > file4
echo 'first revision of file6' > file6
echo 'first revision of file8' > file8
echo 'first revision of file9' > file9
dotest join4-2 "${testcvs} add file3 file4 file6 file8 file9" \
"${PROG}"' add: scheduling file `file3'\'' for addition
'"${PROG}"' add: scheduling file `file4'\'' for addition
'"${PROG}"' add: scheduling file `file6'\'' for addition
'"${PROG}"' add: scheduling file `file8'\'' for addition
'"${PROG}"' add: scheduling file `file9'\'' for addition
'"${PROG}"' add: use .'"${PROG}"' commit. to add these files permanently'
dotest join4-3 "${testcvs} -q commit -m add" \
"RCS file: ${CVSROOT_DIRNAME}/first-dir/file3,v
done
Checking in file3;
${CVSROOT_DIRNAME}/first-dir/file3,v <-- file3
initial revision: 1\.1
done
RCS file: ${CVSROOT_DIRNAME}/first-dir/file4,v
done
Checking in file4;
${CVSROOT_DIRNAME}/first-dir/file4,v <-- file4
initial revision: 1\.1
done
RCS file: ${CVSROOT_DIRNAME}/first-dir/file6,v
done
Checking in file6;
${CVSROOT_DIRNAME}/first-dir/file6,v <-- file6
initial revision: 1\.1
done
RCS file: ${CVSROOT_DIRNAME}/first-dir/file8,v
done
Checking in file8;
${CVSROOT_DIRNAME}/first-dir/file8,v <-- file8
initial revision: 1\.1
done
RCS file: ${CVSROOT_DIRNAME}/first-dir/file9,v
done
Checking in file9;
${CVSROOT_DIRNAME}/first-dir/file9,v <-- file9
initial revision: 1\.1
done"
dotest join4-4 "${testcvs} -q tag -b branch ." \
'T file3
T file4
T file6
T file8
T file9'
echo 'first revision of file10' > file10
dotest join4-7a "${testcvs} add file10" \
"${PROG}"' add: scheduling file `file10'\'' for addition
'"${PROG}"' add: use .'"${PROG}"' commit. to add this file permanently'
dotest join4-7b "${testcvs} -q ci -mx ." \
"RCS file: ${CVSROOT_DIRNAME}/first-dir/file10,v
done
Checking in file10;
${CVSROOT_DIRNAME}/first-dir/file10,v <-- file10
initial revision: 1\.1
done"
echo 'first revision of file2' > file2
echo 'second revision of file4' > file4
echo 'first revision of file7' > file7
rm file6 file8 file9 file10
dotest join4-5 "${testcvs} add file2 file7" \
"${PROG}"' add: scheduling file `file2'\'' for addition
'"${PROG}"' add: scheduling file `file7'\'' for addition
'"${PROG}"' add: use .'"${PROG}"' commit. to add these files permanently'
dotest join4-6 "${testcvs} rm file6 file8 file9 file10" \
"${PROG}"' remove: scheduling `file6'\'' for removal
'"${PROG}"' remove: scheduling `file8'\'' for removal
'"${PROG}"' remove: scheduling `file9'\'' for removal
'"${PROG}"' remove: scheduling `file10'\'' for removal
'"${PROG}"' remove: use .'"${PROG}"' commit. to remove these files permanently'
cd ../..
mkdir 2
cd 2
dotest join4-8 "${testcvs} -q co -r branch first-dir" \
'U first-dir/file3
U first-dir/file4
U first-dir/file6
U first-dir/file8
U first-dir/file9'
cd first-dir
echo 'first branch revision of file3' > file3
echo 'first branch revision of file4' > file4
echo 'first branch revision of file5' > file5
echo 'first branch revision of file6' > file6
echo 'first branch revision of file9' > file9
dotest join4-9 "${testcvs} add file5" \
"${PROG}"' add: scheduling file `file5'\'' for addition on branch `branch'\''
'"${PROG}"' add: use .'"${PROG}"' commit. to add this file permanently'
dotest join4-10 "${testcvs} -q ci -mx ." \
"Checking in file3;
${CVSROOT_DIRNAME}/first-dir/file3,v <-- file3
new revision: 1\.1\.2\.1; previous revision: 1\.1
done
Checking in file4;
${CVSROOT_DIRNAME}/first-dir/file4,v <-- file4
new revision: 1\.1\.2\.1; previous revision: 1\.1
done
RCS file: ${CVSROOT_DIRNAME}/first-dir/Attic/file5,v
done
Checking in file5;
${CVSROOT_DIRNAME}/first-dir/Attic/file5,v <-- file5
new revision: 1\.1\.2\.1; previous revision: 1\.1
done
Checking in file6;
${CVSROOT_DIRNAME}/first-dir/file6,v <-- file6
new revision: 1\.1\.2\.1; previous revision: 1\.1
done
Checking in file9;
${CVSROOT_DIRNAME}/first-dir/file9,v <-- file9
new revision: 1\.1\.2\.1; previous revision: 1\.1
done"
dotest join4-11 "${testcvs} -q tag T1 ." \
'T file3
T file4
T file5
T file6
T file8
T file9'
echo 'first branch revision of file1' > file1
echo 'first branch revision of file2' > file2
echo 'second branch revision of file9' > file9
rm file3 file4 file5 file6
dotest join4-12 "${testcvs} add file1 file2" \
"${PROG}"' add: scheduling file `file1'\'' for addition on branch `branch'\''
'"${PROG}"' add: scheduling file `file2'\'' for addition on branch `branch'\''
'"${PROG}"' add: use .'"${PROG}"' commit. to add these files permanently'
dotest join4-13 "${testcvs} rm file3 file4 file5 file6" \
"${PROG}"' remove: scheduling `file3'\'' for removal
'"${PROG}"' remove: scheduling `file4'\'' for removal
'"${PROG}"' remove: scheduling `file5'\'' for removal
'"${PROG}"' remove: scheduling `file6'\'' for removal
'"${PROG}"' remove: use .'"${PROG}"' commit. to remove these files permanently'
dotest join4-14 "${testcvs} -q ci -mx ." \
"RCS file: ${CVSROOT_DIRNAME}/first-dir/Attic/file1,v
done
Checking in file1;
${CVSROOT_DIRNAME}/first-dir/Attic/file1,v <-- file1
new revision: 1\.1\.2\.1; previous revision: 1\.1
done
RCS file: ${CVSROOT_DIRNAME}/first-dir/Attic/file2,v
done
Checking in file2;
${CVSROOT_DIRNAME}/first-dir/Attic/file2,v <-- file2
new revision: 1\.1\.2\.1; previous revision: 1\.1
done
Removing file3;
${CVSROOT_DIRNAME}/first-dir/file3,v <-- file3
new revision: delete; previous revision: 1\.1\.2\.1
done
Removing file4;
${CVSROOT_DIRNAME}/first-dir/file4,v <-- file4
new revision: delete; previous revision: 1\.1\.2\.1
done
Removing file5;
${CVSROOT_DIRNAME}/first-dir/Attic/file5,v <-- file5
new revision: delete; previous revision: 1\.1\.2\.1
done
Removing file6;
${CVSROOT_DIRNAME}/first-dir/file6,v <-- file6
new revision: delete; previous revision: 1\.1\.2\.1
done
Checking in file9;
${CVSROOT_DIRNAME}/first-dir/file9,v <-- file9
new revision: 1\.1\.2\.2; previous revision: 1\.1\.2\.1
done"
dotest join4-15 "${testcvs} -q tag T2 ." \
'T file1
T file2
T file8
T file9'
cd ../../1/first-dir
echo 'third revision of file4' > file4
dotest join4-18 "${testcvs} -q update -jT1 -jT2 ." \
'U file1
R file10
A file2
'"${PROG}"' update: file file2 exists, but has been added in revision T2
'"${PROG}"' update: scheduling file3 for removal
M file4
'"${PROG}"' update: file file4 is locally modified, but has been removed in revision T2
R file6
A file7
R file8
R file9
'"${PROG}"' update: file file9 does not exist, but is present in revision T2'
dotest join4-19 "${testcvs} -q update" \
'A file1
R file10
A file2
R file3
M file4
R file6
A file7
R file8
R file9'
cd ../..
rm -r 1 2
rm -rf ${CVSROOT_DIRNAME}/first-dir
;;
join5)
mkdir join5; cd join5
mkdir 1; cd 1
dotest join5-init-1 "${testcvs} -Q co -l ."
mkdir join5
dotest join5-init-2 "${testcvs} -Q add join5"
cd join5
echo "there once was a file from harrisburg" >-file
echo "who's existance it seems was quiteabsurd" >>-file
dotest join5-init-3 "${testcvs} -Q add -- -file"
dotest join5-init-4 "${testcvs} -q ci -minitial" \
"RCS file: ${CVSROOT_DIRNAME}/join5/-file,v
done
Checking in -file;
${CVSROOT_DIRNAME}/join5/-file,v <-- -file
initial revision: 1\.1
done"
cd ../..
mkdir 2; cd 2
dotest join5-init-5 "${testcvs} -Q co join5"
cd join5
echo "it tested for free" >>-file
echo "when paid it should be" >>-file
dotest join5-init-4 "${testcvs} -q ci -msecond" \
"Checking in -file;
${CVSROOT_DIRNAME}/join5/-file,v <-- -file
new revision: 1\.2; previous revision: 1\.1
done"
cd ../..
cd 1/join5
echo "but maybe it could charge bytheword" >>-file
dotest join5 "${testcvs} up" \
"${PROG} update: Updating \.
RCS file: ${CVSROOT_DIRNAME}/join5/-file,v
retrieving revision 1\.1
retrieving revision 1\.2
Merging differences between 1\.1 and 1\.2 into -file
rcsmerge: warning: conflicts during merge
${PROG} update: conflicts found in -file
C -file"
cd ../..
if $keep; then
echo Keeping ${TESTDIR} and exiting due to --keep
exit 0
fi
cd ..
rm -r join5
rm -rf ${CVSROOT_DIRNAME}/join5
;;
join6)
mkdir join6; cd join6
mkdir 1; cd 1
dotest join6-init-1 "${testcvs} -Q co -l ."
mkdir join6
dotest join6-init-2 "${testcvs} -Q add join6"
cd join6
echo aaa >temp.txt
echo bbb >>temp.txt
echo ccc >>temp.txt
dotest join6-1 "${testcvs} -Q add temp.txt"
dotest join6-2 "${testcvs} -q commit -minitial temp.txt" \
"RCS file: ${CVSROOT_DIRNAME}/join6/temp\.txt,v
done
Checking in temp\.txt;
${CVSROOT_DIRNAME}/join6/temp.txt,v <-- temp\.txt
initial revision: 1\.1
done"
cp temp.txt temp2.txt
echo ddd >>temp.txt
dotest join6-3 "${testcvs} -q commit -madd temp.txt" \
"Checking in temp\.txt;
${CVSROOT_DIRNAME}/join6/temp.txt,v <-- temp\.txt
new revision: 1\.2; previous revision: 1\.1
done"
dotest join6-3.3 "${testcvs} update -j1.1 -j1.2 temp.txt" \
"temp\.txt already contains the differences between 1\.1 and 1\.2"
dotest join6-3.4 "${testcvs} diff temp.txt" ""
echo bbb >temp.txt
echo ccc >>temp.txt
echo ddd >>temp.txt
dotest join6-3.5 "${testcvs} update -j1.1 -j1.2 temp.txt" \
"M temp\.txt
RCS file: ${CVSROOT_DIRNAME}/join6/temp\.txt,v
retrieving revision 1\.1
retrieving revision 1\.2
Merging differences between 1\.1 and 1\.2 into temp\.txt
temp\.txt already contains the differences between 1\.1 and 1\.2"
dotest_fail join6-3.6 "${testcvs} diff temp.txt" \
"Index: temp\.txt
===================================================================
RCS file: ${CVSROOT_DIRNAME}/join6/temp\.txt,v
retrieving revision 1\.2
diff -r1\.2 temp.txt
1d0
< aaa"
cp temp2.txt temp.txt
dotest_fail join6-4 "${testcvs} diff temp.txt" \
"Index: temp.txt
===================================================================
RCS file: ${CVSROOT_DIRNAME}/join6/temp\.txt,v
retrieving revision 1\.2
diff -r1\.2 temp\.txt
4d3
< ddd"
dotest join6-5 "${testcvs} update -j1.1 -j1.2 temp.txt" \
"M temp\.txt
RCS file: ${CVSROOT_DIRNAME}/join6/temp\.txt,v
retrieving revision 1\.1
retrieving revision 1\.2
Merging differences between 1\.1 and 1\.2 into temp\.txt"
dotest join6-6 "${testcvs} diff temp.txt" ""
mv temp.txt temp3.txt
dotest join6-7 "sed 's/ddd/dddd/' < temp3.txt > temp.txt" ""
dotest join6-8 "${testcvs} update -j1.1 -j1.2 temp.txt" \
"M temp\.txt
RCS file: ${CVSROOT_DIRNAME}/join6/temp\.txt,v
retrieving revision 1\.1
retrieving revision 1\.2
Merging differences between 1\.1 and 1\.2 into temp\.txt
rcsmerge: warning: conflicts during merge"
dotest_fail join6-9 "${testcvs} diff temp.txt" \
"Index: temp\.txt
===================================================================
RCS file: ${CVSROOT_DIRNAME}/join6/temp.txt,v
retrieving revision 1\.2
diff -r1\.2 temp\.txt
3a4,6
> <<<<<<< temp\.txt
> dddd
> =======
4a8
> >>>>>>> 1\.2"
cp temp2.txt temp.txt
dotest join6-10 "${testcvs} -q ci -m del temp.txt" \
"Checking in temp\.txt;
${CVSROOT_DIRNAME}/join6/temp.txt,v <-- temp\.txt
new revision: 1\.3; previous revision: 1\.2
done"
cp temp3.txt temp.txt
dotest_fail join6-11 "${testcvs} diff temp.txt" \
"Index: temp\.txt
===================================================================
RCS file: ${CVSROOT_DIRNAME}/join6/temp.txt,v
retrieving revision 1\.3
diff -r1\.3 temp\.txt
3a4
> ddd"
dotest join6-12 "${testcvs} update -j1.2 -j1.3 temp.txt" \
"M temp\.txt
RCS file: ${CVSROOT_DIRNAME}/join6/temp\.txt,v
retrieving revision 1\.2
retrieving revision 1\.3
Merging differences between 1\.2 and 1\.3 into temp\.txt"
dotest join6-13 "${testcvs} diff temp.txt" ""
rm temp2.txt temp3.txt
dotest join6-20 "${testcvs} -q tag -r1.1 t1" \
"T temp.txt"
echo xxx >temp2.txt
dotest join6-21 "${testcvs} -Q add temp2.txt"
dotest join6-22 "${testcvs} -q ci -m." \
"RCS file: ${CVSROOT_DIRNAME}/join6/temp2.txt,v
done
Checking in temp2\.txt;
${CVSROOT_DIRNAME}/join6/temp2\.txt,v <-- temp2\.txt
initial revision: 1\.1
done"
dotest join6-23 "${testcvs} -q tag t2" \
"T temp.txt
T temp2.txt"
echo xxx >>temp.txt
dotest join6-24 "${testcvs} -q ci -m." \
"Checking in temp\.txt;
${CVSROOT_DIRNAME}/join6/temp.txt,v <-- temp\.txt
new revision: 1\.4; previous revision: 1\.3
done"
dotest join6-25 "${testcvs} -q up -jt1 -jt2" \
"RCS file: ${CVSROOT_DIRNAME}/join6/temp.txt,v
retrieving revision 1\.1
retrieving revision 1\.3
Merging differences between 1\.1 and 1\.3 into temp.txt
temp.txt already contains the differences between 1\.1 and 1\.3
temp2.txt already contains the differences between creation and 1\.1"
dotest join6-30 "${testcvs} -q rm -f temp2.txt" \
"${PROG} remove: use .${PROG} commit. to remove this file permanently"
dotest join6-31 "${testcvs} -q ci -m. temp2.txt" \
"Removing temp2\.txt;
${CVSROOT_DIRNAME}/join6/temp2\.txt,v <-- temp2\.txt
new revision: delete; previous revision: 1\.1
done"
echo new >temp2.txt
if $remote; then
dotest_fail join6-32 "${testcvs} -q up -jt1 -jt2" \
"? temp2\.txt
RCS file: ${CVSROOT_DIRNAME}/join6/temp.txt,v
retrieving revision 1\.1
retrieving revision 1\.3
Merging differences between 1\.1 and 1\.3 into temp.txt
temp.txt already contains the differences between 1\.1 and 1\.3
${PROG} update: move away \./temp2\.txt; it is in the way
C temp2\.txt"
else
dotest join6-32 "${testcvs} -q up -jt1 -jt2" \
"RCS file: ${CVSROOT_DIRNAME}/join6/temp.txt,v
retrieving revision 1\.1
retrieving revision 1\.3
Merging differences between 1\.1 and 1\.3 into temp.txt
temp.txt already contains the differences between 1\.1 and 1\.3
${PROG} update: use .${PROG} add. to create an entry for temp2\.txt
U temp2\.txt
? temp2\.txt"
fi
cd ../../..
if $keep; then
echo Keeping ${TESTDIR} and exiting due to --keep
exit 0
fi
rm -r join6
rm -rf ${CVSROOT_DIRNAME}/join6
;;
join7)
mkdir join7; cd join7
mkdir impdir; cd impdir
echo aaa >temp.txt
echo bbb >>temp.txt
echo ccc >>temp.txt
dotest join7-1 \
"${testcvs} -Q import -minitial join7 vendor vers-1" \
""
cd ..
dotest join7-2 "${testcvs} -Q co join7" ""
cd join7
echo ddd >> temp.txt
dotest join7-3 "${testcvs} -Q ci -madded-line temp.txt" \
"Checking in temp.txt;
$CVSROOT_DIRNAME/join7/temp.txt,v <-- temp.txt
new revision: 1\.2; previous revision: 1\.1
done"
cd ../impdir
echo aaaa >temp.txt
echo bbbb >>temp.txt
echo ccc >>temp.txt
echo eee >>temp.txt
dotest join7-4 \
"${testcvs} -Q import -minitial join7 vendor vers-2" \
""
cd ../join7
dotest join7-5 \
"${testcvs} -n update -jvers-1 -jvers-2 temp.txt" \
"RCS file: $CVSROOT_DIRNAME/join7/temp.txt,v
retrieving revision 1\.1\.1\.1
retrieving revision 1\.1\.1\.2
Merging differences between 1\.1\.1\.1 and 1\.1\.1\.2 into temp.txt
rcsmerge: warning: conflicts during merge"
touch temp.txt
dotest join7-6 "${testcvs} -n update -jvers-1 -jvers-2 temp.txt" \
"RCS file: $CVSROOT_DIRNAME/join7/temp.txt,v
retrieving revision 1\.1\.1\.1
retrieving revision 1\.1\.1\.2
Merging differences between 1\.1\.1\.1 and 1\.1\.1\.2 into temp.txt
rcsmerge: warning: conflicts during merge" \
"RCS file: $CVSROOT_DIRNAME/join7/temp.txt,v
retrieving revision 1\.1\.1\.1
retrieving revision 1\.1\.1\.2
Merging differences between 1\.1\.1\.1 and 1\.1\.1\.2 into temp.txt
rcsmerge: warning: conflicts during merge"
if $keep; then
echo Keeping ${TESTDIR} and exiting due to --keep
exit 0
fi
cd ../..
rm -r join7
rm -rf $CVSROOT_DIRNAME/join7
;;
join-readonly-conflict)
mkdir join-readonly-conflict; cd join-readonly-conflict
dotest join-readonly-conflict-1 "$testcvs -q co -l ." ''
module=join-readonly-conflict
mkdir $module
$testcvs -q add $module >>$LOGFILE 2>&1
cd $module
file=m
echo trunk > $file
dotest join-readonly-conflict-2 "$testcvs -Q add $file" ''
dotest join-readonly-conflict-3 "$testcvs -q ci -m . $file" \
"RCS file: $CVSROOT_DIRNAME/$module/$file,v
done
Checking in $file;
$CVSROOT_DIRNAME/$module/$file,v <-- $file
initial revision: 1\.1
done"
dotest join-readonly-conflict-4 "$testcvs tag -b B $file" "T $file"
dotest join-readonly-conflict-5 "$testcvs -q update -rB $file" ''
echo branch B > $file
dotest join-readonly-conflict-6 "$testcvs -q ci -m . $file" \
"Checking in $file;
$CVSROOT_DIRNAME/$module/$file,v <-- $file
new revision: 1\.1\.2\.1; previous revision: 1\.1
done"
rm $file
dotest join-readonly-conflict-7 "$testcvs -Q update -A $file" ''
echo conflict > $file; chmod u-w $file
dotest join-readonly-conflict-8 "$testcvs update -r B $file" \
"RCS file: $CVSROOT_DIRNAME/$module/$file,v
retrieving revision 1\.1
retrieving revision 1\.1\.2\.1
Merging differences between 1\.1 and 1\.1\.2\.1 into $file
rcsmerge: warning: conflicts during merge
${PROG} update: conflicts found in $file
C $file"
rm -f $file
dotest join-readonly-conflict-9 "$testcvs -Q update -A $file" ''
echo conflict > $file
if test -w ".#$file.1.1"; then
fail "join-readonly-conflict-10 : .#$file.1.1 is writable"
else
pass "join-readonly-conflict-10"
fi
dotest join-readonly-conflict-11 "$testcvs update -r B $file" \
"RCS file: $CVSROOT_DIRNAME/$module/$file,v
retrieving revision 1\.1
retrieving revision 1\.1\.2\.1
Merging differences between 1\.1 and 1\.1\.2\.1 into $file
rcsmerge: warning: conflicts during merge
${PROG} update: conflicts found in $file
C m"
cd ../..
if $keep; then :; else
rm -rf join-readonly-conflict
rm -rf $CVSROOT_DIRNAME/$module
fi
;;
join-admin)
mkdir 1; cd 1
dotest join-admin-1 "$testcvs -q co -l ." ''
module=x
mkdir $module
$testcvs -q add $module >>$LOGFILE 2>&1
cd $module
echo foo > a
$testcvs -Q add a > /dev/null 2>&1
$testcvs -Q ci -m. a > /dev/null 2>&1
$testcvs -Q tag -b B
$testcvs -Q tag -b M1
echo '$''Id$' > b
$testcvs -Q add b > /dev/null 2>&1
$testcvs -Q ci -m. b > /dev/null 2>&1
$testcvs -Q tag -b M2
$testcvs -Q update -r B
$testcvs -Q update -kk -jM1 -jM2
$testcvs -Q ci -m. b >/dev/null 2>&1
$testcvs -Q update -A
dotest join-admin-1 "$testcvs status b" \
"===================================================================
File: b Status: Up-to-date
Working revision: 1\.1.*
Repository revision: 1\.1 ${CVSROOT_DIRNAME}/x/b,v
Sticky Tag: (none)
Sticky Date: (none)
Sticky Options: (none)"
cd ../..
rm -rf 1
rm -rf ${CVSROOT_DIRNAME}/$module
;;
join-admin-2)
mkdir 1; cd 1
dotest join-admin-2-1 "$testcvs -q co -l ." ''
module=x
mkdir $module
dotest join-admin-2-2 "$testcvs -q add $module" \
"Directory ${CVSROOT_DIRNAME}/x added to the repository"
cd $module
echo '$''Id$' > e0
cp e0 e
dotest join-admin-2-3 "$testcvs -Q add e" ''
dotest join-admin-2-4 "$testcvs -Q ci -m. e" \
"RCS file: ${CVSROOT_DIRNAME}/x/e,v
done
Checking in e;
${CVSROOT_DIRNAME}/x/e,v <-- e
initial revision: 1\.1
done"
dotest join-admin-2-5 "$testcvs -Q tag -b T" '' "${QUESTION} e0"
dotest join-admin-2-6 "$testcvs -Q update -r T" '' "${QUESTION} e0"
cp e0 e
dotest join-admin-2-7 "$testcvs -Q ci -m. e" \
"Checking in e;
${CVSROOT_DIRNAME}/x/e,v <-- e
new revision: 1\.1\.2\.1; previous revision: 1\.1
done"
dotest join-admin-2-8 "$testcvs -Q update -A" '' "${QUESTION} e0"
dotest join-admin-2-9 "$testcvs -Q tag -b M1" '' "${QUESTION} e0"
echo '$''Id$' > b
dotest join-admin-2-10 "$testcvs -Q add b" ''
cp e0 e
dotest join-admin-2-11 "$testcvs -Q ci -m. b e" \
"RCS file: ${CVSROOT_DIRNAME}/x/b,v
done
Checking in b;
${CVSROOT_DIRNAME}/x/b,v <-- b
initial revision: 1\.1
done
Checking in e;
${CVSROOT_DIRNAME}/x/e,v <-- e
new revision: 1\.2; previous revision: 1\.1
done"
dotest join-admin-2-12 "$testcvs -Q tag -b M2" '' "${QUESTION} e0"
dotest join-admin-2-13 "$testcvs -Q update -r T" '' "${QUESTION} e0"
dotest join-admin-2-14 "$testcvs update -kk -jM1 -jM2" \
"${PROG} update: Updating .
U b
U e
RCS file: ${CVSROOT_DIRNAME}/x/e,v
retrieving revision 1\.1
retrieving revision 1\.2
Merging differences between 1\.1 and 1\.2 into e
e already contains the differences between 1\.1 and 1\.2
${QUESTION} e0" \
"${QUESTION} e0
${PROG} update: Updating .
U b
U e
RCS file: ${CVSROOT_DIRNAME}/x/e,v
retrieving revision 1\.1
retrieving revision 1\.2
Merging differences between 1\.1 and 1\.2 into e
e already contains the differences between 1\.1 and 1\.2"
dotest join-admin-2-15 "cat e" '$''Id$'
cd ../..
rm -rf 1
rm -rf ${CVSROOT_DIRNAME}/$module
;;
join-rm)
module=join-rm
mkdir $module; cd $module
dotest join-rm-init-1 "$testcvs -q co -l ." ''
mkdir $module
dotest join-rm-init-2 "$testcvs -q add $module" \
"Directory $CVSROOT_DIRNAME/$module added to the repository"
cd $module
touch a b c d e f g
dotest join-rm-init-3 "$testcvs -Q add a b c d e f g"
dotest join-rm-init-4 "$testcvs -Q ci -m add-em" \
"RCS file: $CVSROOT_DIRNAME/join-rm/a,v
done
Checking in a;
$CVSROOT_DIRNAME/join-rm/a,v <-- a
initial revision: 1\.1
done
RCS file: $CVSROOT_DIRNAME/join-rm/b,v
done
Checking in b;
$CVSROOT_DIRNAME/join-rm/b,v <-- b
initial revision: 1\.1
done
RCS file: $CVSROOT_DIRNAME/join-rm/c,v
done
Checking in c;
$CVSROOT_DIRNAME/join-rm/c,v <-- c
initial revision: 1\.1
done
RCS file: $CVSROOT_DIRNAME/join-rm/d,v
done
Checking in d;
$CVSROOT_DIRNAME/join-rm/d,v <-- d
initial revision: 1\.1
done
RCS file: $CVSROOT_DIRNAME/join-rm/e,v
done
Checking in e;
$CVSROOT_DIRNAME/join-rm/e,v <-- e
initial revision: 1\.1
done
RCS file: $CVSROOT_DIRNAME/join-rm/f,v
done
Checking in f;
$CVSROOT_DIRNAME/join-rm/f,v <-- f
initial revision: 1\.1
done
RCS file: $CVSROOT_DIRNAME/join-rm/g,v
done
Checking in g;
$CVSROOT_DIRNAME/join-rm/g,v <-- g
initial revision: 1\.1
done"
dotest join-rm-init-5 "$testcvs -Q tag -b br"
dotest join-rm-init-6 "$testcvs -Q up -rbr"
dotest join-rm-init-7 "$testcvs -Q rm -f b d g"
dotest join-rm-init-8 "$testcvs -Q ci -mrm" \
"Removing b;
$CVSROOT_DIRNAME/join-rm/b,v <-- b
new revision: delete; previous revision: 1\.1
done
Removing d;
$CVSROOT_DIRNAME/join-rm/d,v <-- d
new revision: delete; previous revision: 1\.1
done
Removing g;
$CVSROOT_DIRNAME/join-rm/g,v <-- g
new revision: delete; previous revision: 1\.1
done"
dotest join-rm-init-9 "$testcvs -Q up -A"
dotest join-rm-1 "$testcvs -q up -jbr" \
"$PROG update: scheduling b for removal
$PROG update: scheduling d for removal
$PROG update: scheduling g for removal"
dotest join-rm-2 "$testcvs -qn up" \
"R b
R d
R g"
dotest join-rm-3 "$testcvs -q ci -m 'save the merge'" \
"Removing b;
$CVSROOT_DIRNAME/join-rm/b,v <-- b
new revision: delete; previous revision: 1\.1
done
Removing d;
$CVSROOT_DIRNAME/join-rm/d,v <-- d
new revision: delete; previous revision: 1\.1
done
Removing g;
$CVSROOT_DIRNAME/join-rm/g,v <-- g
new revision: delete; previous revision: 1\.1
done"
dotest join-rm-4 "$testcvs -q log b" "
RCS file: $CVSROOT_DIRNAME/join-rm/Attic/b,v
Working file: b
head: 1\.2
branch:
locks: strict
access list:
symbolic names:
br: 1\.1\.0\.2
keyword substitution: kv
total revisions: 3; selected revisions: 3
description:
----------------------------
revision 1\.2
date: [0-9/]* [0-9:]*; author: $username; state: dead; lines: ${PLUS}0 -0
save the merge
----------------------------
revision 1\.1
date: [0-9/]* [0-9:]*; author: $username; state: Exp;
branches: 1.1.2;
add-em
----------------------------
revision 1\.1\.2\.1
date: [0-9/]* [0-9:]*; author: $username; state: dead; lines: ${PLUS}0 -0
rm
============================================================================="
dotest join-rm-init-10 "$testcvs -Q up -rbr"
dotest join-rm-init-11 "$testcvs -Q rm -f a"
dotest join-rm-init-12 "$testcvs -Q ci -m rma" \
"Removing a;
$CVSROOT_DIRNAME/join-rm/a,v <-- a
new revision: delete; previous revision: 1\.1
done"
dotest join-rm-5 "$testcvs -q up -A" "U a"
dotest join-rm-6 "$testcvs status a" \
"===================================================================
File: a Status: Up-to-date
Working revision: 1\.1.*
Repository revision: 1\.1 $CVSROOT_DIRNAME/join-rm/a,v
Sticky Tag: (none)
Sticky Date: (none)
Sticky Options: (none)"
if $keep; then
echo Keeping $TESTDIR and exiting due to --keep
exit 0
fi
cd ../..
rm -rf $CVSROOT_DIRNAME/$module
rm -r $module
;;
new) mkdir ${CVSROOT_DIRNAME}/first-dir
if ${CVS} co first-dir ; then
pass 117
else
fail 117
fi
cd first-dir
touch a
if ${CVS} add a 2>>${LOGFILE}; then
pass 118
else
fail 118
fi
if ${CVS} ci -m added >>${LOGFILE} 2>&1; then
pass 119
else
fail 119
fi
rm a
if ${CVS} rm a 2>>${LOGFILE}; then
pass 120
else
fail 120
fi
if ${CVS} ci -m removed >>${LOGFILE} ; then
pass 121
else
fail 121
fi
if ${CVS} update -A 2>&1 | grep longer ; then
fail 122
else
pass 122
fi
if ${CVS} update -rHEAD 2>&1 | grep longer ; then
fail 123
else
pass 123
fi
cd ..
rm -r first-dir
rm -rf ${CVSROOT_DIRNAME}/first-dir
;;
newb)
mkdir ${CVSROOT_DIRNAME}/first-dir
dotest newb-123a "${testcvs} -q co first-dir" ''
cd first-dir
touch a
dotest newb-123b "${testcvs} add a" \
"${PROG} add: scheduling file .a. for addition
${PROG} add: use .${PROG} commit. to add this file permanently"
dotest newb-123c "${testcvs} -q ci -m added" \
"RCS file: ${CVSROOT_DIRNAME}/first-dir/a,v
done
Checking in a;
${CVSROOT_DIRNAME}/first-dir/a,v <-- a
initial revision: 1\.1
done"
dotest newb-123d "${testcvs} -q tag -b branch" "T a"
cd ..
rm -r first-dir
mkdir 1
cd 1
dotest newb-123e "${testcvs} -q co -r branch first-dir" \
"U first-dir/a"
cd ..
mkdir 2
cd 2
dotest newb-123f "${testcvs} -q co -r branch first-dir" \
"U first-dir/a"
cd first-dir
rm a
dotest newb-123g "${testcvs} rm a" \
"${PROG} remove: scheduling .a. for removal
${PROG} remove: use .${PROG} commit. to remove this file permanently"
dotest newb-123h "${testcvs} -q ci -m removed" \
"Removing a;
${CVSROOT_DIRNAME}/first-dir/a,v <-- a
new revision: delete; previous revision: 1\.1
done"
cd ..
rm -r first-dir
dotest newb-123i "${testcvs} -q co -r branch first-dir/a" \
"${PROG} checkout: warning: first-dir/a is not (any longer) pertinent"
cd ../1/first-dir
dotest newb-123j0 "${testcvs} status a" \
"${PROG} status: a is no longer in the repository
===================================================================
File: a Status: Entry Invalid
Working revision: 1\.1.*
Repository revision: 1\.1\.2\.1 ${CVSROOT_DIRNAME}/first-dir/a,v
Sticky Tag: branch (branch: 1\.1\.2)
Sticky Date: (none)
Sticky Options: (none)"
dotest newb-123j "${testcvs} -q update" \
"${PROG} update: a is no longer in the repository"
if test -f a; then
fail newb-123k
else
pass newb-123k
fi
cd ../..
rm -r 1 2
rm -rf ${CVSROOT_DIRNAME}/first-dir
;;
conflicts)
mkdir ${CVSROOT_DIRNAME}/first-dir
mkdir 1
cd 1
dotest conflicts-124 "${testcvs} -q co first-dir" ''
cd first-dir
touch a
dotest conflicts-125 "${testcvs} add a" \
"${PROG} add: scheduling file .a. for addition
${PROG} add: use .${PROG} commit. to add this file permanently"
dotest conflicts-126 "${testcvs} -q ci -m added" \
"RCS file: ${CVSROOT_DIRNAME}/first-dir/a,v
done
Checking in a;
${CVSROOT_DIRNAME}/first-dir/a,v <-- a
initial revision: 1\.1
done"
cd ../..
mkdir 2
cd 2
dotest conflicts-126.5 "${testcvs} co -p first-dir" \
"${PROG} checkout: Updating first-dir
===================================================================
Checking out first-dir/a
RCS: ${CVSROOT_DIRNAME}/first-dir/a,v
VERS: 1\.1
\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*"
if ${CVS} co first-dir ; then
pass 127
else
fail 127
fi
cd first-dir
if test -f a; then
pass 127a
else
fail 127a
fi
cd ../../1/first-dir
echo add a line >>a
mkdir dir1
dotest conflicts-127b "${testcvs} add dir1" \
"Directory ${CVSROOT_DIRNAME}/first-dir/dir1 added to the repository"
dotest conflicts-128 "${testcvs} -q ci -m changed" \
"Checking in a;
${CVSROOT_DIRNAME}/first-dir/a,v <-- a
new revision: 1\.2; previous revision: 1\.1
done"
cd ../..
mkdir 3
cd 3
dotest conflicts-128.5 "${testcvs} co -p -l first-dir" \
"${PROG} checkout: Updating first-dir
===================================================================
Checking out first-dir/a
RCS: ${CVSROOT_DIRNAME}/first-dir/a,v
VERS: 1\.2
\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*
add a line"
cd ..
rmdir 3
cd 2/first-dir
echo add a conflicting line >>a
dotest_fail conflicts-129 "${testcvs} -q ci -m changed" \
"${PROG}"' commit: Up-to-date check failed for `a'\''
'"${PROG}"' \[commit aborted\]: correct above errors first!'
mkdir dir1
mkdir sdir
dotest conflicts-status-0 "${testcvs} status a" \
"===================================================================
File: a Status: Needs Merge
Working revision: 1\.1.*
Repository revision: 1\.2 ${CVSROOT_DIRNAME}/first-dir/a,v
Sticky Tag: (none)
Sticky Date: (none)
Sticky Options: (none)"
dotest conflicts-129a "${testcvs} -nq update a" \
"RCS file: ${CVSROOT_DIRNAME}/first-dir/a,v
retrieving revision 1\.1
retrieving revision 1\.2
Merging differences between 1\.1 and 1\.2 into a
rcsmerge: warning: conflicts during merge
${PROG} update: conflicts found in a
C a"
dotest conflicts-130 "${testcvs} -q update" \
"RCS file: ${CVSROOT_DIRNAME}/first-dir/a,v
retrieving revision 1\.1
retrieving revision 1\.2
Merging differences between 1\.1 and 1\.2 into a
rcsmerge: warning: conflicts during merge
${PROG} update: conflicts found in a
C a
${QUESTION} dir1
${QUESTION} sdir" \
"${QUESTION} dir1
${QUESTION} sdir
RCS file: ${CVSROOT_DIRNAME}/first-dir/a,v
retrieving revision 1\.1
retrieving revision 1\.2
Merging differences between 1\.1 and 1\.2 into a
rcsmerge: warning: conflicts during merge
${PROG} update: conflicts found in a
C a"
rmdir dir1 sdir
dotest conflicts-status-1 "${testcvs} status a" \
"===================================================================
File: a Status: File had conflicts on merge
Working revision: 1\.2.*
Repository revision: 1\.2 ${CVSROOT_DIRNAME}/first-dir/a,v
Sticky Tag: (none)
Sticky Date: (none)
Sticky Options: (none)"
dotest_fail conflicts-131 "${testcvs} -q ci -m try" \
"${PROG} commit: file .a. had a conflict and has not been modified
${PROG} \[commit aborted\]: correct above errors first!"
mv a aa
grep '^<<<<<<<' aa >a
dotest conflicts-status-2 "${testcvs} -nq ci -m try a" \
"${PROG} commit: warning: file .a. seems to still contain conflict indicators"
grep '^=======' aa >a
dotest conflicts-status-3 "${testcvs} -nq ci -m try a" \
"${PROG} commit: warning: file .a. seems to still contain conflict indicators"
grep '^>>>>>>>' aa >a
dotest conflicts-status-4 "${testcvs} -qn ci -m try a" \
"${PROG} commit: warning: file .a. seems to still contain conflict indicators"
mv aa a
echo lame attempt at resolving it >>a
dotest conflicts-status-5 "${testcvs} status a" \
"===================================================================
File: a Status: File had conflicts on merge
Working revision: 1\.2.*
Repository revision: 1\.2 ${CVSROOT_DIRNAME}/first-dir/a,v
Sticky Tag: (none)
Sticky Date: (none)
Sticky Options: (none)"
dotest conflicts-132 "${testcvs} -q ci -m try" \
"${PROG} commit: warning: file .a. seems to still contain conflict indicators
Checking in a;
${CVSROOT_DIRNAME}/first-dir/a,v <-- a
new revision: 1\.3; previous revision: 1\.2
done"
echo resolve conflict >a
dotest conflicts-status-6 "${testcvs} status a" \
"===================================================================
File: a Status: Locally Modified
Working revision: 1\.3.*
Repository revision: 1\.3 ${CVSROOT_DIRNAME}/first-dir/a,v
Sticky Tag: (none)
Sticky Date: (none)
Sticky Options: (none)"
dotest conflicts-133 "${testcvs} -q ci -m resolved" \
"Checking in a;
${CVSROOT_DIRNAME}/first-dir/a,v <-- a
new revision: 1\.4; previous revision: 1\.3
done"
dotest conflicts-status-7 "${testcvs} status a" \
"===================================================================
File: a Status: Up-to-date
Working revision: 1\.4.*
Repository revision: 1\.4 ${CVSROOT_DIRNAME}/first-dir/a,v
Sticky Tag: (none)
Sticky Date: (none)
Sticky Options: (none)"
cd ../../1/first-dir
echo abc >abc
if ${testcvs} add abc >>${LOGFILE} 2>&1; then
pass 134
else
fail 134
fi
if ${testcvs} ci -m 'add abc' abc >>${LOGFILE} 2>&1; then
pass 135
else
fail 135
fi
cd ../../2
mkdir first-dir/dir1 first-dir/sdir
dotest conflicts-136 "${testcvs} -q update first-dir" \
'[UP] first-dir/abc
'"${QUESTION}"' first-dir/dir1
'"${QUESTION}"' first-dir/sdir' \
''"${QUESTION}"' first-dir/dir1
'"${QUESTION}"' first-dir/sdir
[UP] first-dir/abc'
dotest conflicts-137 'test -f first-dir/abc' ''
rmdir first-dir/dir1 first-dir/sdir
cd ../1/first-dir
mkdir subdir
if ${testcvs} add subdir >>${LOGFILE}; then
pass 138
else
fail 138
fi
cd ../..
mkdir 3
cd 3
if ${testcvs} -q co first-dir/abc first-dir/subdir \
>>${LOGFILE}; then
pass 139
else
fail 139
fi
cd ../1/first-dir/subdir
echo sss >sss
if ${testcvs} add sss >>${LOGFILE} 2>&1; then
pass 140
else
fail 140
fi
if ${testcvs} ci -m adding sss >>${LOGFILE} 2>&1; then
pass 140
else
fail 140
fi
cd ../../../3/first-dir
if ${testcvs} -q update >>${LOGFILE}; then
pass 141
else
fail 141
fi
if test -f subdir/sss; then
pass 142
else
fail 142
fi
cd ../..
rm -r 1 2 3 ; rm -rf ${CVSROOT_DIRNAME}/first-dir
;;
conflicts2)
mkdir ${CVSROOT_DIRNAME}/first-dir
mkdir 1
cd 1
dotest conflicts2-142a1 "${testcvs} -q co first-dir" ''
cd first-dir
touch a abc
dotest conflicts2-142a2 "${testcvs} add a abc" \
"${PROG} add: scheduling file .a. for addition
${PROG} add: scheduling file .abc. for addition
${PROG} add: use .${PROG} commit. to add these files permanently"
dotest conflicts2-142a3 "${testcvs} -q ci -m added" \
"RCS file: ${CVSROOT_DIRNAME}/first-dir/a,v
done
Checking in a;
${CVSROOT_DIRNAME}/first-dir/a,v <-- a
initial revision: 1\.1
done
RCS file: ${CVSROOT_DIRNAME}/first-dir/abc,v
done
Checking in abc;
${CVSROOT_DIRNAME}/first-dir/abc,v <-- abc
initial revision: 1\.1
done"
cd ../..
mkdir 2
cd 2
dotest conflicts2-142a4 "${testcvs} -q co first-dir" 'U first-dir/a
U first-dir/abc'
cd ..
cd 1/first-dir
echo modify a >>a
dotest conflicts2-142b2 "${testcvs} -q ci -m modify-a" \
"Checking in a;
${CVSROOT_DIRNAME}/first-dir/a,v <-- a
new revision: 1\.2; previous revision: 1\.1
done"
cd ../../2/first-dir
rm a
dotest conflicts2-142b3 "${testcvs} rm a" \
"${PROG} remove: scheduling .a. for removal
${PROG} remove: use .${PROG} commit. to remove this file permanently"
dotest_fail conflicts2-142b4 "${testcvs} -q update" \
"${PROG} update: conflict: removed a was modified by second party
C a"
dotest_sort conflicts2-142b5 "${testcvs} add a" "U a
${PROG} add: a, version 1\.1, resurrected"
dotest conflicts2-142b5b1 "$testcvs status a" \
"===================================================================
File: a Status: Needs Patch
Working revision: 1\.1.*
Repository revision: 1\.2 $CVSROOT_DIRNAME/first-dir/a,v
Sticky Tag: (none)
Sticky Date: (none)
Sticky Options: (none)"
dotest conflicts2-142b6 "${testcvs} -q update" 'U a'
cd ..
dotest conflicts2-142b7 "${testcvs} rm -f first-dir/a" \
"${PROG} remove: scheduling .first-dir/a. for removal
${PROG} remove: use .${PROG} commit. to remove this file permanently"
if $remote; then
dotest_fail conflicts2-142b8r "$testcvs add first-dir/a" \
"${PROG} add: in directory \.:
${PROG} \[add aborted\]: there is no version here; do '${PROG} checkout' first"
cd first-dir
else
dotest conflicts2-142b8 "${testcvs} add first-dir/a" \
"U first-dir/a
${PROG} add: first-dir/a, version 1\.2, resurrected"
cd first-dir
dotest conflicts2-142b9 "${testcvs} rm -f a" \
"${PROG} remove: scheduling .a. for removal
${PROG} remove: use .${PROG} commit. to remove this file permanently"
fi
dotest_sort conflicts2-142b10 "${testcvs} add a" "U a
${PROG} add: a, version 1\.2, resurrected"
dotest conflicts2-142b11 "${testcvs} -q update" ''
cd ../..
cd 1/first-dir
rm abc
dotest conflicts2-142c0 "${testcvs} rm abc" \
"${PROG} remove: scheduling .abc. for removal
${PROG} remove: use .${PROG} commit. to remove this file permanently"
dotest conflicts2-142c1 "${testcvs} -q ci -m remove-abc" \
"Removing abc;
${CVSROOT_DIRNAME}/first-dir/abc,v <-- abc
new revision: delete; previous revision: 1\.1
done"
cd ../../2/first-dir
rm abc
dotest conflicts2-142c2 "${testcvs} rm abc" \
"${PROG} remove: scheduling .abc. for removal
${PROG} remove: use .${PROG} commit. to remove this file permanently"
dotest conflicts2-142c3 "${testcvs} update" \
"${PROG} update: Updating \."
cd ../..
cd 1/first-dir
touch aa.c
echo 'contents unchanged' >same.c
dotest conflicts2-142d0 "${testcvs} add aa.c same.c" \
"${PROG} add: scheduling file .aa\.c. for addition
${PROG} add: scheduling file .same\.c. for addition
${PROG} add: use .${PROG} commit. to add these files permanently"
dotest conflicts2-142d1 "${testcvs} -q ci -m added" \
"RCS file: ${CVSROOT_DIRNAME}/first-dir/aa\.c,v
done
Checking in aa\.c;
${CVSROOT_DIRNAME}/first-dir/aa\.c,v <-- aa\.c
initial revision: 1\.1
done
RCS file: ${CVSROOT_DIRNAME}/first-dir/same\.c,v
done
Checking in same\.c;
${CVSROOT_DIRNAME}/first-dir/same\.c,v <-- same\.c
initial revision: 1\.1
done"
cd ../../2/first-dir
echo "don't you dare obliterate this text" >aa.c
echo 'contents unchanged' >same.c
if $remote; then
dotest_fail conflicts2-142d2 "${testcvs} -q update" \
"${QUESTION} aa\.c
${QUESTION} same\.c
${PROG} update: move away \./aa\.c; it is in the way
C aa\.c
${PROG} update: move away \./same\.c; it is in the way
C same\.c"
else
dotest_fail conflicts2-142d2 "${testcvs} -q update" \
"${PROG} [a-z]*: move away aa\.c; it is in the way
C aa\.c
U same\.c"
fi
dotest conflicts2-142d3 "${testcvs} -q status aa.c" \
"${PROG} status: move away aa\.c; it is in the way
===================================================================
File: aa\.c Status: Unresolved Conflict
Working revision: No entry for aa\.c
Repository revision: 1\.1 ${CVSROOT_DIRNAME}/first-dir/aa\.c,v"
dotest_fail conflicts2-142d4 "${testcvs} -q add aa.c" \
"${PROG} add: aa.c added independently by second party"
dotest conflicts2-142d6 "rm aa.c" ''
dotest conflicts2-142d7 "${testcvs} -q update aa.c" "U aa\.c"
dotest conflicts2-142d8 "cat aa.c" ''
cd ../..
rm -r 1 2; rm -rf ${CVSROOT_DIRNAME}/first-dir
;;
conflicts3)
mkdir 1; cd 1
dotest conflicts3-1 "${testcvs} -q co -l ." ''
mkdir first-dir
dotest conflicts3-2 "${testcvs} add first-dir" \
"Directory ${CVSROOT_DIRNAME}/first-dir added to the repository"
cd ..
mkdir 2; cd 2
dotest conflicts3-3 "${testcvs} -q co -l first-dir" ''
cd ../1/first-dir
touch file1 file2
dotest conflicts3-4 "${testcvs} add file1 file2" \
"${PROG} add: scheduling file .file1. for addition
${PROG} add: scheduling file .file2. for addition
${PROG} add: use .${PROG} commit. to add these files permanently"
dotest conflicts3-5 "${testcvs} -q ci -m add-them" \
"RCS file: ${CVSROOT_DIRNAME}/first-dir/file1,v
done
Checking in file1;
${CVSROOT_DIRNAME}/first-dir/file1,v <-- file1
initial revision: 1\.1
done
RCS file: ${CVSROOT_DIRNAME}/first-dir/file2,v
done
Checking in file2;
${CVSROOT_DIRNAME}/first-dir/file2,v <-- file2
initial revision: 1\.1
done"
cd ../../2/first-dir
dotest conflicts3-6 "${testcvs} -nq update" \
"U file1
U file2"
dotest_fail conflicts3-7 "test -f file1" ''
dotest conflicts3-8 "${testcvs} -q update" \
"U file1
U file2"
dotest conflicts3-9 "test -f file2" ''
dotest conflicts3-10 "${testcvs} rm -f file1 file2" \
"${PROG} remove: scheduling .file1. for removal
${PROG} remove: scheduling .file2. for removal
${PROG} remove: use .${PROG} commit. to remove these files permanently"
dotest conflicts3-11 "${testcvs} -q ci -m remove-them" \
"Removing file1;
${CVSROOT_DIRNAME}/first-dir/file1,v <-- file1
new revision: delete; previous revision: 1\.1
done
Removing file2;
${CVSROOT_DIRNAME}/first-dir/file2,v <-- file2
new revision: delete; previous revision: 1\.1
done"
cd ../../1/first-dir
dotest conflicts3-12 "${testcvs} -n -q update" \
"${PROG} update: file1 is no longer in the repository
${PROG} update: file2 is no longer in the repository"
dotest conflicts3-13 "${testcvs} -q update" \
"${PROG} update: file1 is no longer in the repository
${PROG} update: file2 is no longer in the repository"
mkdir sdir
dotest conflicts3-14 "${testcvs} add sdir" \
"Directory ${CVSROOT_DIRNAME}/first-dir/sdir added to the repository"
touch sdir/sfile
dotest conflicts3-14a "${testcvs} add sdir/sfile" \
"${PROG} add: scheduling file .sdir/sfile. for addition
${PROG} add: use .${PROG} commit. to add this file permanently"
dotest conflicts3-14b "${testcvs} -q ci -m add" \
"RCS file: ${CVSROOT_DIRNAME}/first-dir/sdir/sfile,v
done
Checking in sdir/sfile;
${CVSROOT_DIRNAME}/first-dir/sdir/sfile,v <-- sfile
initial revision: 1\.1
done"
cd ../../2/first-dir
mkdir sdir
mkdir sdir/CVS
if $remote; then
dotest conflicts3-15 "${testcvs} -q update" \
"${QUESTION} sdir"
else
dotest conflicts3-15 "${testcvs} -q update" \
"${QUESTION} sdir
${PROG} update: ignoring sdir (CVS/Repository missing)"
touch sdir/CVS/Repository
dotest conflicts3-16 "${testcvs} -q update" \
"${QUESTION} sdir
${PROG} update: ignoring sdir (CVS/Entries missing)"
cd ..
dotest conflicts3-16a "${testcvs} -q update first-dir" \
"${QUESTION} first-dir/sdir
${PROG} update: ignoring first-dir/sdir (CVS/Entries missing)"
cd first-dir
fi
rm -r sdir
mkdir newdir
mkdir newdir/CVS
dotest conflicts3-17 "${testcvs} -q update" "${QUESTION} newdir"
echo "D/newdir////" >> CVS/Entries
dotest conflicts3-18 "${testcvs} -q update" \
"${PROG} [a-z]*: ignoring newdir (CVS/Repository missing)"
touch newdir/CVS/Repository
dotest conflicts3-19 "${testcvs} -q update" \
"${PROG} [a-z]*: ignoring newdir (CVS/Entries missing)"
cd ..
dotest conflicts3-20 "${testcvs} -q update first-dir" \
"${PROG} [a-z]*: ignoring first-dir/newdir (CVS/Entries missing)"
cd first-dir
rm -r newdir
cd ..
rm -r first-dir
dotest conflicts3-20a "${testcvs} -q co -l first-dir" ''
cd first-dir
dotest conflicts3-21 "${testcvs} -q update -d sdir" "U sdir/sfile"
rm -r sdir/CVS
dotest conflicts3-22 "${testcvs} -q update" "${QUESTION} sdir"
if $remote; then
dotest_fail conflicts3-23 "${testcvs} -q update -PdA" \
"${QUESTION} sdir
${PROG} update: move away sdir/sfile; it is in the way
C sdir/sfile"
else
dotest conflicts3-23 "${testcvs} -q update -PdA" \
"${QUESTION} sdir"
fi
rm -r sdir
dotest conflicts3-24 "${testcvs} -q update -d sdir" "U sdir/sfile"
rm sdir/sfile
dotest conflicts3-25 "${testcvs} rm sdir/sfile" \
"${PROG} remove: scheduling .sdir/sfile. for removal
${PROG} remove: use .${PROG} commit. to remove this file permanently"
dotest conflicts3-26 "${testcvs} ci -m remove sdir/sfile" \
"Removing sdir/sfile;
${CVSROOT_DIRNAME}/first-dir/sdir/sfile,v <-- sfile
new revision: delete; previous revision: 1\.1
done"
rm -r sdir/CVS
dotest conflicts3-27 "${testcvs} -q update" "${QUESTION} sdir"
dotest conflicts3-28 "${testcvs} -q update -PdA" \
"${QUESTION} sdir"
cd ../..
rm -r 1 2
rm -rf ${CVSROOT_DIRNAME}/first-dir
;;
clean)
mkdir 1; cd 1
dotest clean-1 "${testcvs} -q co -l ." ''
mkdir first-dir
dotest clean-2 "${testcvs} add first-dir" \
"Directory ${CVSROOT_DIRNAME}/first-dir added to the repository"
cd first-dir
echo "The usual boring test text." > cleanme.txt
dotest clean-3 "${testcvs} add cleanme.txt" \
"${PROG} add: scheduling file .cleanme\.txt. for addition
${PROG} add: use .${PROG} commit. to add this file permanently"
dotest clean-4 "${testcvs} -q ci -m clean-3" \
"RCS file: ${CVSROOT_DIRNAME}/first-dir/cleanme\.txt,v
done
Checking in cleanme\.txt;
${CVSROOT_DIRNAME}/first-dir/cleanme\.txt,v <-- cleanme\.txt
initial revision: 1\.1
done"
dotest clean-5 "${testcvs} -q update" ''
dotest clean-6 "${testcvs} -q update -C" ''
echo "fish" >> cleanme.txt
dotest clean-7 "${testcvs} -q update" 'M cleanme\.txt'
dotest clean-8 "${testcvs} -q update -C" \
"(Locally modified cleanme\.txt moved to \.#cleanme\.txt\.1\.1)
U cleanme\.txt"
dotest clean-9 "cat .#cleanme.txt.1.1" \
"The usual boring test text\.
fish"
rm . dotest clean-10 "${testcvs} -q update cleanme.txt" ''
dotest clean-11 "${testcvs} -q update -C cleanme.txt" ''
echo "bluegill" >> cleanme.txt
dotest clean-12 "${testcvs} -q update cleanme.txt" 'M cleanme\.txt'
dotest clean-13 "${testcvs} -q update -C cleanme.txt" \
"(Locally modified cleanme\.txt moved to \.#cleanme\.txt\.1\.1)
U cleanme\.txt"
dotest clean-14 "cat .#cleanme.txt.1.1" \
"The usual boring test text\.
bluegill"
cd ..
dotest clean-15 "${testcvs} -q co -d second-dir first-dir" \
'U second-dir/cleanme\.txt'
cd second-dir
echo "conflict test" >> cleanme.txt
dotest clean-16 "${testcvs} -q ci -m." \
"Checking in cleanme\.txt;
${CVSROOT_DIRNAME}/first-dir/cleanme\.txt,v <-- cleanme\.txt
new revision: 1\.2; previous revision: 1\.1
done"
cd ../first-dir
echo "fish" >> cleanme.txt
dotest clean-17 "${testcvs} -nq update" \
"RCS file: ${CVSROOT_DIRNAME}/first-dir/cleanme\.txt,v
retrieving revision 1\.1
retrieving revision 1\.2
Merging differences between 1\.1 and 1\.2 into cleanme\.txt
rcsmerge: warning: conflicts during merge
${PROG} update: conflicts found in cleanme\.txt
C cleanme\.txt"
dotest clean-18 "${testcvs} -q update -C" \
"(Locally modified cleanme\.txt moved to \.#cleanme\.txt\.1\.1)
U cleanme\.txt"
dotest clean-19 "cat .#cleanme.txt.1.1" \
"The usual boring test text\.
fish"
cd ../..
rm -rf 1
rm -rf ${CVSROOT_DIRNAME}/first-dir
;;
modules)
mkdir 1; cd 1
dotest modules-1 "${testcvs} -q co ." 'U CVSROOT/checkoutlist
U CVSROOT/commitinfo
U CVSROOT/config
U CVSROOT/cvswrappers
U CVSROOT/editinfo
U CVSROOT/loginfo
U CVSROOT/modules
U CVSROOT/notify
U CVSROOT/rcsinfo
U CVSROOT/taginfo
U CVSROOT/verifymsg'
echo "# made a change" >>CVSROOT/modules
dotest modules-1d "${testcvs} -q ci -m add-modules" \
"Checking in CVSROOT/modules;
${CVSROOT_DIRNAME}/CVSROOT/modules,v <-- modules
new revision: 1\.[0-9]*; previous revision: 1\.[0-9]*
done
${PROG} commit: Rebuilding administrative file database"
cd ..
rm -rf 1
mkdir 1; cd 1
dotest modules-2 "${testcvs} -q co CVSROOT" 'U CVSROOT/checkoutlist
U CVSROOT/commitinfo
U CVSROOT/config
U CVSROOT/cvswrappers
U CVSROOT/editinfo
U CVSROOT/loginfo
U CVSROOT/modules
U CVSROOT/notify
U CVSROOT/rcsinfo
U CVSROOT/taginfo
U CVSROOT/verifymsg'
echo "# made a change" >>CVSROOT/modules
dotest modules-2d "${testcvs} -q ci -m add-modules" \
"Checking in CVSROOT/modules;
${CVSROOT_DIRNAME}/CVSROOT/modules,v <-- modules
new revision: 1\.[0-9]*; previous revision: 1\.[0-9]*
done
${PROG} commit: Rebuilding administrative file database"
cd ..
rm -rf 1
mkdir ${CVSROOT_DIRNAME}/somedir
mkdir 1; cd 1
dotest modules-3 "${testcvs} -q co somedir" ''
cd somedir
dotest modules-3d "${testcvs} -q co CVSROOT" 'U CVSROOT/checkoutlist
U CVSROOT/commitinfo
U CVSROOT/config
U CVSROOT/cvswrappers
U CVSROOT/editinfo
U CVSROOT/loginfo
U CVSROOT/modules
U CVSROOT/notify
U CVSROOT/rcsinfo
U CVSROOT/taginfo
U CVSROOT/verifymsg'
echo "# made a change" >>CVSROOT/modules
dotest modules-3g "${testcvs} -q ci -m add-modules" \
"Checking in CVSROOT/modules;
${CVSROOT_DIRNAME}/CVSROOT/modules,v <-- modules
new revision: 1\.[0-9]*; previous revision: 1\.[0-9]*
done
${PROG} commit: Rebuilding administrative file database"
cd ../..
rm -rf 1
rm -rf ${CVSROOT_DIRNAME}/somedir
mkdir ${CVSROOT_DIRNAME}/first-dir
mkdir 1
cd 1
dotest modules-143 "${testcvs} -q co first-dir" ""
cd first-dir
mkdir subdir
dotest modules-143a "${testcvs} add subdir" \
"Directory ${CVSROOT_DIRNAME}/first-dir/subdir added to the repository"
cd subdir
mkdir ssdir
dotest modules-143b "${testcvs} add ssdir" \
"Directory ${CVSROOT_DIRNAME}/first-dir/subdir/ssdir added to the repository"
touch a b
dotest modules-144 "${testcvs} add a b" \
"${PROG} add: scheduling file .a. for addition
${PROG} add: scheduling file .b. for addition
${PROG} add: use .${PROG} commit. to add these files permanently"
dotest modules-145 "${testcvs} ci -m added" \
"${PROG} [a-z]*: Examining .
${PROG} [a-z]*: Examining ssdir
RCS file: ${CVSROOT_DIRNAME}/first-dir/subdir/a,v
done
Checking in a;
${CVSROOT_DIRNAME}/first-dir/subdir/a,v <-- a
initial revision: 1\.1
done
RCS file: ${CVSROOT_DIRNAME}/first-dir/subdir/b,v
done
Checking in b;
${CVSROOT_DIRNAME}/first-dir/subdir/b,v <-- b
initial revision: 1\.1
done"
cd ..
dotest modules-146 "${testcvs} -q co CVSROOT" \
"U CVSROOT/checkoutlist
U CVSROOT/commitinfo
U CVSROOT/config
U CVSROOT/cvswrappers
U CVSROOT/editinfo
U CVSROOT/loginfo
U CVSROOT/modules
U CVSROOT/notify
U CVSROOT/rcsinfo
U CVSROOT/taginfo
U CVSROOT/verifymsg"
dotest modules-147 "${testcvs} -q update" ""
cat >CVSROOT/modules <<EOF
realmodule first-dir/subdir a
dirmodule first-dir/subdir
namedmodule -d nameddir first-dir/subdir
aliasmodule -a first-dir/subdir/a
aliasnested -a first-dir/subdir/ssdir
topfiles -a first-dir/file1 first-dir/file2
world -a .
statusmod -s Mungeable
infinitealias -a infinitealias
infinitealias2 -a infinitealias2/
infinitealias3 -a infinitealias4/
infinitealias4 -a aliasmodule infinitealias5
infinitealias5 -a infinitealias3/
bogusalias first-dir/subdir/a -a
EOF
dotest modules-148 "${testcvs} ci -m 'add modules' CVSROOT/modules" \
"Checking in CVSROOT/modules;
${CVSROOT_DIRNAME}/CVSROOT/modules,v <-- modules
new revision: 1\.[0-9]*; previous revision: 1\.[0-9]*
done
${PROG} commit: Rebuilding administrative file database"
cd ..
dotest modules-148a0 "${testcvs} co -c" 'aliasmodule -a first-dir/subdir/a
aliasnested -a first-dir/subdir/ssdir
bogusalias first-dir/subdir/a -a
dirmodule first-dir/subdir
infinitealias -a infinitealias
infinitealias2 -a infinitealias2/
infinitealias3 -a infinitealias4/
infinitealias4 -a aliasmodule infinitealias5
infinitealias5 -a infinitealias3/
namedmodule -d nameddir first-dir/subdir
realmodule first-dir/subdir a
statusmod -s Mungeable
topfiles -a first-dir/file1 first-dir/file2
world -a \.'
dotest modules-148a1 "${testcvs} co -s" \
'statusmod Mungeable
bogusalias NONE first-dir/subdir/a -a
dirmodule NONE first-dir/subdir
namedmodule NONE first-dir/subdir
realmodule NONE first-dir/subdir a'
dotest modules-148a1.1 "${testcvs} co infinitealias" \
"$PROG checkout: module \`infinitealias' in modules file contains infinite loop" \
"$PROG server: module \`infinitealias' in modules file contains infinite loop
$PROG checkout: module \`infinitealias' in modules file contains infinite loop"
dotest modules-148a1.2 "${testcvs} co infinitealias2" \
"$PROG checkout: module \`infinitealias2' in modules file contains infinite loop" \
"$PROG server: module \`infinitealias2' in modules file contains infinite loop
$PROG checkout: module \`infinitealias2' in modules file contains infinite loop"
dotest modules-148a1.3 "${testcvs} co infinitealias3/" \
"$PROG checkout: module \`infinitealias3' in modules file contains infinite loop" \
"$PROG server: module \`infinitealias3' in modules file contains infinite loop
$PROG checkout: module \`infinitealias3' in modules file contains infinite loop"
dotest modules-149a1 "${testcvs} co realmodule" "U realmodule/a"
dotest modules-149a2 "test -d realmodule && test -f realmodule/a" ""
dotest_fail modules-149a3 "test -f realmodule/b" ""
dotest modules-149a4 "${testcvs} -q co realmodule" ""
dotest modules-149a5 "echo yes | ${testcvs} release -d realmodule" \
"You have \[0\] altered files in this repository\.
Are you sure you want to release (and delete) directory .realmodule.: "
dotest_fail modules-149b1 "${testcvs} co realmodule/a" \
"${PROG}"' checkout: module `realmodule/a'\'' is a request for a file in a module which is not a directory' \
"${PROG}"' server: module `realmodule/a'\'' is a request for a file in a module which is not a directory
'"${PROG}"' \[checkout aborted\]: cannot expand modules'
dotest modules-150c "${testcvs} co dirmodule/a" "U dirmodule/a"
dotest modules-150d "test -d dirmodule && test -f dirmodule/a" ""
dotest_fail modules-150e "test -f dirmodule/b" ""
dotest modules-150f "echo yes | ${testcvs} release -d dirmodule" \
"You have \[0\] altered files in this repository\.
Are you sure you want to release (and delete) directory .dirmodule.: "
dotest modules-150g1 "${testcvs} co dirmodule/nonexist" \
"${PROG} checkout: warning: new-born dirmodule/nonexist has disappeared"
dotest_fail modules-150g2 "test -f dirmodule/a || test -f dirmodule/b" ""
rm -r dirmodule
dotest modules-150h1 "${testcvs} -q co namedmodule" \
'U nameddir/a
U nameddir/b'
dotest modules-150h2 "test -f nameddir/a && test -f nameddir/b" ""
echo add line >>nameddir/a
dotest modules-150h3 "${testcvs} -q co namedmodule" 'M nameddir/a'
rm nameddir/a
dotest modules-150h4 "${testcvs} -q co namedmodule" 'U nameddir/a'
dotest modules-150h99 "echo yes | ${testcvs} release -d nameddir" \
"You have \[0\] altered files in this repository\.
Are you sure you want to release (and delete) directory .nameddir.: "
dotest modules-151 "${testcvs} co aliasmodule" ""
dotest_fail modules-152 "test -d aliasmodule" ""
echo abc >>first-dir/subdir/a
dotest modules-153 "${testcvs} -q co aliasmodule" "M first-dir/subdir/a"
cd ..
rm -r 1
mkdir 2
cd 2
dotest modules-155a0 "${testcvs} co aliasnested" \
"${PROG} checkout: Updating first-dir/subdir/ssdir"
dotest modules-155a1 "test -d first-dir" ''
dotest modules-155a2 "test -d first-dir/subdir" ''
dotest modules-155a3 "test -d first-dir/subdir/ssdir" ''
dotest modules-155a4 "ls" "first-dir" \
"CVS
first-dir"
cd ..
rm -r 2
mkdir 1
cd 1
dotest modules-155b "${testcvs} -q co world" \
"U CVSROOT/${DOTSTAR}
U first-dir/subdir/a
U first-dir/subdir/b"
cd ..
rm -r 1
mkdir 1
cd 1
dotest modules-155c1 "${testcvs} -q co first-dir" \
"U first-dir/subdir/a
U first-dir/subdir/b"
cd first-dir
echo 'first revision' > file1
echo 'first revision' > file2
dotest modules-155c2 "${testcvs} add file1 file2" \
"${PROG}"' add: scheduling file `file1'\'' for addition
'"${PROG}"' add: scheduling file `file2'\'' for addition
'"${PROG}"' add: use .'"${PROG}"' commit. to add these files permanently'
dotest modules-155c3 "${testcvs} -q ci -m add-it" \
"RCS file: ${CVSROOT_DIRNAME}/first-dir/file1,v
done
Checking in file1;
${CVSROOT_DIRNAME}/first-dir/file1,v <-- file1
initial revision: 1\.1
done
RCS file: ${CVSROOT_DIRNAME}/first-dir/file2,v
done
Checking in file2;
${CVSROOT_DIRNAME}/first-dir/file2,v <-- file2
initial revision: 1\.1
done"
cd ..
rm -r first-dir
dotest modules-155c4 "${testcvs} -q co topfiles" \
"U first-dir/file1
U first-dir/file2"
dotest modules-155c5 "${testcvs} -q co topfiles" ""
cd first-dir
dotest modules-155c6 "${testcvs} -q rm -f file1" \
"${PROG} remove: use .${PROG} commit. to remove this file permanently"
dotest modules-155c7 "${testcvs} -q ci -m remove-it" \
"Removing file1;
${CVSROOT_DIRNAME}/first-dir/file1,v <-- file1
new revision: delete; previous revision: 1\.1
done"
cd ..
rm -r first-dir
dotest modules-155c8 "${testcvs} -q co topfiles" \
"${PROG} checkout: warning: first-dir/file1 is not (any longer) pertinent
U first-dir/file2"
cd ..
rm -r 1
rm -rf ${CVSROOT_DIRNAME}/first-dir
;;
modules2)
mkdir 1; cd 1
dotest modules2-setup-1 "${testcvs} -q co -l ." ''
mkdir first-dir second-dir third-dir
dotest modules2-setup-2 \
"${testcvs} add first-dir second-dir third-dir" \
"Directory ${CVSROOT_DIRNAME}/first-dir added to the repository
Directory ${CVSROOT_DIRNAME}/second-dir added to the repository
Directory ${CVSROOT_DIRNAME}/third-dir added to the repository"
cd third-dir
touch file3
dotest modules2-setup-3 "${testcvs} add file3" \
"${PROG} add: scheduling file .file3. for addition
${PROG} add: use .${PROG} commit. to add this file permanently"
dotest modules2-setup-4 "${testcvs} -q ci -m add file3" \
"RCS file: ${CVSROOT_DIRNAME}/third-dir/file3,v
done
Checking in file3;
${CVSROOT_DIRNAME}/third-dir/file3,v <-- file3
initial revision: 1\.1
done"
cd ../..
rm -r 1
mkdir 1
cd 1
dotest modules2-1 "${testcvs} -q co CVSROOT/modules" \
'U CVSROOT/modules'
cd CVSROOT
cat >> modules << EOF
ampermodule &first-dir &second-dir
combmodule third-dir file3 &first-dir
ampdirmod -d newdir &first-dir &second-dir
badmod -d newdir
messymod first-dir &messymodchild
messymodchild -d sdir/child second-dir
EOF
dotest modules2-2 "${testcvs} -q ci -m add-modules" \
"Checking in modules;
${CVSROOT_DIRNAME}/CVSROOT/modules,v <-- modules
new revision: 1\.[0-9]*; previous revision: 1\.[0-9]*
done
${PROG} commit: Rebuilding administrative file database"
cd ..
dotest modules2-3 "${testcvs} -q co ampermodule" ''
dotest modules2-4 "test -d ampermodule/first-dir" ''
dotest modules2-5 "test -d ampermodule/second-dir" ''
cd ampermodule
if ${testcvs} release -d first-dir second-dir <<EOF >>${LOGFILE}
yes
yes
EOF
then
pass modules2-6
else
fail modules2-6
fi
dotest_fail modules2-7 "test -d first-dir" ''
dotest_fail modules2-8 "test -d second-dir" ''
cd ..
dotest modules2-ampermod-1 "${testcvs} -q co -n ampermodule" ''
dotest modules2-ampermod-2 "test -d ampermodule/first-dir" ''
dotest modules2-ampermod-3 "test -d ampermodule/second-dir" ''
if echo yes |${testcvs} release -d ampermodule >>${LOGFILE}; then
pass modules2-ampermod-release-1
else
fail modules2-ampermod-release-1
fi
dotest_fail modules2-ampermod-release-2 "test -d ampermodule" ''
dotest modules2-ampermod-4 "${testcvs} -q co -n -d newname ampermodule" ''
dotest modules2-ampermod-5 "test -d newname/first-dir" ''
dotest modules2-ampermod-6 "test -d newname/second-dir" ''
rm -rf newname
mkdir first-dir
dotest modules2-9 "${testcvs} co ampermodule" \
"${PROG} checkout: Updating first-dir
${PROG} checkout: Updating second-dir"
touch ampermodule/first-dir/amper1
cd ampermodule
dotest modules2-10 "${testcvs} add first-dir/amper1" \
"${PROG} add: scheduling file .first-dir/amper1. for addition
${PROG} add: use .${PROG} commit. to add this file permanently"
cd ..
dotest modules2-12 "${testcvs} co ampermodule" \
"${PROG} checkout: Updating first-dir
A first-dir/amper1
${PROG} checkout: Updating second-dir"
if $remote; then
dotest modules2-13 "${testcvs} -q ci -m add-it ampermodule" \
"RCS file: ${CVSROOT_DIRNAME}/first-dir/amper1,v
done
Checking in ampermodule/first-dir/amper1;
${CVSROOT_DIRNAME}/first-dir/amper1,v <-- amper1
initial revision: 1\.1
done"
else
cd ampermodule
dotest modules2-13 "${testcvs} -q ci -m add-it" \
"RCS file: ${CVSROOT_DIRNAME}/first-dir/amper1,v
done
Checking in first-dir/amper1;
${CVSROOT_DIRNAME}/first-dir/amper1,v <-- amper1
initial revision: 1\.1
done"
cd ..
fi
cd ..
rm -r 1
mkdir 1; cd 1
dotest modules2-14 "${testcvs} co combmodule" \
"U combmodule/file3
${PROG} checkout: Updating first-dir
U first-dir/amper1"
dotest modules2-15 "test -f combmodule/file3" ""
dotest modules2-16 "test -f combmodule/first-dir/amper1" ""
cd combmodule
rm -r first-dir
dotest modules2-17 "${testcvs} update -d" \
"${PROG} update: Updating \."
cd ..
dotest modules2-18 "${testcvs} -q co combmodule" \
"U first-dir/amper1"
dotest modules2-19 "test -f combmodule/first-dir/amper1" ""
cd ..
rm -r 1
mkdir 1; cd 1
dotest modules2-20 "${testcvs} co ampdirmod" \
"${PROG} checkout: Updating first-dir
U first-dir/amper1
${PROG} checkout: Updating second-dir"
dotest modules2-21 "test -f newdir/first-dir/amper1" ""
dotest modules2-22 "test -d newdir/second-dir" ""
dotest_fail modules2-23 "${testcvs} co badmod" \
"${PROG} checkout: modules file missing directory for module badmod" \
"${PROG} server: modules file missing directory for module badmod
${PROG} \[checkout aborted\]: cannot expand modules"
cd ..
rm -r 1
mkdir 1; cd 1
dotest modules2-nestedrename-1 "${testcvs} -q co messymod" \
"U messymod/amper1"
dotest modules2-nestedrename-2 "test -d messymod/sdir" ''
dotest modules2-nestedrename-3 "test -d messymod/sdir/CVS" ''
dotest modules2-nestedrename-4 "test -d messymod/sdir/child" ''
dotest modules2-nestedrename-5 "test -d messymod/sdir/child/CVS" ''
cd ..; rm -r 1
mkdir 1; cd 1
dotest modules2-ampertag-setup-1 \
"${testcvs} -Q rtag tag first-dir second-dir third-dir" \
''
dotest modules2-ampertag-1 "${testcvs} -q co -rtag ampermodule" \
"U first-dir/amper1"
if $remote; then
dotest_fail modules2-ampertag-2 "test -d ampermodule/second-dir" ''
dotest_fail modules2-ampertag-3 "test -d ampermodule/second-dir/CVS" ''
else
dotest modules2-ampertag-2 "test -d ampermodule/second-dir" ''
dotest modules2-ampertag-3 "test -d ampermodule/second-dir/CVS" ''
fi
cd ..; rm -r 1
mkdir 1; cd 1
dotest modules2-tagfiles-1 "${testcvs} -q co -rtag messymod" \
"U messymod/amper1"
if $remote; then
dotest_fail modules2-tagfiles-2r "test -d messymod/sdir" ''
else
dotest modules2-tagfiles-2 "cat messymod/sdir/CVS/Tag" 'Ttag'
fi
cd ..; rm -r 1
mkdir 1; cd 1
dotest modules2-a0.5 "${testcvs} -q co CVSROOT/modules" \
'U CVSROOT/modules'
cd CVSROOT
echo 'aliasopt -a -d onedir first-dir' >modules
dotest modules2-a0 "${testcvs} -q ci -m add-modules" \
"Checking in modules;
${CVSROOT_DIRNAME}/CVSROOT/modules,v <-- modules
new revision: 1\.[0-9]*; previous revision: 1\.[0-9]*
done
${PROG} commit: Rebuilding administrative file database"
cd ..
dotest_fail modules2-a1 "${testcvs} -q co aliasopt" \
"${PROG} checkout: -a cannot be specified in the modules file along with other options" \
"${PROG} server: -a cannot be specified in the modules file along with other options
${PROG} \[checkout aborted\]: cannot expand modules"
cd ..; rm -r 1
rm -rf ${CVSROOT_DIRNAME}/first-dir
rm -rf ${CVSROOT_DIRNAME}/second-dir
rm -rf ${CVSROOT_DIRNAME}/third-dir
;;
modules3)
mkdir 1; cd 1
dotest modules3-0 "${testcvs} -q co -l ." ''
mkdir first-dir
dotest modules3-1 "${testcvs} add first-dir" \
"Directory ${CVSROOT_DIRNAME}/first-dir added to the repository"
cd first-dir
echo file1 >file1
dotest modules3-2 "${testcvs} add file1" \
"${PROG} add: scheduling file \`file1' for addition
${PROG} add: use '${PROG} commit' to add this file permanently"
dotest modules3-3 "${testcvs} -q ci -m add-it" \
"RCS file: ${CVSROOT_DIRNAME}/first-dir/file1,v
done
Checking in file1;
${CVSROOT_DIRNAME}/first-dir/file1,v <-- file1
initial revision: 1\.1
done"
cd ..
dotest modules3-4 "${testcvs} -q update -d CVSROOT" \
"U CVSROOT${DOTSTAR}"
cd CVSROOT
cat >modules <<EOF
mod1 -a first-dir/file1
bigmod -a mod1 first-dir/file1
namednest -d src/sub/dir first-dir
nestdeeper -d src/sub1/sub2/sub3/dir first-dir
nestshallow -d src/dir second-dir/suba/subb
path/in/modules &mod1
another/path/test -d another/path/test first-dir
EOF
dotest modules3-5 "${testcvs} -q ci -m add-modules" \
"Checking in modules;
${CVSROOT_DIRNAME}/CVSROOT/modules,v <-- modules
new revision: 1\.[0-9]*; previous revision: 1\.[0-9]*
done
${PROG} commit: Rebuilding administrative file database"
cd ..
dotest modules3-6 "${testcvs} -q co bigmod" ''
rm -r first-dir
dotest modules3-7 "${testcvs} -q co bigmod" 'U first-dir/file1'
cd ..
rm -r 1
mkdir 1; cd 1
mkdir suba
mkdir suba/subb
dotest modules3-7a \
"${testcvs} import -m add-dirs second-dir tag1 tag2" \
"${PROG} import: Importing ${CVSROOT_DIRNAME}/second-dir/suba
${PROG} import: Importing ${CVSROOT_DIRNAME}/second-dir/suba/subb
No conflicts created by this import" "
No conflicts created by this import"
cd ..; rm -r 1
mkdir 1; cd 1
dotest modules3-7b "${testcvs} co second-dir" \
"${PROG} checkout: Updating second-dir
${PROG} checkout: Updating second-dir/suba
${PROG} checkout: Updating second-dir/suba/subb" \
"${PROG} checkout: Updating second-dir"
if $remote; then
cd second-dir
mkdir suba
dotest modules3-7-workaround1 "${testcvs} add suba" \
"Directory ${CVSROOT_DIRNAME}/second-dir/suba added to the repository"
cd suba
mkdir subb
dotest modules3-7-workaround2 "${testcvs} add subb" \
"Directory ${CVSROOT_DIRNAME}/second-dir/suba/subb added to the repository"
cd ../..
fi
cd second-dir/suba/subb
touch fileb
dotest modules3-7c "${testcvs} add fileb" \
"${PROG} add: scheduling file .fileb. for addition
${PROG} add: use .${PROG} commit. to add this file permanently"
dotest modules3-7d "${testcvs} -q ci -m add-it" \
"RCS file: ${CVSROOT_DIRNAME}/second-dir/suba/subb/fileb,v
done
Checking in fileb;
${CVSROOT_DIRNAME}/second-dir/suba/subb/fileb,v <-- fileb
initial revision: 1\.1
done"
cd ../../..
cd ..; rm -r 1
mkdir 1
cd 1
dotest modules3-8 "${testcvs} -q co namednest" \
'U src/sub/dir/file1'
dotest modules3-9 "test -f src/sub/dir/file1" ''
cd ..
rm -r 1
mkdir 1
cd 1
dotest modules3-10 "${testcvs} -q co nestdeeper" \
'U src/sub1/sub2/sub3/dir/file1'
dotest modules3-11 "test -f src/sub1/sub2/sub3/dir/file1" ''
if $remote; then
dotest_fail modules3-11b \
"${testcvs} -q update ${TESTDIR}/1/src/sub1/sub2/sub3/dir/file1" \
"absolute pathname .${TESTDIR}/1/src/sub1/sub2/sub3/dir. illegal for server"
fi
cd ..
rm -r 1
if $remote; then :; else
mkdir 1; cd 1
dotest modules3-12 "${testcvs} -q co path/in/modules" \
"U first-dir/file1"
dotest modules3-13 "test -f path/in/modules/first-dir/file1" ''
cd ..; rm -r 1
fi
mkdir 1; cd 1
dotest modules3-14 \
"${testcvs} -q rtag tag1 path/in/modules" ''
dotest_fail modules3-15 "test -d path/in/modules" ''
cd ..; rm -r 1
mkdir 2; cd 2
dotest modules3-16 "${testcvs} -q co another/path/test" \
"U another/path/test/file1"
dotest modules3-17 "cat another/path/test/file1" 'file1'
cd ..; rm -r 2
rm -rf ${CVSROOT_DIRNAME}/first-dir
rm -rf ${CVSROOT_DIRNAME}/second-dir
;;
modules4)
mkdir 1; cd 1
dotest modules4-1 "${testcvs} -q co -l ." ''
mkdir first-dir
dotest modules4-2 "${testcvs} add first-dir" \
"Directory ${CVSROOT_DIRNAME}/first-dir added to the repository"
cd first-dir
mkdir subdir subdir_long
dotest modules4-3 "${testcvs} add subdir subdir_long" \
"Directory ${CVSROOT_DIRNAME}/first-dir/subdir added to the repository
Directory ${CVSROOT_DIRNAME}/first-dir/subdir_long added to the repository"
echo file1 > file1
dotest modules4-4 "${testcvs} add file1" \
"${PROG}"' add: scheduling file `file1'\'' for addition
'"${PROG}"' add: use .'"${PROG}"' commit. to add this file permanently'
echo file2 > subdir/file2
dotest modules4-5 "${testcvs} add subdir/file2" \
"${PROG}"' add: scheduling file `subdir/file2'\'' for addition
'"${PROG}"' add: use .'"${PROG}"' commit. to add this file permanently'
echo file3 > subdir_long/file3
dotest modules4-6 "${testcvs} add subdir_long/file3" \
"${PROG}"' add: scheduling file `subdir_long/file3'\'' for addition
'"${PROG}"' add: use .'"${PROG}"' commit. to add this file permanently'
dotest modules4-7 "${testcvs} -q ci -m add-it" \
"RCS file: ${CVSROOT_DIRNAME}/first-dir/file1,v
done
Checking in file1;
${CVSROOT_DIRNAME}/first-dir/file1,v <-- file1
initial revision: 1\.1
done
RCS file: ${CVSROOT_DIRNAME}/first-dir/subdir/file2,v
done
Checking in subdir/file2;
${CVSROOT_DIRNAME}/first-dir/subdir/file2,v <-- file2
initial revision: 1\.1
done
RCS file: ${CVSROOT_DIRNAME}/first-dir/subdir_long/file3,v
done
Checking in subdir_long/file3;
${CVSROOT_DIRNAME}/first-dir/subdir_long/file3,v <-- file3
initial revision: 1\.1
done"
cd ..
dotest modules4-8 "${testcvs} -q update -d CVSROOT" \
"U CVSROOT${DOTSTAR}"
cd CVSROOT
cat >modules <<EOF
all -a first-dir
some -a !first-dir/subdir first-dir
other -a !first-dir/subdir !first-dir/subdir_long first-dir
somewhat -a first-dir !first-dir/subdir
EOF
dotest modules4-9 "${testcvs} -q ci -m add-modules" \
"Checking in modules;
${CVSROOT_DIRNAME}/CVSROOT/modules,v <-- modules
new revision: 1\.[0-9]*; previous revision: 1\.[0-9]*
done
${PROG} commit: Rebuilding administrative file database"
cd ..
cd ..
mkdir 2; cd 2
dotest modules4-10 "${testcvs} -q co all" \
"U first-dir/file1
U first-dir/subdir/file2
U first-dir/subdir_long/file3"
rm -r first-dir
dotest modules4-11 "${testcvs} -q co some" \
"U first-dir/file1
U first-dir/subdir_long/file3"
dotest_fail modules4-12 "test -d first-dir/subdir" ''
dotest modules4-13 "test -d first-dir/subdir_long" ''
rm -r first-dir
if $remote; then
dotest modules4-14r-1 "${testcvs} -q co somewhat" \
"U first-dir/file1
U first-dir/subdir_long/file3"
dotest_fail modules4-14r-2 "test -d first-dir/subdir" ''
dotest modules4-14r-3 "test -d first-dir/subdir_long" ''
else
dotest modules4-14-1 "${testcvs} -q co somewhat" \
"U first-dir/file1
U first-dir/subdir/file2
U first-dir/subdir_long/file3"
dotest modules4-14-2 "test -d first-dir/subdir" ''
dotest modules4-14-3 "test -d first-dir/subdir_long" ''
fi
rm -r first-dir
dotest modules4-15 "${testcvs} -q co other" \
"U first-dir/file1"
dotest_fail modules4-16 "test -d first-dir/subdir" ''
dotest_fail modules4-17 "test -d first-dir/subdir_long" ''
rm -r first-dir
cd ..
rm -r 2
dotest modules4-18 "${testcvs} rtag tag some" \
"${PROG} rtag: Tagging first-dir
${PROG} rtag: Ignoring first-dir/subdir
${PROG} rtag: Tagging first-dir/subdir_long"
cd 1/first-dir/subdir
dotest modules4-19 "${testcvs} log file2" "
RCS file: ${CVSROOT_DIRNAME}/first-dir/subdir/file2,v
Working file: file2
head: 1\.1
branch:
locks: strict
access list:
symbolic names:
keyword substitution: kv
total revisions: 1; selected revisions: 1
description:
----------------------------
revision 1\.1
date: [0-9/]* [0-9:]*; author: ${username}; state: Exp;
add-it
============================================================================="
if $keep; then
echo Keeping $TESTDIR and exiting due to --keep
exit 0
fi
cd ../../..
rm -r 1
rm -rf ${CVSROOT_DIRNAME}/first-dir
;;
modules5)
mkdir ${CVSROOT_DIRNAME}/first-dir
mkdir 1
cd 1
dotest modules5-1 "${testcvs} -q co first-dir" ""
cd first-dir
mkdir subdir
dotest modules5-2 "${testcvs} add subdir" \
"Directory ${CVSROOT_DIRNAME}/first-dir/subdir added to the repository"
cd subdir
mkdir ssdir
dotest modules5-3 "${testcvs} add ssdir" \
"Directory ${CVSROOT_DIRNAME}/first-dir/subdir/ssdir added to the repository"
touch a b
dotest modules5-4 "${testcvs} add a b" \
"${PROG} add: scheduling file .a. for addition
${PROG} add: scheduling file .b. for addition
${PROG} add: use .${PROG} commit. to add these files permanently"
dotest modules5-5 "${testcvs} ci -m added" \
"${PROG} [a-z]*: Examining .
${PROG} [a-z]*: Examining ssdir
RCS file: ${CVSROOT_DIRNAME}/first-dir/subdir/a,v
done
Checking in a;
${CVSROOT_DIRNAME}/first-dir/subdir/a,v <-- a
initial revision: 1\.1
done
RCS file: ${CVSROOT_DIRNAME}/first-dir/subdir/b,v
done
Checking in b;
${CVSROOT_DIRNAME}/first-dir/subdir/b,v <-- b
initial revision: 1\.1
done"
cd ..
dotest modules5-6 "${testcvs} -q co CVSROOT" \
"U CVSROOT/checkoutlist
U CVSROOT/commitinfo
U CVSROOT/config
U CVSROOT/cvswrappers
U CVSROOT/editinfo
U CVSROOT/loginfo
U CVSROOT/modules
U CVSROOT/notify
U CVSROOT/rcsinfo
U CVSROOT/taginfo
U CVSROOT/verifymsg"
for i in checkout export tag; do
cat >> ${CVSROOT_DIRNAME}/$i.sh <<EOF
#! /bin/sh
sleep 1
echo "$i script invoked in \`pwd\`"
echo "args: \$@"
EOF
if test -n "$remotehost"; then
$CVS_RSH $remotehost "chmod +x ${CVSROOT_DIRNAME}/$i.sh"
else
chmod +x ${CVSROOT_DIRNAME}/$i.sh
fi
done
OPTS="-o${CVSROOT_DIRNAME}/checkout.sh -e ${CVSROOT_DIRNAME}/export.sh -t${CVSROOT_DIRNAME}/tag.sh"
cat >CVSROOT/modules <<EOF
realmodule ${OPTS} first-dir/subdir a
dirmodule ${OPTS} first-dir/subdir
namedmodule -d nameddir ${OPTS} first-dir/subdir
EOF
dotest modules5-7 "${testcvs} ci -m 'add modules' CVSROOT/modules" \
"" \
"Checking in CVSROOT/modules;
${CVSROOT_DIRNAME}/CVSROOT/modules,v <-- modules
new revision: 1\.[0-9]*; previous revision: 1\.[0-9]*
done
${PROG} commit: Rebuilding administrative file database"
cd ..
rm -rf first-dir
if $remote; then
dotest modules5-8 "${testcvs} co realmodule" \
"U realmodule/a
${PROG} checkout: Executing ..${CVSROOT_DIRNAME}/checkout\.sh. .realmodule..
checkout script invoked in ${TMPDIR}/cvs-serv[0-9a-z]*
args: realmodule"
else
dotest modules5-8 "${testcvs} co realmodule" \
"U realmodule/a
${PROG} checkout: Executing ..${CVSROOT_DIRNAME}/checkout\.sh. .realmodule..
checkout script invoked in ${TESTDIR}/1
args: realmodule"
fi
dotest modules5-9 "test -d realmodule && test -f realmodule/a" ""
dotest_fail modules5-10 "test -f realmodule/b" ""
if $remote; then
dotest modules5-11 "${testcvs} -q co realmodule" \
"checkout script invoked in ${TMPDIR}/cvs-serv[0-9a-z]*
args: realmodule"
dotest modules5-12 "${testcvs} -q update" ''
echo "change" >>realmodule/a
dotest modules5-13 "${testcvs} -q ci -m." \
"Checking in realmodule/a;
${CVSROOT_DIRNAME}/first-dir/subdir/a,v <-- a
new revision: 1\.2; previous revision: 1\.1
done"
else
dotest modules5-11 "${testcvs} -q co realmodule" \
"checkout script invoked in ${TESTDIR}/1
args: realmodule"
dotest modules5-12 "${testcvs} -q update" ''
echo "change" >>realmodule/a
dotest modules5-13 "${testcvs} -q ci -m." \
"Checking in realmodule/a;
${CVSROOT_DIRNAME}/first-dir/subdir/a,v <-- a
new revision: 1\.2; previous revision: 1\.1
done"
fi
dotest modules5-14 "echo yes | ${testcvs} release -d realmodule" \
"You have \[0\] altered files in this repository\.
Are you sure you want to release (and delete) directory .realmodule.: "
dotest modules5-15 "${testcvs} -q rtag -Dnow MYTAG realmodule" \
"tag script invoked in ${TESTDIR}/1
args: realmodule MYTAG" \
"tag script invoked in ${TMPDIR}/cvs-serv[0-9a-z]*
args: realmodule MYTAG"
if $remote; then
dotest modules5-16 "${testcvs} -q export -r MYTAG realmodule" \
"U realmodule/a
export script invoked in ${TMPDIR}/cvs-serv[0-9a-z]*
args: realmodule"
else
dotest modules5-16 "${testcvs} -q export -r MYTAG realmodule" \
"U realmodule/a
export script invoked in ${TESTDIR}/1
args: realmodule"
fi
rm -r realmodule
dotest_fail modules5-17 "${testcvs} co realmodule/a" \
"${PROG}"' checkout: module `realmodule/a'\'' is a request for a file in a module which is not a directory' \
"${PROG}"' server: module `realmodule/a'\'' is a request for a file in a module which is not a directory
'"${PROG}"' \[checkout aborted\]: cannot expand modules'
if $remote; then
dotest modules5-18 "${testcvs} co dirmodule/a" \
"U dirmodule/a
${PROG} checkout: Executing ..${CVSROOT_DIRNAME}/checkout\.sh. .dirmodule..
checkout script invoked in ${TMPDIR}/cvs-serv[0-9a-z]*
args: dirmodule"
else
dotest modules5-18 "${testcvs} co dirmodule/a" \
"U dirmodule/a
${PROG} checkout: Executing ..${CVSROOT_DIRNAME}/checkout\.sh. .dirmodule..
checkout script invoked in ${TESTDIR}/1
args: dirmodule"
fi
dotest modules5-19 "test -d dirmodule && test -f dirmodule/a" ""
dotest_fail modules5-20 "test -f dirmodule/b" ""
dotest modules5-21 "echo yes | ${testcvs} release -d dirmodule" \
"You have \[0\] altered files in this repository\.
Are you sure you want to release (and delete) directory .dirmodule.: "
if $remote; then
dotest modules5-22 "${testcvs} co dirmodule/nonexist" \
"${PROG} checkout: warning: new-born dirmodule/nonexist has disappeared
${PROG} checkout: Executing ..${CVSROOT_DIRNAME}/checkout\.sh. .dirmodule..
checkout script invoked in ${TMPDIR}/cvs-serv[0-9a-z]*
args: dirmodule"
else
dotest modules5-22 "${testcvs} co dirmodule/nonexist" \
"${PROG} checkout: warning: new-born dirmodule/nonexist has disappeared
${PROG} checkout: Executing ..${CVSROOT_DIRNAME}/checkout\.sh. .dirmodule..
checkout script invoked in ${TESTDIR}/1
args: dirmodule"
fi
dotest_fail modules5-23 "test -f dirmodule/a || test -f dirmodule/b" ""
rm -r dirmodule
if $remote; then
dotest modules5-24 "${testcvs} -q co namedmodule" \
"U nameddir/a
U nameddir/b
checkout script invoked in ${TMPDIR}/cvs-serv[0-9a-z]*
args: nameddir"
else
dotest modules5-24 "${testcvs} -q co namedmodule" \
"U nameddir/a
U nameddir/b
checkout script invoked in ${TESTDIR}/1
args: nameddir"
fi
dotest modules5-25 "test -f nameddir/a && test -f nameddir/b" ""
echo add line >>nameddir/a
if $remote; then
dotest modules5-26 "${testcvs} -q co namedmodule" \
"M nameddir/a
checkout script invoked in ${TMPDIR}/cvs-serv[0-9a-z]*
args: nameddir"
else
dotest modules5-26 "${testcvs} -q co namedmodule" \
"M nameddir/a
checkout script invoked in ${TESTDIR}/1
args: nameddir"
fi
rm nameddir/a
if $remote; then
dotest modules5-27 "${testcvs} -q co namedmodule" \
"U nameddir/a
checkout script invoked in ${TMPDIR}/cvs-serv[0-9a-z]*
args: nameddir"
else
dotest modules5-27 "${testcvs} -q co namedmodule" \
"U nameddir/a
checkout script invoked in ${TESTDIR}/1
args: nameddir"
fi
dotest modules5-28 "echo yes | ${testcvs} release -d nameddir" \
"You have \[0\] altered files in this repository\.
Are you sure you want to release (and delete) directory .nameddir.: "
if $remote; then
dotest modules5-29 "${testcvs} co -d mydir realmodule" \
"U mydir/a
${PROG} checkout: Executing ..${CVSROOT_DIRNAME}/checkout\.sh. .mydir..
checkout script invoked in ${TMPDIR}/cvs-serv[0-9a-z]*
args: mydir"
else
dotest modules5-29 "${testcvs} co -d mydir realmodule" \
"U mydir/a
${PROG} checkout: Executing ..${CVSROOT_DIRNAME}/checkout\.sh. .mydir..
checkout script invoked in ${TESTDIR}/1
args: mydir"
fi
dotest modules5-30 "test -d mydir && test -f mydir/a" ""
dotest_fail modules5-31 "test -d realmodule || test -f mydir/b" ""
if $remote; then
dotest modules5-32 "${testcvs} -q co -d mydir realmodule" \
"checkout script invoked in ${TMPDIR}/cvs-serv[0-9a-z]*
args: mydir"
dotest modules5-33 "${testcvs} -q update" ''
echo "change" >>mydir/a
dotest modules5-34 "${testcvs} -q ci -m." \
"Checking in mydir/a;
${CVSROOT_DIRNAME}/first-dir/subdir/a,v <-- a
new revision: 1\.3; previous revision: 1\.2
done"
else
dotest modules5-32 "${testcvs} -q co -d mydir realmodule" \
"checkout script invoked in ${TESTDIR}/1
args: mydir"
dotest modules5-33 "${testcvs} -q update" ''
echo "change" >>mydir/a
dotest modules5-34 "${testcvs} -q ci -m." \
"Checking in mydir/a;
${CVSROOT_DIRNAME}/first-dir/subdir/a,v <-- a
new revision: 1\.3; previous revision: 1\.2
done"
fi
dotest modules5-35 "echo yes | ${testcvs} release -d mydir" \
"You have \[0\] altered files in this repository\.
Are you sure you want to release (and delete) directory .mydir.: "
if $remote; then
dotest modules5-36 "${testcvs} -q rtag -Dnow MYTAG2 realmodule" \
"tag script invoked in ${TMPDIR}/cvs-serv[0-9a-z]*
args: realmodule MYTAG2"
dotest modules5-37 "${testcvs} -q export -r MYTAG2 -d mydir realmodule" \
"U mydir/a
export script invoked in ${TMPDIR}/cvs-serv[0-9a-z]*
args: mydir"
else
dotest modules5-36 "${testcvs} -q rtag -Dnow MYTAG2 realmodule" \
"tag script invoked in ${TESTDIR}/1
args: realmodule MYTAG2"
dotest modules5-37 "${testcvs} -q export -r MYTAG2 -d mydir realmodule" \
"U mydir/a
export script invoked in ${TESTDIR}/1
args: mydir"
fi
rm -r mydir
if $remote; then
dotest modules5-38 "${testcvs} co -d mydir dirmodule/a" \
"U mydir/a
${PROG} checkout: Executing ..${CVSROOT_DIRNAME}/checkout\.sh. .mydir..
checkout script invoked in ${TMPDIR}/cvs-serv[0-9a-z]*
args: mydir"
else
dotest modules5-38 "${testcvs} co -d mydir dirmodule/a" \
"U mydir/a
${PROG} checkout: Executing ..${CVSROOT_DIRNAME}/checkout\.sh. .mydir..
checkout script invoked in ${TESTDIR}/1
args: mydir"
fi
dotest modules5-39 "test -d mydir && test -f mydir/a" ""
dotest_fail modules5-40 "test -d dirmodule || test -f mydir/b" ""
dotest modules5-41 "echo yes | ${testcvs} release -d mydir" \
"You have \[0\] altered files in this repository\.
Are you sure you want to release (and delete) directory .mydir.: "
if $remote; then
dotest modules5-42 "${testcvs} co -d mydir dirmodule/nonexist" \
"${PROG} checkout: warning: new-born mydir/nonexist has disappeared
${PROG} checkout: Executing ..${CVSROOT_DIRNAME}/checkout\.sh. .mydir..
checkout script invoked in ${TMPDIR}/cvs-serv[0-9a-z]*
args: mydir"
else
dotest modules5-42 "${testcvs} co -d mydir dirmodule/nonexist" \
"${PROG} checkout: warning: new-born mydir/nonexist has disappeared
${PROG} checkout: Executing ..${CVSROOT_DIRNAME}/checkout\.sh. .mydir..
checkout script invoked in ${TESTDIR}/1
args: mydir"
fi
dotest_fail modules5-43 "test -f mydir/a || test -f mydir/b" ""
rm -r mydir
if $remote; then
dotest modules5-44 "${testcvs} -q co -d mydir namedmodule" \
"U mydir/a
U mydir/b
checkout script invoked in ${TMPDIR}/cvs-serv[0-9a-z]*
args: mydir"
else
dotest modules5-44 "${testcvs} -q co -d mydir namedmodule" \
"U mydir/a
U mydir/b
checkout script invoked in ${TESTDIR}/1
args: mydir"
fi
dotest modules5-45 "test -f mydir/a && test -f mydir/b" ""
dotest_fail modules5-46 "test -d namedir"
echo add line >>mydir/a
if $remote; then
dotest modules5-47 "${testcvs} -q co -d mydir namedmodule" \
"M mydir/a
checkout script invoked in ${TMPDIR}/cvs-serv[0-9a-z]*
args: mydir"
else
dotest modules5-47 "${testcvs} -q co -d mydir namedmodule" \
"M mydir/a
checkout script invoked in ${TESTDIR}/1
args: mydir"
fi
rm mydir/a
if $remote; then
dotest modules5-48 "${testcvs} -q co -d mydir namedmodule" \
"U mydir/a
checkout script invoked in ${TMPDIR}/cvs-serv[0-9a-z]*
args: mydir"
else
dotest modules5-48 "${testcvs} -q co -d mydir namedmodule" \
"U mydir/a
checkout script invoked in ${TESTDIR}/1
args: mydir"
fi
dotest modules5-49 "echo yes | ${testcvs} release -d mydir" \
"You have \[0\] altered files in this repository\.
Are you sure you want to release (and delete) directory .mydir.: "
cd ..
rm -rf 1 ${CVSROOT_DIRNAME}/first-dir ${CVSROOT_DIRNAME}/*.sh
;;
modules6)
mkdir modules6
cd modules6
dotest module6-setup-1 "${testcvs} -Q co CVSROOT" ""
cd CVSROOT
echo "longmodulename who cares" >modules
echo "badname" >>modules
dotest modules6-setup-2 "${testcvs} -Q ci -mbad-modules" \
"Checking in modules;
${CVSROOT_DIRNAME}/CVSROOT/modules,v <-- modules
new revision: [0-9.]*; previous revision: [0-9.]*
done
${PROG} commit: Rebuilding administrative file database"
cd ..
dotest_fail modules6-1 "${testcvs} -q co badname" \
"${PROG} checkout: warning: NULL value for key .badname. at line 2 of .${CVSROOT_DIRNAME}/CVSROOT/modules.
${PROG} checkout: cannot find module .badname. - ignored" \
"${PROG} server: warning: NULL value for key .badname. at line 2 of .${CVSROOT_DIRNAME}/CVSROOT/modules.
${PROG} server: cannot find module .badname. - ignored
${PROG} \[checkout aborted\]: cannot expand modules"
cd CVSROOT
echo "# empty modules file" >modules
dotest modules6-cleanup-1 "${testcvs} -Q ci -mempty-modules" \
"Checking in modules;
${CVSROOT_DIRNAME}/CVSROOT/modules,v <-- modules
new revision: [0-9.]*; previous revision: [0-9.]*
done
${PROG} commit: Rebuilding administrative file database"
cd ../..
if $keep; then :; else
rm -r modules6
fi
;;
modules7)
mkdir modules7
cd modules7
dotest modules7-1 "$testcvs -Q co -d top ."
cd top
mkdir zero one
dotest modules7-2 "$testcvs -Q add zero one"
cd one
echo 'file1 contents' > file1
dotest modules7-2 "$testcvs -Q add file1"
dotest modules7-3 "$testcvs -Q ci -mnew file1" \
"RCS file: $CVSROOT_DIRNAME/one/file1,v
done
Checking in file1;
$CVSROOT_DIRNAME/one/file1,v <-- file1
initial revision: 1\.1
done"
dotest modules7-4 "$testcvs -Q tag mytag file1"
cd ../CVSROOT
echo 'all -a zero one' > modules
dotest modules7-5 "$testcvs -Q ci -mall-module" \
"Checking in modules;
$CVSROOT_DIRNAME/CVSROOT/modules,v <-- modules
new revision: [0-9.]*; previous revision: [0-9.]*
done
$PROG commit: Rebuilding administrative file database"
cd ../..
mkdir myexport
cd myexport
dotest_fail modules7-6 "$testcvs export -rmytag all" \
"$PROG \[export aborted\]: no such tag mytag"
cd ..
rm -fr myexport
mkdir myexport
cd myexport
echo 'mytag y' > $CVSROOT_DIRNAME/CVSROOT/val-tags
dotest modules7-7 "$testcvs export -rmytag all" \
"$PROG export: Updating zero
$PROG export: Updating one
U one/file1"
dotest modules7-8 'cat one/file1' 'file1 contents'
if $keep; then
echo Keeping $TESTDIR and exiting due to --keep
exit 0
fi
cd ../top/CVSROOT
echo "# empty modules file" >modules
dotest modules7-cleanup-1 "$testcvs -Q ci -mempty-modules" \
"Checking in modules;
$CVSROOT_DIRNAME/CVSROOT/modules,v <-- modules
new revision: [0-9.]*; previous revision: [0-9.]*
done
$PROG commit: Rebuilding administrative file database"
cd ../../..
rm -fr modules7
rm -rf $CVSROOT_DIRNAME/zero $CVSROOT_DIRNAME/one
;;
mkmodules)
mkdir 1; cd 1
dotest mkmodules-temp-file-removal-1 "${testcvs} -Q co CVSROOT" ''
cd CVSROOT
echo no-such-file >> checkoutlist
dotest mkmodules-temp-file-removal-2 "${testcvs} -Q ci -m. checkoutlist" \
"Checking in checkoutlist;
$CVSROOT_DIRNAME/CVSROOT/checkoutlist,v <-- checkoutlist
new revision: 1\.2; previous revision: 1\.1
done
${PROG} commit: Rebuilding administrative file database"
dotest mkmodules-temp-file-removal-3 "echo $CVSROOT_DIRNAME/CVSROOT/.#[0-9]*" \
"$CVSROOT_DIRNAME/CVSROOT/\.#\[0-9\]\*"
echo "no-such-file Failed to update no-such-file." >checkoutlist
dotest mkmodules-error-message-1 "${testcvs} -Q ci -m. checkoutlist" \
"Checking in checkoutlist;
$CVSROOT_DIRNAME/CVSROOT/checkoutlist,v <-- checkoutlist
new revision: 1\.3; previous revision: 1\.2
done
${PROG} commit: Rebuilding administrative file database
${PROG} commit: Failed to update no-such-file\."
echo "no-such-file Failed to update %s %lx times because %s happened %d times." >checkoutlist
dotest mkmodules-error-message-2 "${testcvs} -Q ci -m. checkoutlist" \
"Checking in checkoutlist;
$CVSROOT_DIRNAME/CVSROOT/checkoutlist,v <-- checkoutlist
new revision: 1\.4; previous revision: 1\.3
done
${PROG} commit: Rebuilding administrative file database
${PROG} commit: Failed to update %s %lx times because %s happened %d times\."
dotest mkmodules-cleanup-1 "${testcvs} -Q up -pr1.1 checkoutlist >checkoutlist"
dotest mkmodules-cleanup-2 "${testcvs} -Q ci -m. checkoutlist" \
"Checking in checkoutlist;
$CVSROOT_DIRNAME/CVSROOT/checkoutlist,v <-- checkoutlist
new revision: 1\.5; previous revision: 1\.4
done
${PROG} commit: Rebuilding administrative file database"
cd ../..
rm -rf 1
;;
co-d)
module=co-d
mkdir $module; cd $module
mkdir top; cd top
dotest co-d-init-1 "$testcvs -Q co -l ."
mkdir $module
dotest co-d-init-2 "$testcvs -Q add $module"
cd $module
echo content >file1
echo different content >file2
dotest co-d-init-3 "$testcvs -Q add file1 file2"
dotest co-d-init-4 "$testcvs -Q ci -madd-em" \
"RCS file: $CVSROOT_DIRNAME/co-d/file1,v
done
Checking in file1;
$CVSROOT_DIRNAME/co-d/file1,v <-- file1
initial revision: 1\.1
done
RCS file: $CVSROOT_DIRNAME/co-d/file2,v
done
Checking in file2;
$CVSROOT_DIRNAME/co-d/file2,v <-- file2
initial revision: 1\.1
done"
cd ../..
mkdir 2; cd 2
dotest co-d-1 "$testcvs -q co -d dir $module" \
"U dir/file1
U dir/file2"
dotest co-d-1.2 "cat dir/CVS/Repository" "$module"
dotest_fail co-d-2 "$testcvs -q co -d dir2/sdir $module" \
"$PROG \[checkout aborted\]: could not change directory to requested checkout directory \`dir2': No such file or directory"
mkdir dir3
dotest co-d-3 "$testcvs -q co -d dir3 $module" \
"U dir3/file1
U dir3/file2"
dotest co-d-3.2 "cat dir3/CVS/Repository" "$module"
if $remote; then
mkdir dir4
dotest_fail co-d-4r "$testcvs -q co -d dir4/sdir $module" \
"$PROG \[checkout aborted\]: could not change directory to requested checkout directory \`dir4': No such file or directory"
mkdir dir5
mkdir dir5/sdir
dotest_fail co-d-5r "$testcvs -q co -d dir5/sdir $module" \
"$PROG \[checkout aborted\]: could not change directory to requested checkout directory \`dir5': No such file or directory"
else
mkdir dir4
dotest co-d-4 "$testcvs -q co -d dir4/sdir $module" \
"U dir4/sdir/file1
U dir4/sdir/file2"
dotest_fail co-d-4.2 "test -d dir4/CVS"
dotest co-d-4.3 "cat dir4/sdir/CVS/Repository" "$module"
mkdir dir5
mkdir dir5/sdir
dotest co-d-5 "$testcvs -q co -d dir5/sdir $module" \
"U dir5/sdir/file1
U dir5/sdir/file2"
dotest_fail co-d-5.2 "test -d dir5/CVS"
dotest co-d-5.3 "cat dir5/sdir/CVS/Repository" "$module"
fi
if $keep; then
echo Keeping ${TESTDIR} and exiting due to --keep
exit 0
fi
cd ../..
rm -rf $CVSROOT_DIRNAME/$module
rm -r $module
;;
cvsadm)
REP=${CVSROOT}
mkdir 1; cd 1
dotest cvsadm-setup-1 "${testcvs} -q co CVSROOT/config" \
"U CVSROOT/config"
cd CVSROOT
echo "TopLevelAdmin=yes" >config
dotest cvsadm-setup-2 "${testcvs} -q ci -m yes-top-level" \
"Checking in config;
${CVSROOT_DIRNAME}/CVSROOT/config,v <-- config
new revision: 1\.[0-9]*; previous revision: 1\.[0-9]*
done
${PROG} commit: Rebuilding administrative file database"
cd ../..
rm -r 1
mkdir 1; cd 1
dotest cvsadm-1 "${testcvs} co CVSROOT/modules" \
"U CVSROOT/modules"
dotest cvsadm-1a "cat CVS/Root" ${REP}
dotest cvsadm-1b "cat CVS/Repository" "\."
dotest cvsadm-1c "cat CVSROOT/CVS/Root" ${REP}
dotest cvsadm-1d "cat CVSROOT/CVS/Repository" "CVSROOT"
echo "# Module defs for cvsadm tests" > CVSROOT/modules
echo "1mod mod1" >> CVSROOT/modules
echo "1mod-2 mod1-2" >> CVSROOT/modules
echo "2mod mod2/sub2" >> CVSROOT/modules
echo "2mod-2 mod2-2/sub2-2" >> CVSROOT/modules
echo "1d1mod -d dir1d1 mod1" >> CVSROOT/modules
echo "1d1mod-2 -d dir1d1-2 mod1-2" >> CVSROOT/modules
echo "1d2mod -d dir1d2 mod2/sub2" >> CVSROOT/modules
echo "1d2mod-2 -d dir1d2-2 mod2-2/sub2-2" >> CVSROOT/modules
echo "2d1mod -d dir2d1/sub2d1 mod1" >> CVSROOT/modules
echo "2d1mod-2 -d dir2d1-2/sub2d1-2 mod1-2" >> CVSROOT/modules
echo "2d2mod -d dir2d2/sub2d2 mod2/sub2" >> CVSROOT/modules
echo "2d2mod-2 -d dir2d2-2/sub2d2-2 mod2-2/sub2-2" >> CVSROOT/modules
dotest cvsadm-1e "${testcvs} ci -m add-modules" \
"${PROG} [a-z]*: Examining .
${PROG} [a-z]*: Examining CVSROOT
Checking in CVSROOT/modules;
${CVSROOT_DIRNAME}/CVSROOT/modules,v <-- modules
new revision: 1\.[0-9]*; previous revision: 1\.[0-9]*
done
${PROG} commit: Rebuilding administrative file database" \
"${PROG} commit: Examining .
${PROG} commit: Examining CVSROOT"
rm -rf CVS CVSROOT;
dotest cvsadm-2 "${testcvs} -q co -l ." ''
mkdir mod1
mkdir mod1-2
mkdir mod2
mkdir mod2/sub2
mkdir mod2-2
mkdir mod2-2/sub2-2
dotest cvsadm-2a "${testcvs} add mod1 mod1-2 mod2 mod2/sub2 mod2-2 mod2-2/sub2-2" \
"Directory ${CVSROOT_DIRNAME}/mod1 added to the repository
Directory ${CVSROOT_DIRNAME}/mod1-2 added to the repository
Directory ${CVSROOT_DIRNAME}/mod2 added to the repository
Directory ${CVSROOT_DIRNAME}/mod2/sub2 added to the repository
Directory ${CVSROOT_DIRNAME}/mod2-2 added to the repository
Directory ${CVSROOT_DIRNAME}/mod2-2/sub2-2 added to the repository"
echo "file1" > mod1/file1
echo "file1-2" > mod1-2/file1-2
echo "file2" > mod2/sub2/file2
echo "file2-2" > mod2-2/sub2-2/file2-2
dotest cvsadm-2aa "${testcvs} add mod1/file1 mod1-2/file1-2 mod2/sub2/file2 mod2-2/sub2-2/file2-2" \
"${PROG} add: scheduling file .mod1/file1. for addition
${PROG} add: scheduling file .mod1-2/file1-2. for addition
${PROG} add: scheduling file .mod2/sub2/file2. for addition
${PROG} add: scheduling file .mod2-2/sub2-2/file2-2. for addition
${PROG} add: use .${PROG} commit. to add these files permanently"
dotest cvsadm-2b "${testcvs} ci -m yup mod1 mod1-2 mod2 mod2-2" \
"${PROG} [a-z]*: Examining mod1
${PROG} [a-z]*: Examining mod1-2
${PROG} [a-z]*: Examining mod2
${PROG} [a-z]*: Examining mod2/sub2
${PROG} [a-z]*: Examining mod2-2
${PROG} [a-z]*: Examining mod2-2/sub2-2
RCS file: ${CVSROOT_DIRNAME}/mod1/file1,v
done
Checking in mod1/file1;
${CVSROOT_DIRNAME}/mod1/file1,v <-- file1
initial revision: 1.1
done
RCS file: ${CVSROOT_DIRNAME}/mod1-2/file1-2,v
done
Checking in mod1-2/file1-2;
${CVSROOT_DIRNAME}/mod1-2/file1-2,v <-- file1-2
initial revision: 1.1
done
RCS file: ${CVSROOT_DIRNAME}/mod2/sub2/file2,v
done
Checking in mod2/sub2/file2;
${CVSROOT_DIRNAME}/mod2/sub2/file2,v <-- file2
initial revision: 1.1
done
RCS file: ${CVSROOT_DIRNAME}/mod2-2/sub2-2/file2-2,v
done
Checking in mod2-2/sub2-2/file2-2;
${CVSROOT_DIRNAME}/mod2-2/sub2-2/file2-2,v <-- file2-2
initial revision: 1.1
done"
rm -rf CVS mod1 mod1-2 mod2 mod2-2
dotest cvsadm-3 "${testcvs} co 1mod" \
"${PROG} checkout: Updating 1mod
U 1mod/file1"
dotest cvsadm-3b "cat CVS/Repository" "\."
dotest cvsadm-3d "cat 1mod/CVS/Repository" "mod1"
rm -rf CVS 1mod
dotest cvsadm-4 "${testcvs} co 2mod" \
"${PROG} checkout: Updating 2mod
U 2mod/file2"
dotest cvsadm-4b "cat CVS/Repository" "\."
dotest cvsadm-4d "cat 2mod/CVS/Repository" "mod2/sub2"
rm -rf CVS 2mod
dotest cvsadm-5 "${testcvs} co 1d1mod" \
"${PROG} checkout: Updating dir1d1
U dir1d1/file1"
dotest cvsadm-5b "cat CVS/Repository" "\."
dotest cvsadm-5d "cat dir1d1/CVS/Repository" "mod1"
rm -rf CVS dir1d1
dotest cvsadm-6 "${testcvs} co 1d2mod" \
"${PROG} checkout: Updating dir1d2
U dir1d2/file2"
dotest cvsadm-6b "cat CVS/Repository" "\."
dotest cvsadm-6d "cat dir1d2/CVS/Repository" "mod2/sub2"
rm -rf CVS dir1d2
dotest cvsadm-7 "${testcvs} co 2d1mod" \
"${PROG} checkout: Updating dir2d1/sub2d1
U dir2d1/sub2d1/file1"
dotest cvsadm-7b "cat CVS/Repository" "\."
dotest cvsadm-7d "cat dir2d1/CVS/Repository" "\."
dotest cvsadm-7f "cat dir2d1/sub2d1/CVS/Repository" "mod1"
rm -rf CVS dir2d1
dotest cvsadm-8 "${testcvs} co 2d2mod" \
"${PROG} checkout: Updating dir2d2/sub2d2
U dir2d2/sub2d2/file2"
dotest cvsadm-8b "cat CVS/Repository" "\."
dotest cvsadm-8d "cat dir2d2/CVS/Repository" "mod2"
dotest cvsadm-8f "cat dir2d2/sub2d2/CVS/Repository" "mod2/sub2"
rm -rf CVS dir2d2
dotest cvsadm-9 "${testcvs} co 1mod 1mod-2" \
"${PROG} checkout: Updating 1mod
U 1mod/file1
${PROG} checkout: Updating 1mod-2
U 1mod-2/file1-2"
dotest cvsadm-9b "cat CVS/Repository" "\."
dotest cvsadm-9d "cat 1mod/CVS/Repository" "mod1"
dotest cvsadm-9f "cat 1mod-2/CVS/Repository" "mod1-2"
rm -rf CVS 1mod 1mod-2
dotest cvsadm-10 "${testcvs} co 1mod 2mod" \
"${PROG} checkout: Updating 1mod
U 1mod/file1
${PROG} checkout: Updating 2mod
U 2mod/file2"
dotest cvsadm-10b "cat CVS/Repository" "\."
dotest cvsadm-10d "cat 1mod/CVS/Repository" "mod1"
dotest cvsadm-10f "cat 2mod/CVS/Repository" "mod2/sub2"
rm -rf CVS 1mod 2mod
dotest cvsadm-11 "${testcvs} co 1mod 1d1mod" \
"${PROG} checkout: Updating 1mod
U 1mod/file1
${PROG} checkout: Updating dir1d1
U dir1d1/file1"
dotest cvsadm-11b "cat CVS/Repository" "\."
dotest cvsadm-11d "cat 1mod/CVS/Repository" "mod1"
dotest cvsadm-11f "cat dir1d1/CVS/Repository" "mod1"
rm -rf CVS 1mod dir1d1
dotest cvsadm-12 "${testcvs} co 1mod 1d2mod" \
"${PROG} checkout: Updating 1mod
U 1mod/file1
${PROG} checkout: Updating dir1d2
U dir1d2/file2"
dotest cvsadm-12b "cat CVS/Repository" "\."
dotest cvsadm-12d "cat 1mod/CVS/Repository" "mod1"
dotest cvsadm-12f "cat dir1d2/CVS/Repository" "mod2/sub2"
rm -rf CVS 1mod dir1d2
dotest cvsadm-13 "${testcvs} co 1mod 2d1mod" \
"${PROG} checkout: Updating 1mod
U 1mod/file1
${PROG} checkout: Updating dir2d1/sub2d1
U dir2d1/sub2d1/file1"
dotest cvsadm-13b "cat CVS/Repository" "\."
dotest cvsadm-13d "cat 1mod/CVS/Repository" "mod1"
dotest cvsadm-13f "cat dir2d1/CVS/Repository" "\."
dotest cvsadm-13h "cat dir2d1/sub2d1/CVS/Repository" "mod1"
rm -rf CVS 1mod dir2d1
dotest cvsadm-14 "${testcvs} co 1mod 2d2mod" \
"${PROG} checkout: Updating 1mod
U 1mod/file1
${PROG} checkout: Updating dir2d2/sub2d2
U dir2d2/sub2d2/file2"
dotest cvsadm-14b "cat CVS/Repository" "\."
dotest cvsadm-14d "cat 1mod/CVS/Repository" "mod1"
dotest cvsadm-14f "cat dir2d2/CVS/Repository" "mod2"
dotest cvsadm-14h "cat dir2d2/sub2d2/CVS/Repository" "mod2/sub2"
rm -rf CVS 1mod dir2d2
dotest cvsadm-15 "${testcvs} co 2mod 2mod-2" \
"${PROG} checkout: Updating 2mod
U 2mod/file2
${PROG} checkout: Updating 2mod-2
U 2mod-2/file2-2"
dotest cvsadm-15b "cat CVS/Repository" "\."
dotest cvsadm-15d "cat 2mod/CVS/Repository" "mod2/sub2"
dotest cvsadm-15f "cat 2mod-2/CVS/Repository" "mod2-2/sub2-2"
rm -rf CVS 2mod 2mod-2
dotest cvsadm-16 "${testcvs} co 2mod 1d1mod" \
"${PROG} checkout: Updating 2mod
U 2mod/file2
${PROG} checkout: Updating dir1d1
U dir1d1/file1"
dotest cvsadm-16b "cat CVS/Repository" "\."
dotest cvsadm-16d "cat 2mod/CVS/Repository" "mod2/sub2"
dotest cvsadm-16f "cat dir1d1/CVS/Repository" "mod1"
rm -rf CVS 2mod dir1d1
dotest cvsadm-17 "${testcvs} co 2mod 1d2mod" \
"${PROG} checkout: Updating 2mod
U 2mod/file2
${PROG} checkout: Updating dir1d2
U dir1d2/file2"
dotest cvsadm-17b "cat CVS/Repository" "\."
dotest cvsadm-17d "cat 2mod/CVS/Repository" "mod2/sub2"
dotest cvsadm-17f "cat dir1d2/CVS/Repository" "mod2/sub2"
rm -rf CVS 2mod dir1d2
dotest cvsadm-18 "${testcvs} co 2mod 2d1mod" \
"${PROG} checkout: Updating 2mod
U 2mod/file2
${PROG} checkout: Updating dir2d1/sub2d1
U dir2d1/sub2d1/file1"
dotest cvsadm-18b "cat CVS/Repository" "\."
dotest cvsadm-18d "cat 2mod/CVS/Repository" "mod2/sub2"
dotest cvsadm-18f "cat dir2d1/CVS/Repository" "\."
dotest cvsadm-18h "cat dir2d1/sub2d1/CVS/Repository" "mod1"
rm -rf CVS 2mod dir2d1
dotest cvsadm-19 "${testcvs} co 2mod 2d2mod" \
"${PROG} checkout: Updating 2mod
U 2mod/file2
${PROG} checkout: Updating dir2d2/sub2d2
U dir2d2/sub2d2/file2"
dotest cvsadm-19b "cat CVS/Repository" "\."
dotest cvsadm-19d "cat 2mod/CVS/Repository" "mod2/sub2"
dotest cvsadm-19f "cat dir2d2/CVS/Repository" "mod2"
dotest cvsadm-19h "cat dir2d2/sub2d2/CVS/Repository" "mod2/sub2"
rm -rf CVS 2mod dir2d2
dotest cvsadm-20 "${testcvs} co 1d1mod 1d1mod-2" \
"${PROG} checkout: Updating dir1d1
U dir1d1/file1
${PROG} checkout: Updating dir1d1-2
U dir1d1-2/file1-2"
dotest cvsadm-20b "cat CVS/Repository" "\."
dotest cvsadm-20d "cat dir1d1/CVS/Repository" "mod1"
dotest cvsadm-20f "cat dir1d1-2/CVS/Repository" "mod1-2"
rm -rf CVS dir1d1 dir1d1-2
dotest cvsadm-21 "${testcvs} co 1d1mod 1d2mod" \
"${PROG} checkout: Updating dir1d1
U dir1d1/file1
${PROG} checkout: Updating dir1d2
U dir1d2/file2"
dotest cvsadm-21b "cat CVS/Repository" "\."
dotest cvsadm-21d "cat dir1d1/CVS/Repository" "mod1"
dotest cvsadm-21f "cat dir1d2/CVS/Repository" "mod2/sub2"
rm -rf CVS dir1d1 dir1d2
dotest cvsadm-22 "${testcvs} co 1d1mod 2d1mod" \
"${PROG} checkout: Updating dir1d1
U dir1d1/file1
${PROG} checkout: Updating dir2d1/sub2d1
U dir2d1/sub2d1/file1"
dotest cvsadm-22b "cat CVS/Repository" "\."
dotest cvsadm-22d "cat dir1d1/CVS/Repository" "mod1"
dotest cvsadm-22f "cat dir2d1/CVS/Repository" "\."
dotest cvsadm-22h "cat dir2d1/sub2d1/CVS/Repository" "mod1"
rm -rf CVS dir1d1 dir2d1
dotest cvsadm-23 "${testcvs} co 1d1mod 2d2mod" \
"${PROG} checkout: Updating dir1d1
U dir1d1/file1
${PROG} checkout: Updating dir2d2/sub2d2
U dir2d2/sub2d2/file2"
dotest cvsadm-23b "cat CVS/Repository" "\."
dotest cvsadm-23d "cat dir1d1/CVS/Repository" "mod1"
dotest cvsadm-23f "cat dir2d2/CVS/Repository" "mod2"
dotest cvsadm-23h "cat dir2d2/sub2d2/CVS/Repository" "mod2/sub2"
rm -rf CVS dir1d1 dir2d2
dotest cvsadm-24 "${testcvs} co 1d2mod 1d2mod-2" \
"${PROG} checkout: Updating dir1d2
U dir1d2/file2
${PROG} checkout: Updating dir1d2-2
U dir1d2-2/file2-2"
dotest cvsadm-24b "cat CVS/Repository" "\."
dotest cvsadm-24d "cat dir1d2/CVS/Repository" "mod2/sub2"
dotest cvsadm-24f "cat dir1d2-2/CVS/Repository" "mod2-2/sub2-2"
rm -rf CVS dir1d2 dir1d2-2
dotest cvsadm-25 "${testcvs} co 1d2mod 2d1mod" \
"${PROG} checkout: Updating dir1d2
U dir1d2/file2
${PROG} checkout: Updating dir2d1/sub2d1
U dir2d1/sub2d1/file1"
dotest cvsadm-25b "cat CVS/Repository" "\."
dotest cvsadm-25d "cat dir1d2/CVS/Repository" "mod2/sub2"
dotest cvsadm-25f "cat dir2d1/CVS/Repository" "\."
dotest cvsadm-25h "cat dir2d1/sub2d1/CVS/Repository" "mod1"
rm -rf CVS dir1d2 dir2d1
dotest cvsadm-26 "${testcvs} co 1d2mod 2d2mod" \
"${PROG} checkout: Updating dir1d2
U dir1d2/file2
${PROG} checkout: Updating dir2d2/sub2d2
U dir2d2/sub2d2/file2"
dotest cvsadm-26b "cat CVS/Repository" "\."
dotest cvsadm-26d "cat dir1d2/CVS/Repository" "mod2/sub2"
dotest cvsadm-26f "cat dir2d2/CVS/Repository" "mod2"
dotest cvsadm-26h "cat dir2d2/sub2d2/CVS/Repository" "mod2/sub2"
rm -rf CVS dir1d2 dir2d2
dotest cvsadm-27 "${testcvs} co 2d1mod 2d1mod-2" \
"${PROG} checkout: Updating dir2d1/sub2d1
U dir2d1/sub2d1/file1
${PROG} checkout: Updating dir2d1-2/sub2d1-2
U dir2d1-2/sub2d1-2/file1-2"
dotest cvsadm-27b "cat CVS/Repository" "\."
dotest cvsadm-27d "cat dir2d1/CVS/Repository" "\."
dotest cvsadm-27f "cat dir2d1/sub2d1/CVS/Repository" "mod1"
dotest cvsadm-27h "cat dir2d1-2/CVS/Repository" "\."
dotest cvsadm-27j "cat dir2d1-2/sub2d1-2/CVS/Repository" "mod1-2"
rm -rf CVS dir2d1 dir2d1-2
dotest cvsadm-28 "${testcvs} co 2d1mod 2d2mod" \
"${PROG} checkout: Updating dir2d1/sub2d1
U dir2d1/sub2d1/file1
${PROG} checkout: Updating dir2d2/sub2d2
U dir2d2/sub2d2/file2"
dotest cvsadm-28b "cat CVS/Repository" "\."
dotest cvsadm-28d "cat dir2d1/CVS/Repository" "\."
dotest cvsadm-28f "cat dir2d1/sub2d1/CVS/Repository" "mod1"
dotest cvsadm-28h "cat dir2d2/CVS/Repository" "mod2"
dotest cvsadm-28j "cat dir2d2/sub2d2/CVS/Repository" "mod2/sub2"
rm -rf CVS dir2d1 dir2d2
dotest cvsadm-29 "${testcvs} co 2d2mod 2d2mod-2" \
"${PROG} checkout: Updating dir2d2/sub2d2
U dir2d2/sub2d2/file2
${PROG} checkout: Updating dir2d2-2/sub2d2-2
U dir2d2-2/sub2d2-2/file2-2"
dotest cvsadm-29b "cat CVS/Repository" "\."
dotest cvsadm-29d "cat dir2d2/CVS/Repository" "mod2"
dotest cvsadm-29f "cat dir2d2/sub2d2/CVS/Repository" "mod2/sub2"
dotest cvsadm-29h "cat dir2d2-2/CVS/Repository" "mod2-2"
dotest cvsadm-29j "cat dir2d2-2/sub2d2-2/CVS/Repository" \
"mod2-2/sub2-2"
rm -rf CVS dir2d2 dir2d2-2
dotest cvsadm-1d3 "${testcvs} co -d dir 1mod" \
"${PROG} checkout: Updating dir
U dir/file1"
dotest cvsadm-1d3b "cat CVS/Repository" "\."
dotest cvsadm-1d3d "cat dir/CVS/Repository" "mod1"
rm -rf CVS dir
dotest cvsadm-1d4 "${testcvs} co -d dir 2mod" \
"${PROG} checkout: Updating dir
U dir/file2"
dotest cvsadm-1d4b "cat CVS/Repository" "\."
dotest cvsadm-1d4d "cat dir/CVS/Repository" "mod2/sub2"
rm -rf CVS dir
dotest cvsadm-1d5 "${testcvs} co -d dir 1d1mod" \
"${PROG} checkout: Updating dir
U dir/file1"
dotest cvsadm-1d5b "cat CVS/Repository" "\."
dotest cvsadm-1d5d "cat dir/CVS/Repository" "mod1"
rm -rf CVS dir
dotest cvsadm-1d6 "${testcvs} co -d dir 1d2mod" \
"${PROG} checkout: Updating dir
U dir/file2"
dotest cvsadm-1d6b "cat CVS/Repository" "\."
dotest cvsadm-1d6d "cat dir/CVS/Repository" "mod2/sub2"
rm -rf CVS dir
dotest cvsadm-1d7 "${testcvs} co -d dir 2d1mod" \
"${PROG} checkout: Updating dir
U dir/file1"
dotest cvsadm-1d7b "cat CVS/Repository" "\."
dotest cvsadm-1d7d "cat dir/CVS/Repository" "mod1"
rm -rf CVS dir
dotest cvsadm-1d8 "${testcvs} co -d dir 2d2mod" \
"${PROG} checkout: Updating dir
U dir/file2"
dotest cvsadm-1d8b "cat CVS/Repository" "\."
dotest cvsadm-1d8d "cat dir/CVS/Repository" "mod2/sub2"
rm -rf CVS dir
dotest cvsadm-1d9 "${testcvs} co -d dir 1mod 1mod-2" \
"${PROG} checkout: Updating dir/1mod
U dir/1mod/file1
${PROG} checkout: Updating dir/1mod-2
U dir/1mod-2/file1-2"
dotest cvsadm-1d9b "cat CVS/Repository" "\."
dotest cvsadm-1d9d "cat dir/CVS/Repository" "\."
dotest cvsadm-1d9f "cat dir/1mod/CVS/Repository" "mod1"
dotest cvsadm-1d9h "cat dir/1mod-2/CVS/Repository" "mod1-2"
rm -rf CVS dir
dotest cvsadm-1d10 "${testcvs} co -d dir 1mod 2mod" \
"${PROG} checkout: Updating dir/1mod
U dir/1mod/file1
${PROG} checkout: Updating dir/2mod
U dir/2mod/file2"
dotest cvsadm-1d10b "cat CVS/Repository" "\."
dotest cvsadm-1d10d "cat dir/CVS/Repository" "\."
dotest cvsadm-1d10f "cat dir/1mod/CVS/Repository" "mod1"
dotest cvsadm-1d10h "cat dir/2mod/CVS/Repository" "mod2/sub2"
rm -rf CVS dir
dotest cvsadm-1d11 "${testcvs} co -d dir 1mod 1d1mod" \
"${PROG} checkout: Updating dir/1mod
U dir/1mod/file1
${PROG} checkout: Updating dir/dir1d1
U dir/dir1d1/file1"
dotest cvsadm-1d11b "cat CVS/Repository" "\."
dotest cvsadm-1d11d "cat dir/CVS/Repository" "\."
dotest cvsadm-1d11f "cat dir/1mod/CVS/Repository" "mod1"
dotest cvsadm-1d11h "cat dir/dir1d1/CVS/Repository" "mod1"
rm -rf CVS dir
dotest cvsadm-1d12 "${testcvs} co -d dir 1mod 1d2mod" \
"${PROG} checkout: Updating dir/1mod
U dir/1mod/file1
${PROG} checkout: Updating dir/dir1d2
U dir/dir1d2/file2"
dotest cvsadm-1d12b "cat CVS/Repository" "\."
dotest cvsadm-1d12d "cat dir/CVS/Repository" "\."
dotest cvsadm-1d12f "cat dir/1mod/CVS/Repository" "mod1"
dotest cvsadm-1d12h "cat dir/dir1d2/CVS/Repository" "mod2/sub2"
rm -rf CVS dir
dotest cvsadm-1d13 "${testcvs} co -d dir 1mod 2d1mod" \
"${PROG} checkout: Updating dir/1mod
U dir/1mod/file1
${PROG} checkout: Updating dir/dir2d1/sub2d1
U dir/dir2d1/sub2d1/file1"
dotest cvsadm-1d13b "cat CVS/Repository" "\."
dotest cvsadm-1d13d "cat dir/CVS/Repository" "\."
dotest cvsadm-1d13f "cat dir/1mod/CVS/Repository" "mod1"
dotest cvsadm-1d13h "cat dir/dir2d1/CVS/Repository" "\."
dotest cvsadm-1d13j "cat dir/dir2d1/sub2d1/CVS/Repository" "mod1"
rm -rf CVS dir
dotest cvsadm-1d14 "${testcvs} co -d dir 1mod 2d2mod" \
"${PROG} checkout: Updating dir/1mod
U dir/1mod/file1
${PROG} checkout: Updating dir/dir2d2/sub2d2
U dir/dir2d2/sub2d2/file2"
dotest cvsadm-1d14b "cat CVS/Repository" "\."
dotest cvsadm-1d14d "cat dir/CVS/Repository" "\."
dotest cvsadm-1d14f "cat dir/1mod/CVS/Repository" "mod1"
dotest cvsadm-1d14h "cat dir/dir2d2/CVS/Repository" "mod2"
dotest cvsadm-1d14j "cat dir/dir2d2/sub2d2/CVS/Repository" "mod2/sub2"
rm -rf CVS dir
dotest cvsadm-1d15 "${testcvs} co -d dir 2mod 2mod-2" \
"${PROG} checkout: Updating dir/2mod
U dir/2mod/file2
${PROG} checkout: Updating dir/2mod-2
U dir/2mod-2/file2-2"
dotest cvsadm-1d15b "cat CVS/Repository" "\."
dotest cvsadm-1d15d "cat dir/CVS/Repository" "mod2"
dotest cvsadm-1d15f "cat dir/2mod/CVS/Repository" "mod2/sub2"
dotest cvsadm-1d15h "cat dir/2mod-2/CVS/Repository" "mod2-2/sub2-2"
rm -rf CVS dir
dotest cvsadm-1d16 "${testcvs} co -d dir 2mod 1d1mod" \
"${PROG} checkout: Updating dir/2mod
U dir/2mod/file2
${PROG} checkout: Updating dir/dir1d1
U dir/dir1d1/file1"
dotest cvsadm-1d16b "cat CVS/Repository" "\."
dotest cvsadm-1d16d "cat dir/CVS/Repository" "mod2"
dotest cvsadm-1d16f "cat dir/2mod/CVS/Repository" "mod2/sub2"
dotest cvsadm-1d16h "cat dir/dir1d1/CVS/Repository" "mod1"
rm -rf CVS dir
dotest cvsadm-1d17 "${testcvs} co -d dir 2mod 1d2mod" \
"${PROG} checkout: Updating dir/2mod
U dir/2mod/file2
${PROG} checkout: Updating dir/dir1d2
U dir/dir1d2/file2"
dotest cvsadm-1d17b "cat CVS/Repository" "\."
dotest cvsadm-1d17d "cat dir/CVS/Repository" "mod2"
dotest cvsadm-1d17f "cat dir/2mod/CVS/Repository" "mod2/sub2"
dotest cvsadm-1d17h "cat dir/dir1d2/CVS/Repository" "mod2/sub2"
rm -rf CVS dir
dotest cvsadm-1d18 "${testcvs} co -d dir 2mod 2d1mod" \
"${PROG} checkout: Updating dir/2mod
U dir/2mod/file2
${PROG} checkout: Updating dir/dir2d1/sub2d1
U dir/dir2d1/sub2d1/file1"
dotest cvsadm-1d18b "cat CVS/Repository" "\."
dotest cvsadm-1d18d "cat dir/CVS/Repository" "mod2"
dotest cvsadm-1d18f "cat dir/2mod/CVS/Repository" "mod2/sub2"
dotest cvsadm-1d18h "cat dir/dir2d1/CVS/Repository" "\."
dotest cvsadm-1d18j "cat dir/dir2d1/sub2d1/CVS/Repository" "mod1"
rm -rf CVS dir
dotest cvsadm-1d19 "${testcvs} co -d dir 2mod 2d2mod" \
"${PROG} checkout: Updating dir/2mod
U dir/2mod/file2
${PROG} checkout: Updating dir/dir2d2/sub2d2
U dir/dir2d2/sub2d2/file2"
dotest cvsadm-1d19b "cat CVS/Repository" "\."
dotest cvsadm-1d19d "cat dir/CVS/Repository" "mod2"
dotest cvsadm-1d19f "cat dir/2mod/CVS/Repository" "mod2/sub2"
dotest cvsadm-1d19h "cat dir/dir2d2/CVS/Repository" "mod2"
dotest cvsadm-1d19j "cat dir/dir2d2/sub2d2/CVS/Repository" "mod2/sub2"
rm -rf CVS dir
dotest cvsadm-1d20 "${testcvs} co -d dir 1d1mod 1d1mod-2" \
"${PROG} checkout: Updating dir/dir1d1
U dir/dir1d1/file1
${PROG} checkout: Updating dir/dir1d1-2
U dir/dir1d1-2/file1-2"
dotest cvsadm-1d20b "cat CVS/Repository" "\."
dotest cvsadm-1d20d "cat dir/CVS/Repository" "\."
dotest cvsadm-1d20f "cat dir/dir1d1/CVS/Repository" "mod1"
dotest cvsadm-1d20h "cat dir/dir1d1-2/CVS/Repository" "mod1-2"
rm -rf CVS dir
dotest cvsadm-1d21 "${testcvs} co -d dir 1d1mod 1d2mod" \
"${PROG} checkout: Updating dir/dir1d1
U dir/dir1d1/file1
${PROG} checkout: Updating dir/dir1d2
U dir/dir1d2/file2"
dotest cvsadm-1d21b "cat CVS/Repository" "\."
dotest cvsadm-1d21d "cat dir/CVS/Repository" "\."
dotest cvsadm-1d21f "cat dir/dir1d1/CVS/Repository" "mod1"
dotest cvsadm-1d21h "cat dir/dir1d2/CVS/Repository" "mod2/sub2"
rm -rf CVS dir
dotest cvsadm-1d22 "${testcvs} co -d dir 1d1mod 2d1mod" \
"${PROG} checkout: Updating dir/dir1d1
U dir/dir1d1/file1
${PROG} checkout: Updating dir/dir2d1/sub2d1
U dir/dir2d1/sub2d1/file1"
dotest cvsadm-1d22b "cat CVS/Repository" "\."
dotest cvsadm-1d22d "cat dir/CVS/Repository" "\."
dotest cvsadm-1d22f "cat dir/dir1d1/CVS/Repository" "mod1"
dotest cvsadm-1d22h "cat dir/dir2d1/CVS/Repository" "\."
dotest cvsadm-1d22j "cat dir/dir2d1/sub2d1/CVS/Repository" "mod1"
rm -rf CVS dir
dotest cvsadm-1d23 "${testcvs} co -d dir 1d1mod 2d2mod" \
"${PROG} checkout: Updating dir/dir1d1
U dir/dir1d1/file1
${PROG} checkout: Updating dir/dir2d2/sub2d2
U dir/dir2d2/sub2d2/file2"
dotest cvsadm-1d23b "cat CVS/Repository" "\."
dotest cvsadm-1d23d "cat dir/CVS/Repository" "\."
dotest cvsadm-1d23f "cat dir/dir1d1/CVS/Repository" "mod1"
dotest cvsadm-1d23h "cat dir/dir2d2/CVS/Repository" "mod2"
dotest cvsadm-1d23j "cat dir/dir2d2/sub2d2/CVS/Repository" "mod2/sub2"
rm -rf CVS dir
dotest cvsadm-1d24 "${testcvs} co -d dir 1d2mod 1d2mod-2" \
"${PROG} checkout: Updating dir/dir1d2
U dir/dir1d2/file2
${PROG} checkout: Updating dir/dir1d2-2
U dir/dir1d2-2/file2-2"
dotest cvsadm-1d24b "cat CVS/Repository" "\."
dotest cvsadm-1d24d "cat dir/CVS/Repository" "mod2"
dotest cvsadm-1d24f "cat dir/dir1d2/CVS/Repository" "mod2/sub2"
dotest cvsadm-1d24h "cat dir/dir1d2-2/CVS/Repository" "mod2-2/sub2-2"
rm -rf CVS dir
dotest cvsadm-1d25 "${testcvs} co -d dir 1d2mod 2d1mod" \
"${PROG} checkout: Updating dir/dir1d2
U dir/dir1d2/file2
${PROG} checkout: Updating dir/dir2d1/sub2d1
U dir/dir2d1/sub2d1/file1"
dotest cvsadm-1d25b "cat CVS/Repository" "\."
dotest cvsadm-1d25d "cat dir/CVS/Repository" "mod2"
dotest cvsadm-1d25f "cat dir/dir1d2/CVS/Repository" "mod2/sub2"
dotest cvsadm-1d25h "cat dir/dir2d1/CVS/Repository" "\."
dotest cvsadm-1d25j "cat dir/dir2d1/sub2d1/CVS/Repository" "mod1"
rm -rf CVS dir
dotest cvsadm-1d26 "${testcvs} co -d dir 1d2mod 2d2mod" \
"${PROG} checkout: Updating dir/dir1d2
U dir/dir1d2/file2
${PROG} checkout: Updating dir/dir2d2/sub2d2
U dir/dir2d2/sub2d2/file2"
dotest cvsadm-1d26b "cat CVS/Repository" "\."
dotest cvsadm-1d26d "cat dir/CVS/Repository" "mod2"
dotest cvsadm-1d26f "cat dir/dir1d2/CVS/Repository" "mod2/sub2"
dotest cvsadm-1d26h "cat dir/dir2d2/CVS/Repository" "mod2"
dotest cvsadm-1d26j "cat dir/dir2d2/sub2d2/CVS/Repository" "mod2/sub2"
rm -rf CVS dir
dotest cvsadm-1d27 "${testcvs} co -d dir 2d1mod 2d1mod-2" \
"${PROG} checkout: Updating dir/dir2d1/sub2d1
U dir/dir2d1/sub2d1/file1
${PROG} checkout: Updating dir/dir2d1-2/sub2d1-2
U dir/dir2d1-2/sub2d1-2/file1-2"
dotest cvsadm-1d27b "cat CVS/Repository" "\."
dotest cvsadm-1d27d "cat dir/CVS/Repository" "CVSROOT/Emptydir"
dotest cvsadm-1d27f "cat dir/dir2d1/CVS/Repository" "\."
dotest cvsadm-1d27h "cat dir/dir2d1/sub2d1/CVS/Repository" "mod1"
dotest cvsadm-1d27j "cat dir/dir2d1-2/CVS/Repository" "\."
dotest cvsadm-1d27l "cat dir/dir2d1-2/sub2d1-2/CVS/Repository" \
"mod1-2"
rm -rf CVS dir
dotest cvsadm-1d28 "${testcvs} co -d dir 2d1mod 2d2mod" \
"${PROG} checkout: Updating dir/dir2d1/sub2d1
U dir/dir2d1/sub2d1/file1
${PROG} checkout: Updating dir/dir2d2/sub2d2
U dir/dir2d2/sub2d2/file2"
dotest cvsadm-1d28b "cat CVS/Repository" "\."
dotest cvsadm-1d28d "cat dir/CVS/Repository" "CVSROOT/Emptydir"
dotest cvsadm-1d28f "cat dir/dir2d1/CVS/Repository" "\."
dotest cvsadm-1d28h "cat dir/dir2d1/sub2d1/CVS/Repository" "mod1"
dotest cvsadm-1d28j "cat dir/dir2d2/CVS/Repository" "mod2"
dotest cvsadm-1d28l "cat dir/dir2d2/sub2d2/CVS/Repository" "mod2/sub2"
rm -rf CVS dir
dotest cvsadm-1d29 "${testcvs} co -d dir 2d2mod 2d2mod-2" \
"${PROG} checkout: Updating dir/dir2d2/sub2d2
U dir/dir2d2/sub2d2/file2
${PROG} checkout: Updating dir/dir2d2-2/sub2d2-2
U dir/dir2d2-2/sub2d2-2/file2-2"
dotest cvsadm-1d29b "cat CVS/Repository" "\."
dotest cvsadm-1d29d "cat dir/CVS/Repository" "\."
dotest cvsadm-1d29f "cat dir/dir2d2/CVS/Repository" "mod2"
dotest cvsadm-1d29h "cat dir/dir2d2/sub2d2/CVS/Repository" "mod2/sub2"
dotest cvsadm-1d29j "cat dir/dir2d2-2/CVS/Repository" "mod2-2"
dotest cvsadm-1d29l "cat dir/dir2d2-2/sub2d2-2/CVS/Repository" \
"mod2-2/sub2-2"
rm -rf CVS dir
dotest_fail cvsadm-2d3-1 "${testcvs} co -d dir/dir2 1mod" \
"${PROG} \[checkout aborted\]: could not change directory to requested checkout directory .dir.: No such file or directory"
if $remote; then :; else
mkdir dir
dotest cvsadm-2d3 "${testcvs} co -d dir/dir2 1mod" \
"${PROG} checkout: Updating dir/dir2
U dir/dir2/file1"
dotest cvsadm-2d3b "cat CVS/Repository" "\."
dotest_fail cvsadm-2d3d "test -f dir/CVS/Repository" ""
dotest cvsadm-2d3f "cat dir/dir2/CVS/Repository" "mod1"
rm -rf CVS dir
mkdir dir
dotest cvsadm-2d4 "${testcvs} co -d dir/dir2 2mod" \
"${PROG} checkout: Updating dir/dir2
U dir/dir2/file2"
dotest cvsadm-2d4b "cat CVS/Repository" "\."
dotest cvsadm-2d4f "cat dir/dir2/CVS/Repository" "mod2/sub2"
rm -rf CVS dir
mkdir dir
dotest cvsadm-2d5 "${testcvs} co -d dir/dir2 1d1mod" \
"${PROG} checkout: Updating dir/dir2
U dir/dir2/file1"
dotest cvsadm-2d5b "cat CVS/Repository" "\."
dotest cvsadm-2d5f "cat dir/dir2/CVS/Repository" "mod1"
rm -rf CVS dir
mkdir dir
dotest cvsadm-2d6 "${testcvs} co -d dir/dir2 1d2mod" \
"${PROG} checkout: Updating dir/dir2
U dir/dir2/file2"
dotest cvsadm-2d6b "cat CVS/Repository" "\."
dotest cvsadm-2d6f "cat dir/dir2/CVS/Repository" "mod2/sub2"
rm -rf CVS dir
mkdir dir
dotest cvsadm-2d7 "${testcvs} co -d dir/dir2 2d1mod" \
"${PROG} checkout: Updating dir/dir2
U dir/dir2/file1"
dotest cvsadm-2d7b "cat CVS/Repository" "\."
dotest cvsadm-2d7f "cat dir/dir2/CVS/Repository" "mod1"
rm -rf CVS dir
mkdir dir
dotest cvsadm-2d8 "${testcvs} co -d dir/dir2 2d2mod" \
"${PROG} checkout: Updating dir/dir2
U dir/dir2/file2"
dotest cvsadm-2d8b "cat CVS/Repository" "\."
dotest cvsadm-2d8f "cat dir/dir2/CVS/Repository" "mod2/sub2"
rm -rf CVS dir
dotest cvsadm-N3 "${testcvs} co -N 1mod" \
"${PROG} checkout: Updating 1mod
U 1mod/file1"
dotest cvsadm-N3b "cat CVS/Repository" "\."
dotest cvsadm-N3d "cat 1mod/CVS/Repository" "mod1"
rm -rf CVS 1mod
dotest cvsadm-N4 "${testcvs} co -N 2mod" \
"${PROG} checkout: Updating 2mod
U 2mod/file2"
dotest cvsadm-N4b "cat CVS/Repository" "\."
dotest cvsadm-N4d "cat 2mod/CVS/Repository" "mod2/sub2"
rm -rf CVS 2mod
dotest cvsadm-N5 "${testcvs} co -N 1d1mod" \
"${PROG} checkout: Updating dir1d1
U dir1d1/file1"
dotest cvsadm-N5b "cat CVS/Repository" "\."
dotest cvsadm-N5d "cat dir1d1/CVS/Repository" "mod1"
rm -rf CVS dir1d1
dotest cvsadm-N6 "${testcvs} co -N 1d2mod" \
"${PROG} checkout: Updating dir1d2
U dir1d2/file2"
dotest cvsadm-N6b "cat CVS/Repository" "\."
dotest cvsadm-N6d "cat dir1d2/CVS/Repository" "mod2/sub2"
rm -rf CVS dir1d2
dotest cvsadm-N7 "${testcvs} co -N 2d1mod" \
"${PROG} checkout: Updating dir2d1/sub2d1
U dir2d1/sub2d1/file1"
dotest cvsadm-N7b "cat CVS/Repository" "\."
dotest cvsadm-N7d "cat dir2d1/CVS/Repository" "\."
dotest cvsadm-N7f "cat dir2d1/sub2d1/CVS/Repository" "mod1"
rm -rf CVS dir2d1
dotest cvsadm-N8 "${testcvs} co -N 2d2mod" \
"${PROG} checkout: Updating dir2d2/sub2d2
U dir2d2/sub2d2/file2"
dotest cvsadm-N8b "cat CVS/Repository" "\."
dotest cvsadm-N8d "cat dir2d2/CVS/Repository" "mod2"
dotest cvsadm-N8f "cat dir2d2/sub2d2/CVS/Repository" "mod2/sub2"
rm -rf CVS dir2d2
dotest cvsadm-N1d3 "${testcvs} co -N -d dir 1mod" \
"${PROG} checkout: Updating dir/1mod
U dir/1mod/file1"
dotest cvsadm-N1d3b "cat CVS/Repository" "\."
dotest cvsadm-N1d3d "cat dir/CVS/Repository" "\."
dotest cvsadm-N1d3f "cat dir/1mod/CVS/Repository" "mod1"
rm -rf CVS dir
dotest cvsadm-N1d4 "${testcvs} co -N -d dir 2mod" \
"${PROG} checkout: Updating dir/2mod
U dir/2mod/file2"
dotest cvsadm-N1d4b "cat CVS/Repository" "\."
dotest cvsadm-N1d4d "cat dir/CVS/Repository" "mod2"
dotest cvsadm-N1d4f "cat dir/2mod/CVS/Repository" "mod2/sub2"
rm -rf CVS dir
dotest cvsadm-N1d5 "${testcvs} co -N -d dir 1d1mod" \
"${PROG} checkout: Updating dir/dir1d1
U dir/dir1d1/file1"
dotest cvsadm-N1d5b "cat CVS/Repository" "\."
dotest cvsadm-N1d5d "cat dir/CVS/Repository" "\."
dotest cvsadm-N1d5d "cat dir/dir1d1/CVS/Repository" "mod1"
rm -rf CVS dir
dotest cvsadm-N1d6 "${testcvs} co -N -d dir 1d2mod" \
"${PROG} checkout: Updating dir/dir1d2
U dir/dir1d2/file2"
dotest cvsadm-N1d6b "cat CVS/Repository" "\."
dotest cvsadm-N1d6d "cat dir/CVS/Repository" "mod2"
dotest cvsadm-N1d6f "cat dir/dir1d2/CVS/Repository" "mod2/sub2"
rm -rf CVS dir
dotest cvsadm-N1d7 "${testcvs} co -N -d dir 2d1mod" \
"${PROG} checkout: Updating dir/dir2d1/sub2d1
U dir/dir2d1/sub2d1/file1"
dotest cvsadm-N1d7b "cat CVS/Repository" "\."
dotest cvsadm-N1d7d "cat dir/CVS/Repository" "CVSROOT/Emptydir"
dotest cvsadm-N1d7f "cat dir/dir2d1/CVS/Repository" "\."
dotest cvsadm-N1d7h "cat dir/dir2d1/sub2d1/CVS/Repository" "mod1"
rm -rf CVS dir
dotest cvsadm-N1d8 "${testcvs} co -N -d dir 2d2mod" \
"${PROG} checkout: Updating dir/dir2d2/sub2d2
U dir/dir2d2/sub2d2/file2"
dotest cvsadm-N1d8b "cat CVS/Repository" "\."
dotest cvsadm-N1d8d "cat dir/CVS/Repository" "\."
dotest cvsadm-N1d8d "cat dir/dir2d2/CVS/Repository" "mod2"
dotest cvsadm-N1d8d "cat dir/dir2d2/sub2d2/CVS/Repository" \
"mod2/sub2"
rm -rf CVS dir
mkdir dir
dotest cvsadm-N2d3 "${testcvs} co -N -d dir/dir2 1mod" \
"${PROG} checkout: Updating dir/dir2/1mod
U dir/dir2/1mod/file1"
dotest cvsadm-N2d3b "cat CVS/Repository" "\."
dotest cvsadm-N2d3f "cat dir/dir2/CVS/Repository" "\."
dotest cvsadm-N2d3h "cat dir/dir2/1mod/CVS/Repository" "mod1"
rm -rf CVS dir
mkdir dir
dotest cvsadm-N2d4 "${testcvs} co -N -d dir/dir2 2mod" \
"${PROG} checkout: Updating dir/dir2/2mod
U dir/dir2/2mod/file2"
dotest cvsadm-N2d4b "cat CVS/Repository" "\."
dotest cvsadm-N2d4f "cat dir/dir2/CVS/Repository" "mod2"
dotest cvsadm-N2d4h "cat dir/dir2/2mod/CVS/Repository" "mod2/sub2"
rm -rf CVS dir
mkdir dir
dotest cvsadm-N2d5 "${testcvs} co -N -d dir/dir2 1d1mod" \
"${PROG} checkout: Updating dir/dir2/dir1d1
U dir/dir2/dir1d1/file1"
dotest cvsadm-N2d5b "cat CVS/Repository" "\."
dotest cvsadm-N2d5f "cat dir/dir2/CVS/Repository" "\."
dotest cvsadm-N2d5h "cat dir/dir2/dir1d1/CVS/Repository" "mod1"
rm -rf CVS dir
mkdir dir
dotest cvsadm-N2d6 "${testcvs} co -N -d dir/dir2 1d2mod" \
"${PROG} checkout: Updating dir/dir2/dir1d2
U dir/dir2/dir1d2/file2"
dotest cvsadm-N2d6b "cat CVS/Repository" "\."
dotest cvsadm-N2d6f "cat dir/dir2/CVS/Repository" "mod2"
dotest cvsadm-N2d6h "cat dir/dir2/dir1d2/CVS/Repository" "mod2/sub2"
rm -rf CVS dir
mkdir dir
dotest cvsadm-N2d7 "${testcvs} co -N -d dir/dir2 2d1mod" \
"${PROG} checkout: Updating dir/dir2/dir2d1/sub2d1
U dir/dir2/dir2d1/sub2d1/file1"
dotest cvsadm-N2d7b "cat CVS/Repository" "\."
dotest cvsadm-N2d7f "cat dir/dir2/CVS/Repository" "CVSROOT/Emptydir"
dotest cvsadm-N2d7g "cat dir/dir2/dir2d1/CVS/Repository" "\."
dotest cvsadm-N2d7h "cat dir/dir2/dir2d1/sub2d1/CVS/Repository" \
"mod1"
rm -rf CVS dir
mkdir dir
dotest cvsadm-N2d8 "${testcvs} co -N -d dir/dir2 2d2mod" \
"${PROG} checkout: Updating dir/dir2/dir2d2/sub2d2
U dir/dir2/dir2d2/sub2d2/file2"
dotest cvsadm-N2d8b "cat CVS/Repository" "\."
dotest cvsadm-N2d8f "cat dir/dir2/CVS/Repository" "\."
dotest cvsadm-N2d8h "cat dir/dir2/dir2d2/CVS/Repository" "mod2"
dotest cvsadm-N2d8j "cat dir/dir2/dir2d2/sub2d2/CVS/Repository" \
"mod2/sub2"
rm -rf CVS dir
fi
dotest cvsadm-cleanup-1 "${testcvs} -q co CVSROOT/config" \
"U CVSROOT/config"
cd CVSROOT
echo "# empty file" >config
dotest cvsadm-cleanup-2 "${testcvs} -q ci -m cvsadm-cleanup" \
"Checking in config;
${CVSROOT_DIRNAME}/CVSROOT/config,v <-- config
new revision: 1\.[0-9]*; previous revision: 1\.[0-9]*
done
${PROG} commit: Rebuilding administrative file database"
cd ..
rm -rf CVSROOT CVS
cd ..
rm -rf 1
rm -rf ${CVSROOT_DIRNAME}/1mod
rm -rf ${CVSROOT_DIRNAME}/1mod-2
rm -rf ${CVSROOT_DIRNAME}/2mod
rm -rf ${CVSROOT_DIRNAME}/2mod-2
rm -rf ${CVSROOT_DIRNAME}/mod1
rm -rf ${CVSROOT_DIRNAME}/mod1-2
rm -rf ${CVSROOT_DIRNAME}/mod2
rm -rf ${CVSROOT_DIRNAME}/mod2-2
;;
emptydir)
mkdir 1; cd 1
dotest emptydir-1 "${testcvs} co CVSROOT/modules" \
"U CVSROOT/modules"
echo "# Module defs for emptydir tests" > CVSROOT/modules
echo "2d1mod -d dir2d1/sub/sub2d1 mod1" >> CVSROOT/modules
echo "2d1moda -d dir2d1/suba moda/modasub" >> CVSROOT/modules
echo "2d1modb -d dir2d1/suba mod1" >> CVSROOT/modules
echo "comb -a 2d1modb 2d1moda" >> CVSROOT/modules
dotest emptydir-2 "${testcvs} ci -m add-modules" \
"${PROG} [a-z]*: Examining CVSROOT
Checking in CVSROOT/modules;
${CVSROOT_DIRNAME}/CVSROOT/modules,v <-- modules
new revision: 1\.[0-9]*; previous revision: 1\.[0-9]*
done
${PROG} commit: Rebuilding administrative file database" \
"${PROG} commit: Examining CVSROOT"
rm -rf CVS CVSROOT
mkdir ${CVSROOT_DIRNAME}/mod1 ${CVSROOT_DIRNAME}/moda
dotest emptydir-3 "${testcvs} -q co -l ." ""
dotest emptydir-3a "${testcvs} co mod1 moda" \
"${PROG} checkout: Updating mod1
${PROG} checkout: Updating moda"
echo "file1" > mod1/file1
mkdir moda/modasub
dotest emptydir-3b "${testcvs} add moda/modasub" \
"Directory ${CVSROOT_DIRNAME}/moda/modasub added to the repository"
echo "filea" > moda/modasub/filea
dotest emptydir-4 "${testcvs} add mod1/file1 moda/modasub/filea" \
"${PROG} add: scheduling file .mod1/file1. for addition
${PROG} add: scheduling file .moda/modasub/filea. for addition
${PROG} add: use .${PROG} commit. to add these files permanently"
dotest emptydir-5 "${testcvs} -q ci -m yup" \
"RCS file: ${CVSROOT_DIRNAME}/mod1/file1,v
done
Checking in mod1/file1;
${CVSROOT_DIRNAME}/mod1/file1,v <-- file1
initial revision: 1\.1
done
RCS file: ${CVSROOT_DIRNAME}/moda/modasub/filea,v
done
Checking in moda/modasub/filea;
${CVSROOT_DIRNAME}/moda/modasub/filea,v <-- filea
initial revision: 1\.1
done"
rm -rf mod1 moda CVS
dotest emptydir-6 "${testcvs} co 2d1mod" \
"${PROG} checkout: Updating dir2d1/sub/sub2d1
U dir2d1/sub/sub2d1/file1"
cd dir2d1
touch emptyfile
dotest_fail emptydir-7 "${testcvs} add emptyfile" \
"${PROG} \[add aborted\]: cannot add to ${CVSROOT_DIRNAME}/CVSROOT/Emptydir"
mkdir emptydir
dotest_fail emptydir-8 "${testcvs} add emptydir" \
"${PROG} \[[a-z]* aborted\]: cannot add to ${CVSROOT_DIRNAME}/CVSROOT/Emptydir"
cd ..
rm -rf CVS dir2d1
mkdir edir; cd edir
dotest emptydir-9 "${testcvs} -q co -l CVSROOT" \
"U CVSROOT${DOTSTAR}"
cd CVSROOT
dotest_fail emptydir-10 "test -d Emptydir" ''
dotest emptydir-11 "${testcvs} -q -n update -d -P" ''
cd ../..
rm -r edir
cd ..
mkdir 2; cd 2
dotest emptydir-12 "${testcvs} -q co 2d1moda" \
"U dir2d1/suba/filea"
dotest emptydir-13 "cat dir2d1/CVS/Repository" "moda"
dotest_fail emptydir-14 "${testcvs} co comb" \
"${PROG} checkout: existing repository ${CVSROOT_DIRNAME}/moda/modasub does not match ${CVSROOT_DIRNAME}/mod1
${PROG} checkout: ignoring module 2d1modb
${PROG} checkout: Updating dir2d1/suba"
dotest emptydir-15 "cat dir2d1/CVS/Repository" "moda"
cd ..
mkdir 3; cd 3
mkdir dir2d1
dotest emptydir-16 "${testcvs} co 2d1mod" \
"${PROG} checkout: Updating dir2d1/sub/sub2d1
U dir2d1/sub/sub2d1/file1"
dotest emptydir-17 "test -d dir2d1/CVS"
if $keep; then
echo Keeping ${TESTDIR} and exiting due to --keep
exit 0
fi
cd ..
rm -r 1 2 3
rm -rf ${CVSROOT_DIRNAME}/mod1 ${CVSROOT_DIRNAME}/moda
;;
abspath)
mkdir ${CVSROOT_DIRNAME}/mod1 ${CVSROOT_DIRNAME}/mod2
dotest abspath-1a "${testcvs} co mod1 mod2" \
"${PROG} checkout: Updating mod1
${PROG} checkout: Updating mod2"
echo "file1" > mod1/file1
echo "file2" > mod2/file2
cd mod1
dotest abspath-1ba "${testcvs} add file1" \
"${PROG} add: scheduling file .file1. for addition
${PROG} add: use .${PROG} commit. to add this file permanently"
cd ..
cd mod2
dotest abspath-1bb "${testcvs} add file2" \
"${PROG} add: scheduling file .file2. for addition
${PROG} add: use .${PROG} commit. to add this file permanently"
cd ..
dotest abspath-1c "${testcvs} ci -m yup mod1 mod2" \
"${PROG} [a-z]*: Examining mod1
${PROG} [a-z]*: Examining mod2
RCS file: ${CVSROOT_DIRNAME}/mod1/file1,v
done
Checking in mod1/file1;
${CVSROOT_DIRNAME}/mod1/file1,v <-- file1
initial revision: 1.1
done
RCS file: ${CVSROOT_DIRNAME}/mod2/file2,v
done
Checking in mod2/file2;
${CVSROOT_DIRNAME}/mod2/file2,v <-- file2
initial revision: 1.1
done"
rm -rf CVS mod1 mod2
if $remote; then
dotest_fail abspath-2a "${testcvs} co -d ${TESTDIR}/1 mod1" \
"${PROG} \[checkout aborted\]: absolute pathname .${TESTDIR}/1. illegal for server"
dotest abspath-2a-try2 "${testcvs} co -d 1 mod1" \
"${PROG} checkout: Updating 1
U 1/file1"
else
dotest abspath-2a "${testcvs} co -d ${TESTDIR}/1 mod1" \
"${PROG} checkout: Updating ${TESTDIR}/1
U ${TESTDIR}/1/file1"
fi
dotest abspath-2b "cat ${TESTDIR}/1/CVS/Repository" "mod1"
rm -rf ${TESTDIR}/1
if $remote; then :; else
dotest_fail abspath-3.1 "${testcvs} co -d ${TESTDIR}/1/2 mod1" \
"${PROG} \[checkout aborted\]: could not change directory to requested checkout directory .${TESTDIR}/1.: No such file or directory"
fi
dotest_fail abspath-3.2 "${testcvs} co -d 1/2 mod1" \
"${PROG} \[checkout aborted\]: could not change directory to requested checkout directory .1.: No such file or directory"
mkdir 1
if $remote; then
dotest_fail abspath-3a "${testcvs} co -d 1/2 mod1" \
"${PROG} \[checkout aborted\]: could not change directory to requested checkout directory .1.: No such file or directory"
cd 1
dotest abspath-3a-try2 "${testcvs} co -d 2 mod1" \
"${PROG} checkout: Updating 2
U 2/file1"
cd ..
rm -rf 1/CVS
else
dotest abspath-3a "${testcvs} co -d ${TESTDIR}/1/2 mod1" \
"${PROG} checkout: Updating ${TESTDIR}/1/2
U ${TESTDIR}/1/2/file1"
fi dotest abspath-3b "cat ${TESTDIR}/1/2/CVS/Repository" "mod1"
dotest_fail abspath-3c "test -d ${TESTDIR}/1/CVS" ''
rm -rf ${TESTDIR}/1
mkdir ${TESTDIR}/barf
chmod -w ${TESTDIR}/barf
dotest_fail abspath-4r "${testcvs} co -d ${TESTDIR}/barf/sub mod1" \
"${PROG} \[checkout aborted\]: absolute pathname .${TESTDIR}/barf/sub. illegal for server" \
"${PROG} \[checkout aborted\]: cannot make directory sub: Permission denied"
chmod +w ${TESTDIR}/barf
rmdir ${TESTDIR}/barf
if $remote; then
dotest abspath-5ar "${testcvs} co -d 1 mod1 mod2" \
"${PROG} checkout: Updating 1/mod1
U 1/mod1/file1
${PROG} checkout: Updating 1/mod2
U 1/mod2/file2"
else
dotest abspath-5a "${testcvs} co -d ${TESTDIR}/1 mod1 mod2" \
"${PROG} checkout: Updating ${TESTDIR}/1/mod1
U ${TESTDIR}/1/mod1/file1
${PROG} checkout: Updating ${TESTDIR}/1/mod2
U ${TESTDIR}/1/mod2/file2"
fi dotest abspath-5b "cat ${TESTDIR}/1/CVS/Repository" "\."
dotest abspath-5c "cat ${TESTDIR}/1/mod1/CVS/Repository" "mod1"
dotest abspath-5d "cat ${TESTDIR}/1/mod2/CVS/Repository" "mod2"
rm -rf ${TESTDIR}/1
if $remote; then
dotest abspath-6ar "${testcvs} co -d 1 ." \
"${PROG} checkout: Updating 1
${PROG} checkout: Updating 1/CVSROOT
${DOTSTAR}
${PROG} checkout: Updating 1/mod1
U 1/mod1/file1
${PROG} checkout: Updating 1/mod2
U 1/mod2/file2"
else
dotest abspath-6a "${testcvs} co -d ${TESTDIR}/1 ." \
"${PROG} checkout: Updating ${TESTDIR}/1
${PROG} checkout: Updating ${TESTDIR}/1/CVSROOT
${DOTSTAR}
${PROG} checkout: Updating ${TESTDIR}/1/mod1
U ${TESTDIR}/1/mod1/file1
${PROG} checkout: Updating ${TESTDIR}/1/mod2
U ${TESTDIR}/1/mod2/file2"
fi dotest abspath-6b "cat ${TESTDIR}/1/CVS/Repository" "\."
dotest abspath-6c "cat ${TESTDIR}/1/CVSROOT/CVS/Repository" "CVSROOT"
dotest abspath-6c "cat ${TESTDIR}/1/mod1/CVS/Repository" "mod1"
dotest abspath-6d "cat ${TESTDIR}/1/mod2/CVS/Repository" "mod2"
rm -rf ${TESTDIR}/1
mkdir 1
cd 1
if $remote; then
dotest_fail abspath-7ar "${testcvs} -q co -d ../2 mod2" \
"${PROG} checkout: protocol error: .\.\./2. contains more leading \.\.
${PROG} \[checkout aborted\]: than the 0 which Max-dotdot specified"
cd ..
dotest abspath-7a-try2r "${testcvs} -q co -d 2 mod2" \
"U 2/file2"
cd 1
else
dotest abspath-7a "${testcvs} -q co -d ${TESTDIR}/2 mod2" \
"U ${TESTDIR}/2/file2"
fi dotest abspath-7b "ls" ""
dotest abspath-7c "${testcvs} -q co mod1" \
"U mod1/file1"
cd mod1
if $remote; then
cd ../..
dotest abspath-7dr "${testcvs} -q co -d 3 mod2" \
"U 3/file2"
cd 1/mod1
else
dotest abspath-7d "${testcvs} -q co -d ${TESTDIR}/3 mod2" \
"U ${TESTDIR}/3/file2"
fi dotest abspath-7e "${testcvs} -q update -d" ""
cd ../..
rm -r 1 2 3
rm -rf ${CVSROOT_DIRNAME}/mod1 ${CVSROOT_DIRNAME}/mod2
;;
abspath2)
dotest_fail abspath2-1 "${testcvs} co /foo" \
"$PROG \[checkout aborted\]: Absolute module reference invalid: \`/foo'" \
"$PROG \[server aborted\]: Absolute module reference invalid: \`/foo'
$PROG \[checkout aborted\]: end of file from server (consult above messages if any)"
;;
toplevel)
mkdir 1; cd 1
dotest toplevel-1a "${testcvs} -q co CVSROOT/config" \
"U CVSROOT/config"
cd CVSROOT
echo "TopLevelAdmin=yes" >config
dotest toplevel-1b "${testcvs} -q ci -m yes-top-level" \
"Checking in config;
${CVSROOT_DIRNAME}/CVSROOT/config,v <-- config
new revision: 1\.[0-9]*; previous revision: 1\.[0-9]*
done
${PROG} commit: Rebuilding administrative file database"
cd ../..
rm -r 1
mkdir 1; cd 1
dotest toplevel-1 "${testcvs} -q co -l ." ''
mkdir top-dir second-dir
dotest toplevel-2 "${testcvs} add top-dir second-dir" \
"Directory ${CVSROOT_DIRNAME}/top-dir added to the repository
Directory ${CVSROOT_DIRNAME}/second-dir added to the repository"
cd top-dir
touch file1
dotest toplevel-3 "${testcvs} add file1" \
"${PROG} add: scheduling file .file1. for addition
${PROG} add: use .${PROG} commit. to add this file permanently"
dotest toplevel-4 "${testcvs} -q ci -m add" \
"RCS file: ${CVSROOT_DIRNAME}/top-dir/file1,v
done
Checking in file1;
${CVSROOT_DIRNAME}/top-dir/file1,v <-- file1
initial revision: 1\.1
done"
cd ..
cd second-dir
touch file2
dotest toplevel-3s "${testcvs} add file2" \
"${PROG} add: scheduling file .file2. for addition
${PROG} add: use .${PROG} commit. to add this file permanently"
dotest toplevel-4s "${testcvs} -q ci -m add" \
"RCS file: ${CVSROOT_DIRNAME}/second-dir/file2,v
done
Checking in file2;
${CVSROOT_DIRNAME}/second-dir/file2,v <-- file2
initial revision: 1\.1
done"
cd ../..
rm -r 1; mkdir 1; cd 1
dotest toplevel-5 "${testcvs} co top-dir" \
"${PROG} checkout: Updating top-dir
U top-dir/file1"
dotest toplevel-6 "${testcvs} update top-dir" \
"${PROG} update: Updating top-dir"
dotest toplevel-7 "${testcvs} update" \
"${PROG} update: Updating \.
${PROG} update: Updating top-dir"
dotest toplevel-8 "${testcvs} update -d top-dir" \
"${PROG} update: Updating top-dir"
dotest toplevel-9 "${testcvs} update -d" \
"${PROG} update: Updating \.
${PROG} update: Updating CVSROOT
${DOTSTAR}
${PROG} update: Updating top-dir"
cd ..
rm -r 1; mkdir 1; cd 1
dotest toplevel-10 "${testcvs} co top-dir" \
"${PROG} checkout: Updating top-dir
U top-dir/file1"
dotest toplevel-11 "${testcvs} -q update -d second-dir" \
"U second-dir/file2"
rm -r CVS
if test -n "$remotehost"; then
$CVS_RSH $remotehost "chmod -w $TESTDIR/1"
else
chmod -w ../1
fi
dotest toplevel-12 "${testcvs} co top-dir" \
"${PROG} checkout: warning: cannot make directory CVS in \.: Permission denied
${PROG} checkout: Updating top-dir" \
"${PROG} checkout: warning: cannot make directory CVS in \.: Permission denied
${PROG} checkout: warning: cannot make directory CVS in \.: Permission denied
${PROG} checkout: in directory \.:
${PROG} checkout: cannot open CVS/Entries for reading: No such file or directory
${PROG} checkout: Updating top-dir"
chmod +w ../1
dotest toplevel-cleanup-1 "${testcvs} -q co CVSROOT/config" \
"U CVSROOT/config"
cd CVSROOT
echo "# empty file" >config
dotest toplevel-cleanup-2 "${testcvs} -q ci -m toplevel-cleanup" \
"Checking in config;
${CVSROOT_DIRNAME}/CVSROOT/config,v <-- config
new revision: 1\.[0-9]*; previous revision: 1\.[0-9]*
done
${PROG} commit: Rebuilding administrative file database"
cd ../..
rm -r 1
rm -rf ${CVSROOT_DIRNAME}/top-dir ${CVSROOT_DIRNAME}/second-dir
;;
toplevel2)
mkdir 1; cd 1
dotest toplevel2-1a "${testcvs} -q co CVSROOT/config" \
"U CVSROOT/config"
cd CVSROOT
echo "TopLevelAdmin=no" >config
dotest toplevel2-1b "${testcvs} -q ci -m no-top-level" \
"Checking in config;
${CVSROOT_DIRNAME}/CVSROOT/config,v <-- config
new revision: 1\.[0-9]*; previous revision: 1\.[0-9]*
done
${PROG} commit: Rebuilding administrative file database"
cd ../..
rm -r 1
mkdir 1; cd 1
dotest toplevel2-1 "${testcvs} -q co -l ." ''
mkdir top-dir second-dir
dotest toplevel2-2 "${testcvs} add top-dir second-dir" \
"Directory ${CVSROOT_DIRNAME}/top-dir added to the repository
Directory ${CVSROOT_DIRNAME}/second-dir added to the repository"
cd top-dir
touch file1
dotest toplevel2-3 "${testcvs} add file1" \
"${PROG} add: scheduling file .file1. for addition
${PROG} add: use .${PROG} commit. to add this file permanently"
dotest toplevel2-4 "${testcvs} -q ci -m add" \
"RCS file: ${CVSROOT_DIRNAME}/top-dir/file1,v
done
Checking in file1;
${CVSROOT_DIRNAME}/top-dir/file1,v <-- file1
initial revision: 1\.1
done"
cd ..
cd second-dir
touch file2
dotest toplevel2-3s "${testcvs} add file2" \
"${PROG} add: scheduling file .file2. for addition
${PROG} add: use .${PROG} commit. to add this file permanently"
dotest toplevel2-4s "${testcvs} -q ci -m add" \
"RCS file: ${CVSROOT_DIRNAME}/second-dir/file2,v
done
Checking in file2;
${CVSROOT_DIRNAME}/second-dir/file2,v <-- file2
initial revision: 1\.1
done"
cd ../..
rm -r 1; mkdir 1; cd 1
dotest toplevel2-5 "${testcvs} co top-dir" \
"${PROG} checkout: Updating top-dir
U top-dir/file1"
dotest toplevel2-6 "${testcvs} update top-dir" \
"${PROG} update: Updating top-dir"
dotest toplevel2-7 "${testcvs} update" \
"${PROG} update: Updating top-dir"
dotest toplevel2-8 "${testcvs} update -d top-dir" \
"${PROG} update: Updating top-dir"
dotest toplevel2-9 "${testcvs} update -d" \
"${PROG} update: Updating top-dir"
cd ..
rm -r 1; mkdir 1; cd 1
dotest toplevel2-10 "${testcvs} co top-dir" \
"${PROG} checkout: Updating top-dir
U top-dir/file1"
dotest toplevel2-11 "${testcvs} -q update -d" ""
dotest toplevel2-cleanup-1 "${testcvs} -q co CVSROOT/config" \
"U CVSROOT/config"
cd CVSROOT
echo "# empty file" >config
dotest toplevel2-cleanup-2 "${testcvs} -q ci -m toplevel2-cleanup" \
"Checking in config;
${CVSROOT_DIRNAME}/CVSROOT/config,v <-- config
new revision: 1\.[0-9]*; previous revision: 1\.[0-9]*
done
${PROG} commit: Rebuilding administrative file database"
cd ../..
rm -r 1
rm -rf ${CVSROOT_DIRNAME}/top-dir ${CVSROOT_DIRNAME}/second-dir
;;
rstar-toplevel)
dotest rstar-toplevel-1 "$testcvs -q rlog ." \
"
RCS file: $CVSROOT_DIRNAME/CVSROOT$DOTSTAR"
if $keep; then
echo Keeping ${TESTDIR} and exiting due to --keep
exit 0
fi
;;
trailingslashes)
mkdir trailingslashes; cd trailingslashes
dotest trailingslashes-init-1 "$testcvs -Q co -ldt ."
dotest trailingslashes-init-2 "$testcvs -Q co -dt2 ."
cd t
echo "Ahh'll be baaack." >topfile
dotest trailingslashes-init-3 "$testcvs -Q add topfile"
dotest trailingslashes-init-4 "$testcvs -Q ci -mto-top" \
"RCS file: $CVSROOT_DIRNAME/topfile,v
done
Checking in topfile;
$CVSROOT_DIRNAME/topfile,v <-- topfile
initial revision: 1\.1
done"
cd ../t2
dotest trailingslashes-1 "$testcvs -q up CVSROOT"
dotest_fail trailingslashes-1a "test -f topfile"
if $remote; then
dotest trailingslashes-2 "$testcvs -q up CVSROOT/" \
"U topfile"
dotest trailingslashes-2a "test -f topfile"
else
dotest trailingslashes-2 "$testcvs -q up CVSROOT/"
dotest_fail trailingslashes-2a "test -f topfile"
fi
if $keep; then
echo Keeping $TESTDIR and exiting due to --keep
exit 0
fi
cd ../..
rm -rf trailingslashes $CVSROOT_DIRNAME/topfile,v
;;
checkout_repository)
dotest_fail checkout_repository-1 \
"${testcvs} co -d ${CVSROOT_DIRNAME} CVSROOT" \
"${PROG} \[checkout aborted\]: Cannot check out files into the repository itself" \
"${PROG} \[checkout aborted\]: absolute pathname \`${CVSROOT_DIRNAME}' illegal for server"
cd ${CVSROOT_DIRNAME}
dotest_fail checkout_repository-2 "${testcvs} co CVSROOT" \
"${PROG} \[checkout aborted\]: Cannot check out files into the repository itself" \
"${PROG} checkout: Updating CVSROOT
${PROG} checkout: move away CVSROOT/checkoutlist; it is in the way
C CVSROOT/checkoutlist
${PROG} checkout: move away CVSROOT/commitinfo; it is in the way
C CVSROOT/commitinfo
${PROG} checkout: move away CVSROOT/config; it is in the way
C CVSROOT/config
${PROG} checkout: move away CVSROOT/cvswrappers; it is in the way
C CVSROOT/cvswrappers
${PROG} checkout: move away CVSROOT/editinfo; it is in the way
C CVSROOT/editinfo
${PROG} checkout: move away CVSROOT/loginfo; it is in the way
C CVSROOT/loginfo
${PROG} checkout: move away CVSROOT/modules; it is in the way
C CVSROOT/modules
${PROG} checkout: move away CVSROOT/notify; it is in the way
C CVSROOT/notify
${PROG} checkout: move away CVSROOT/rcsinfo; it is in the way
C CVSROOT/rcsinfo
${PROG} checkout: move away CVSROOT/taginfo; it is in the way
C CVSROOT/taginfo
${PROG} checkout: move away CVSROOT/verifymsg; it is in the way
C CVSROOT/verifymsg"
dotest checkout_repository-3 \
"${testcvs} co -p CVSROOT/modules >/dev/null" \
"===================================================================
Checking out CVSROOT/modules
RCS: ${CVSROOT_DIRNAME}/CVSROOT/modules,v
VERS: 1\.[0-9]*
\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*"
cd ${TESTDIR}
;;
mflag)
for message in '' ' ' '
' ' test' ; do
mkdir a-dir; cd a-dir
echo testa >>test
if ${testcvs} import -m "$message" a-dir A A1 >>${LOGFILE} 2>&1;then
pass 156
else
fail 156
fi
echo testb >>test
if ${testcvs} import -m "$message" a-dir A A2 >>${LOGFILE} 2>&1;then
pass 157
else
fail 157
fi
cd ..; rm -r a-dir
if ${testcvs} co a-dir >>${LOGFILE} 2>&1; then
pass 158
else
fail 158
fi
cd a-dir
echo testc >>test
if ${testcvs} ci -m "$message" >>${LOGFILE} 2>&1; then
pass 159
else
fail 159
fi
rm test;
if ${testcvs} rm test >>${LOGFILE} 2>&1; then
pass 160
else
fail 160
fi
if ${testcvs} ci -m "$message" >>${LOGFILE} 2>&1; then
pass 161
else
fail 161
fi
cd ..
rm -r a-dir
rm -rf ${CVSROOT_DIRNAME}/a-dir
done
;;
editor)
cat >${TESTDIR}/editme <<EOF
#!${TESTSHELL}
sleep 1
sed <\$1 -e 's/^/x/' >${TESTDIR}/edit.new
mv ${TESTDIR}/edit.new \$1
exit 0
EOF
chmod +x ${TESTDIR}/editme
mkdir 1; cd 1
dotest editor-1 "${testcvs} -q co -l ." ''
mkdir first-dir
dotest editor-2 "${testcvs} add first-dir" \
"Directory ${CVSROOT_DIRNAME}/first-dir added to the repository"
cd first-dir
touch file1 file2
dotest editor-3 "${testcvs} add file1 file2" \
"${PROG} add: scheduling file .file1. for addition
${PROG} add: scheduling file .file2. for addition
${PROG} add: use .${PROG} commit. to add these files permanently"
dotest editor-4 "${testcvs} -e ${TESTDIR}/editme -q ci" \
"RCS file: ${CVSROOT_DIRNAME}/first-dir/file1,v
done
Checking in file1;
${CVSROOT_DIRNAME}/first-dir/file1,v <-- file1
initial revision: 1\.1
done
RCS file: ${CVSROOT_DIRNAME}/first-dir/file2,v
done
Checking in file2;
${CVSROOT_DIRNAME}/first-dir/file2,v <-- file2
initial revision: 1\.1
done"
dotest editor-5 "${testcvs} -q tag -b br" "T file1
T file2"
dotest editor-6 "${testcvs} -q update -r br" ''
echo modify >>file1
dotest editor-7 "${testcvs} -e ${TESTDIR}/editme -q ci" \
"Checking in file1;
${CVSROOT_DIRNAME}/first-dir/file1,v <-- file1
new revision: 1\.1\.2\.1; previous revision: 1\.1
done"
dotest editor-8 "${testcvs} -q update -A" "U file1"
echo add a line >>file2
dotest editor-9 "${testcvs} -q -e ${TESTDIR}/editme ci -rbr file2" \
"Checking in file2;
${CVSROOT_DIRNAME}/first-dir/file2,v <-- file2
new revision: 1\.1\.2\.1; previous revision: 1\.1
done"
dotest editor-log-file1 "${testcvs} log -N file1" "
RCS file: ${CVSROOT_DIRNAME}/first-dir/file1,v
Working file: file1
head: 1\.1
branch:
locks: strict
access list:
keyword substitution: kv
total revisions: 2; selected revisions: 2
description:
----------------------------
revision 1\.1
date: [0-9/]* [0-9:]*; author: ${username}; state: Exp;
branches: 1\.1\.2;
xCVS: ----------------------------------------------------------------------
xCVS: Enter Log. Lines beginning with .CVS:. are removed automatically
xCVS:
xCVS: Committing in .
xCVS:
xCVS: Added Files:
xCVS: file1 file2
xCVS: ----------------------------------------------------------------------
----------------------------
revision 1\.1\.2\.1
date: [0-9/]* [0-9:]*; author: ${username}; state: Exp; lines: ${PLUS}1 -0
xCVS: ----------------------------------------------------------------------
xCVS: Enter Log. Lines beginning with .CVS:. are removed automatically
xCVS:
xCVS: Committing in .
xCVS:
xCVS: Modified Files:
xCVS: Tag: br
xCVS: file1
xCVS: ----------------------------------------------------------------------
============================================================================="
dotest editor-log-file2 "${testcvs} log -N file2" "
RCS file: ${CVSROOT_DIRNAME}/first-dir/file2,v
Working file: file2
head: 1\.1
branch:
locks: strict
access list:
keyword substitution: kv
total revisions: 2; selected revisions: 2
description:
----------------------------
revision 1\.1
date: [0-9/]* [0-9:]*; author: ${username}; state: Exp;
branches: 1\.1\.2;
xCVS: ----------------------------------------------------------------------
xCVS: Enter Log. Lines beginning with .CVS:. are removed automatically
xCVS:
xCVS: Committing in .
xCVS:
xCVS: Added Files:
xCVS: file1 file2
xCVS: ----------------------------------------------------------------------
----------------------------
revision 1\.1\.2\.1
date: [0-9/]* [0-9:]*; author: ${username}; state: Exp; lines: ${PLUS}1 -0
xCVS: ----------------------------------------------------------------------
xCVS: Enter Log. Lines beginning with .CVS:. are removed automatically
xCVS:
xCVS: Modified Files:
xCVS: Tag: br
xCVS: file2
xCVS: ----------------------------------------------------------------------
=============================================================================" "
RCS file: ${CVSROOT_DIRNAME}/first-dir/file2,v
Working file: file2
head: 1\.1
branch:
locks: strict
access list:
keyword substitution: kv
total revisions: 2; selected revisions: 2
description:
----------------------------
revision 1\.1
date: [0-9/]* [0-9:]*; author: ${username}; state: Exp;
branches: 1\.1\.2;
xCVS: ----------------------------------------------------------------------
xCVS: Enter Log. Lines beginning with .CVS:. are removed automatically
xCVS:
xCVS: Committing in .
xCVS:
xCVS: Added Files:
xCVS: file1 file2
xCVS: ----------------------------------------------------------------------
----------------------------
revision 1\.1\.2\.1
date: [0-9/]* [0-9:]*; author: ${username}; state: Exp; lines: ${PLUS}1 -0
xCVS: ----------------------------------------------------------------------
xCVS: Enter Log. Lines beginning with .CVS:. are removed automatically
xCVS:
xCVS: Committing in .
xCVS:
xCVS: Modified Files:
xCVS: Tag: br
xCVS: file2
xCVS: ----------------------------------------------------------------------
============================================================================="
cat >${TESTDIR}/editme <<EOF
#!${TESTSHELL}
sleep 1
exit 0
EOF
chmod +x ${TESTDIR}/editme
dotest_fail editor-emptylog-1 "echo a |${testcvs} -e ${TESTDIR}/editme ci -f file1" \
"
Log message unchanged or not specified
a)bort, c)ontinue, e)dit, !)reuse this message unchanged for remaining dirs
Action: (continue) ${PROG} \[[a-z]* aborted\]: aborted by user"
cat >${TESTDIR}/editme <<EOF
#!${TESTSHELL}
sleep 1
cat /dev/null >\$1
exit 0
EOF
chmod +x ${TESTDIR}/editme
dotest_fail editor-emptylog-1 "echo a |${testcvs} -e ${TESTDIR}/editme ci -f file1" \
"
Log message unchanged or not specified
a)bort, c)ontinue, e)dit, !)reuse this message unchanged for remaining dirs
Action: (continue) ${PROG} \[[a-z]* aborted\]: aborted by user"
cat >${TESTDIR}/editme <<EOF
#!${TESTSHELL}
sleep 1
echo >\$1
exit 0
EOF
chmod +x ${TESTDIR}/editme
dotest_fail editor-emptylog-1 "echo a |${testcvs} -e ${TESTDIR}/editme ci -f file1" \
"
Log message unchanged or not specified
a)bort, c)ontinue, e)dit, !)reuse this message unchanged for remaining dirs
Action: (continue) ${PROG} \[[a-z]* aborted\]: aborted by user"
cat >${TESTDIR}/editme <<EOF
#!${TESTSHELL}
sleep 1
cat \$1 >${TESTDIR}/edit.new
mv ${TESTDIR}/edit.new \$1
exit 0
EOF
chmod +x ${TESTDIR}/editme
dotest_fail editor-emptylog-1 "echo a |${testcvs} -e ${TESTDIR}/editme ci -f file1" \
"
Log message unchanged or not specified
a)bort, c)ontinue, e)dit, !)reuse this message unchanged for remaining dirs
Action: (continue) ${PROG} \[[a-z]* aborted\]: aborted by user"
cd ..
dotest editor-emptylog-continue-1 "${testcvs} -q co CVSROOT/loginfo" \
"U CVSROOT/loginfo"
cd CVSROOT
echo 'DEFAULT (echo Start-Log;cat;echo End-Log) >> \$CVSROOT/CVSROOT/commitlog' > loginfo
dotest editor-emptylog-continue-2 "${testcvs} commit -m add loginfo" \
"Checking in loginfo;
${CVSROOT_DIRNAME}/CVSROOT/loginfo,v <-- loginfo
new revision: 1\.2; previous revision: 1\.1
done
${PROG} commit: Rebuilding administrative file database"
cd ../first-dir
cat >${TESTDIR}/editme <<EOF
#!${TESTSHELL}
sleep 1
cp /dev/null \$1
exit 1
EOF
chmod +x ${TESTDIR}/editme
dotest editor-emptylog-continue-3 "echo c |${testcvs} -e ${TESTDIR}/editme ci -f file1" \
"${PROG} [a-z]*: warning: editor session failed
Log message unchanged or not specified
a)bort, c)ontinue, e)dit, !)reuse this message unchanged for remaining dirs
Action: (continue) Checking in file1;
${CVSROOT_DIRNAME}/first-dir/file1,v <-- file1
new revision: 1\.2; previous revision: 1\.1
done"
if $remote; then
dotest editor-emptylog-continue-4r \
"cat ${CVSROOT_DIRNAME}/CVSROOT/commitlog" \
"Start-Log
Update of ${CVSROOT_DIRNAME}/first-dir
In directory ${hostname}:${TMPDIR}/cvs-serv[0-9a-z]*
Modified Files:
file1
Log Message:
End-Log"
else
dotest editor-emptylog-continue-4 \
"cat ${CVSROOT_DIRNAME}/CVSROOT/commitlog" \
"Start-Log
Update of ${CVSROOT_DIRNAME}/first-dir
In directory ${hostname}:${TESTDIR}/1/first-dir
Modified Files:
file1
Log Message:
End-Log"
fi
dotest editor-emptylog-continue-5 "${testcvs} log -N -r1.2 file1" \
"
RCS file: ${CVSROOT_DIRNAME}/first-dir/file1,v
Working file: file1
head: 1\.2
branch:
locks: strict
access list:
keyword substitution: kv
total revisions: 3; selected revisions: 1
description:
----------------------------
revision 1\.2
date: [0-9/]* [0-9:]*; author: ${username}; state: Exp; lines: +0 -0
\*\*\* empty log message \*\*\*
============================================================================="
if $keep; then
echo Keeping ${TESTDIR} and exiting due to --keep
exit 0
fi
rm -f ${CVSROOT_DIRNAME}/CVSROOT/loginfo,v \
${CVSROOT_DIRNAME}/CVSROOT/loginfo \
${CVSROOT_DIRNAME}/CVSROOT/commitlog
dotest editor-emptylog-continue-cleanup-1 "${testcvs} init" ''
cd ../..
rm -r 1
rm ${TESTDIR}/editme
rm -rf ${CVSROOT_DIRNAME}/first-dir
;;
errmsg1)
mkdir ${CVSROOT_DIRNAME}/1dir
mkdir 1
cd 1
if ${testcvs} -q co 1dir; then
pass 162
else
fail 162
fi
cd 1dir
touch foo
if ${testcvs} add foo 2>>${LOGFILE}; then
pass 163
else
fail 163
fi
if ${testcvs} ci -m added >>${LOGFILE} 2>&1; then
pass 164
else
fail 164
fi
cd ../..
mkdir 2
cd 2
if ${testcvs} -q co 1dir >>${LOGFILE}; then
pass 165
else
fail 165
fi
chmod a-w 1dir
cd ../1/1dir
rm foo;
if ${testcvs} rm foo >>${LOGFILE} 2>&1; then
pass 166
else
fail 166
fi
if ${testcvs} ci -m removed >>${LOGFILE} 2>&1; then
pass 167
else
fail 167
fi
cd ../../2/1dir
if $remote; then
dotest errmsg1-168r "${testcvs} -q update" \
"${PROG} update: foo is no longer in the repository
${PROG} update: unable to remove \./foo: Permission denied" \
"${PROG} update: foo is no longer in the repository"
else
dotest errmsg1-168 "${testcvs} -q update" \
"${PROG} update: foo is no longer in the repository
${PROG} update: unable to remove foo: Permission denied" \
"${PROG} update: foo is no longer in the repository"
fi
cd ..
chmod u+w 1dir
cd ..
rm -r 1 2
rm -rf ${CVSROOT_DIRNAME}/1dir
;;
errmsg2)
mkdir 1; cd 1
dotest errmsg2-1 "${testcvs} -q co -l ." ''
mkdir first-dir
dotest errmsg2-2 "${testcvs} add first-dir" \
"Directory ${CVSROOT_DIRNAME}/first-dir added to the repository"
cd first-dir
dotest_fail errmsg2-3 "${testcvs} add CVS" \
"${PROG} [a-z]*: cannot add special file .CVS.; skipping"
touch file1
dotest_fail errmsg2-4 "${testcvs} add CVS file1" \
"${PROG} add: cannot add special file .CVS.; skipping
${PROG} add: scheduling file .file1. for addition
${PROG} add: use .${PROG} commit. to add this file permanently"
dotest_fail errmsg2-5 "${testcvs} add ." \
"${PROG} [a-z]*: cannot add special file .\..; skipping"
dotest_fail errmsg2-6 "${testcvs} add .." \
"${PROG} [a-z]*: cannot add special file .\.\..; skipping"
dotest errmsg2-7 "${testcvs} -q ci -m add-file1" \
"RCS file: ${CVSROOT_DIRNAME}/first-dir/file1,v
done
Checking in file1;
${CVSROOT_DIRNAME}/first-dir/file1,v <-- file1
initial revision: 1\.1
done"
mkdir sdir
cd ..
dotest errmsg2-8 "${testcvs} add first-dir/sdir" \
"Directory ${CVSROOT_DIRNAME}/first-dir/sdir added to the repository"
dotest_fail errmsg2-8a "${testcvs} -q ci first-dir nonexistant" \
"${PROG} [a-z]*: nothing known about .nonexistant'
${PROG} \[[a-z]* aborted\]: correct above errors first!"
dotest_fail errmsg2-8b "${testcvs} -q ci nonexistant first-dir" \
"${PROG} [a-z]*: nothing known about .nonexistant'
${PROG} \[[a-z]* aborted\]: correct above errors first!"
dotest errmsg2-8c "${testcvs} -q ci first-dir" ""
cd first-dir
touch file10
mkdir sdir10
dotest errmsg2-10 "${testcvs} add file10 sdir10" \
"${PROG} add: scheduling file .file10. for addition
Directory ${CVSROOT_DIRNAME}/first-dir/sdir10 added to the repository
${PROG} add: use .${PROG} commit. to add this file permanently"
dotest errmsg2-11 "${testcvs} -q ci -m add-file10" \
"RCS file: ${CVSROOT_DIRNAME}/first-dir/file10,v
done
Checking in file10;
${CVSROOT_DIRNAME}/first-dir/file10,v <-- file10
initial revision: 1\.1
done"
dotest errmsg2-12 "${testcvs} -q update" ""
cd ..
mkdir first-dir/sdir10/ssdir
dotest errmsg2-13 "${testcvs} add first-dir/sdir10/ssdir" \
"Directory ${CVSROOT_DIRNAME}/first-dir/sdir10/ssdir added to the repository"
touch first-dir/sdir10/ssdir/ssfile
dotest errmsg2-14 \
"${testcvs} add first-dir/sdir10/ssdir/ssfile" \
"${PROG} add: scheduling file .first-dir/sdir10/ssdir/ssfile. for addition
${PROG} add: use .${PROG} commit. to add this file permanently"
touch first-dir/file15
dotest errmsg2-15 "${testcvs} add first-dir/file15" \
"${PROG} add: scheduling file .first-dir/file15. for addition
${PROG} add: use .${PROG} commit. to add this file permanently"
mkdir bogus-dir
touch bogus-dir/file16
dotest_fail errmsg2-16 "${testcvs} add bogus-dir/file16" \
"${PROG} add: in directory bogus-dir:
${PROG} \[add aborted\]: there is no version here; do .${PROG} checkout. first" \
"${PROG} add: cannot open CVS/Entries for reading: No such file or directory
${PROG} \[add aborted\]: no repository"
rm -r bogus-dir
dotest errmsg2-17 "${testcvs} -q ci -m checkin" \
"RCS file: ${CVSROOT_DIRNAME}/first-dir/file15,v
done
Checking in first-dir/file15;
${CVSROOT_DIRNAME}/first-dir/file15,v <-- file15
initial revision: 1\.1
done
RCS file: ${CVSROOT_DIRNAME}/first-dir/sdir10/ssdir/ssfile,v
done
Checking in first-dir/sdir10/ssdir/ssfile;
${CVSROOT_DIRNAME}/first-dir/sdir10/ssdir/ssfile,v <-- ssfile
initial revision: 1\.1
done"
dotest errmsg2-18 "${testcvs} -Q tag test" ''
if $remote; then :; else
cd ${CVSROOT_DIRNAME}
dotest_fail errmsg2-20 "${testcvs} import -mtest . A B" \
"${PROG} \[import aborted\]: attempt to import the repository"
dotest_fail errmsg2-21 "${testcvs} import -mtest first-dir A B" \
"${PROG} \[import aborted\]: attempt to import the repository"
fi
cd ..
rm -r 1
rm -rf ${CVSROOT_DIRNAME}/first-dir
;;
adderrmsg)
mkdir 1; cd 1
dotest adderrmsg-init1 "${testcvs} -q co -l ." ''
mkdir adderrmsg-dir
dotest adderrmsg-init2 "${testcvs} add adderrmsg-dir" \
"Directory ${CVSROOT_DIRNAME}/adderrmsg-dir added to the repository"
cd adderrmsg-dir
dotest_fail adderrmsg-1 "${testcvs} add CVS" \
"${PROG} [a-z]*: cannot add special file .CVS.; skipping"
dotest_fail adderrmsg-2 "${testcvs} -q add CVS" ""
touch file1
dotest adderrmsg-3 "${testcvs} add file1" \
"${PROG} add: scheduling file .file1. for addition
${PROG} add: use .${PROG} commit. to add this file permanently"
dotest_fail adderrmsg-4 "${testcvs} add file1" \
"${PROG} add: file1 has already been entered"
dotest_fail adderrmsg-5 "${testcvs} -q add file1" ""
dotest adderrmsg-6 "${testcvs} -q ci -madd" \
"RCS file: ${CVSROOT_DIRNAME}/adderrmsg-dir/file1,v
done
Checking in file1;
${CVSROOT_DIRNAME}/adderrmsg-dir/file1,v <-- file1
initial revision: 1\.1
done"
dotest_fail adderrmsg-7 "${testcvs} add file1" \
"${PROG} add: file1 already exists, with version number 1\.1"
dotest_fail adderrmsg-8 "${testcvs} -q add file1" ""
cd ../..
if $keep; then :; else
rm -r 1
rm -rf ${CVSROOT_DIRNAME}/adderrmsg-dir
fi
;;
opterrmsg)
dotest_fail opterrmsg-1 "${testcvs} -z -n up" \
"${PROG}: gzip compression level must be between 0 and 9"
dotest_fail opterrmsg-2 "${testcvs} -z -1 up" \
"${PROG}: gzip compression level must be between 0 and 9"
dotest_fail opterrmsg-3 "${testcvs} -z10 up" \
"${PROG}: gzip compression level must be between 0 and 9"
;;
devcom)
mkdir ${CVSROOT_DIRNAME}/first-dir
mkdir 1
cd 1
dotest devcom-1 "${testcvs} -q co first-dir"
cd first-dir
echo abb >abb
dotest devcom-2 "${testcvs} add abb" \
"$PROG add: scheduling file \`abb' for addition
$PROG add: use '$PROG commit' to add this file permanently"
dotest devcom-3 "${testcvs} -q ci -m added" \
"RCS file: ${CVSROOT_DIRNAME}/first-dir/abb,v
done
Checking in abb;
${CVSROOT_DIRNAME}/first-dir/abb,v <-- abb
initial revision: 1\.1
done"
dotest_fail devcom-4 "${testcvs} watch" "Usage${DOTSTAR}"
dotest devcom-5 "${testcvs} watch on"
echo abc >abc
dotest devcom-6 "${testcvs} add abc" \
"$PROG add: scheduling file \`abc' for addition
$PROG add: use '$PROG commit' to add this file permanently"
dotest devcom-7 "${testcvs} -q ci -m added" \
"RCS file: ${CVSROOT_DIRNAME}/first-dir/abc,v
done
Checking in abc;
${CVSROOT_DIRNAME}/first-dir/abc,v <-- abc
initial revision: 1\.1
done"
cd ../..
mkdir 2
cd 2
dotest devcom-8 "${testcvs} -q co first-dir" \
"U first-dir/abb
U first-dir/abc"
cd first-dir
dotest_fail devcom-9 "test -w abb"
dotest_fail devcom-9 "test -w abc"
dotest devcom-10 "${testcvs} editors" ""
dotest devcom-11 "${testcvs} edit abb"
dotest devcom-12 "${testcvs} editors" \
"abb ${username} [SMTWF][uoehra][neduit] [JFAMSOND][aepuco][nbrylgptvc] [0-9 ][0-9] [0-9:]* [0-9][0-9][0-9][0-9] GMT [-a-zA-Z_.0-9]* ${TESTDIR}/2/first-dir"
echo aaaa >>abb
dotest devcom-13 "${testcvs} ci -m modify abb" \
"Checking in abb;
${CVSROOT_DIRNAME}/first-dir/abb,v <-- abb
new revision: 1\.2; previous revision: 1\.1
done"
dotest devcom-14 "${testcvs} unedit abb" ''
dotest devcom-15 "${testcvs} editors" ""
dotest_fail devcom-16 "test -w abb"
dotest devcom-17 "${testcvs} edit abc"
dotest devcom-18 "${testcvs} unedit abc"
dotest devcom-19 "${testcvs} edit abc"
echo changedabc >abc
dotest devcom-20 "echo no | ${testcvs} unedit abc" \
"abc has been modified; revert changes? "
dotest devcom-21 "echo changedabc | cmp - abc"
dotest devcom-22 "echo yes | ${testcvs} unedit abc" \
"abc has been modified; revert changes? "
dotest devcom-23 "echo abc | cmp - abc"
dotest devcom-24 "${testcvs} watchers" ''
dotest devcom-a-nonexist "${testcvs} watchers nonexist" ''
dotest devcom-a1 "${testcvs} watch add" ''
dotest devcom-a2 "${testcvs} watchers" \
"abb ${username} edit unedit commit
abc ${username} edit unedit commit"
dotest devcom-a3 "${testcvs} watch remove -a unedit abb" ''
dotest devcom-a4 "${testcvs} watchers abb" \
"abb ${username} edit commit"
dotest devcom-t0 "${testcvs} -q tag tag" \
'T abb
T abc'
cd ../..
mkdir 3
cd 3
: dotest devcom-t-nonexist "${testcvs} watchers nonexist" fixme
dotest devcom-t1 "${testcvs} -q co -rtag first-dir/abb" \
'U first-dir/abb'
cd ..
rm -rf 3
mkdir 3
cd 3
dotest devcom-t2 "${testcvs} -q co -rtag first-dir" \
'U first-dir/abb
U first-dir/abc'
cd ..
rm -rf 3
rm ${CVSROOT_DIRNAME}/CVSROOT/val-tags
mkdir 3
cd 3
dotest devcom-t3 "${testcvs} -q co -rtag first-dir" \
'U first-dir/abb
U first-dir/abc'
cd ..
rm -rf 3
cd 2/first-dir
dotest devcom-b0 "${testcvs} watch off" ''
dotest devcom-b1 "${testcvs} watch remove" ''
dotest_fail devcom-b2 "test -d ${CVSROOT_DIRNAME}/first-dir/CVS"
dotest devcom-some0 "${testcvs} watch on abc" ''
cd ../..
mkdir 3
cd 3
dotest devcom-some1 "${testcvs} -q co first-dir" 'U first-dir/abb
U first-dir/abc'
dotest devcom-some2 "test -w first-dir/abb" ''
dotest_fail devcom-some3 "test -w first-dir/abc" ''
cd ..
if $keep; then
echo Keeping ${TESTDIR} and exiting due to --keep
exit 0
fi
rm -rf 1 2 3
rm -rf ${CVSROOT_DIRNAME}/first-dir
;;
devcom2)
mkdir ${CVSROOT_DIRNAME}/first-dir
mkdir 1
cd 1
dotest devcom2-1 "${testcvs} -q co first-dir" ''
cd first-dir
dotest devcom2-2 "${testcvs} watch on w1" ''
touch w1 w2 w3 nw1
dotest devcom2-3 "${testcvs} add w1 w2 w3 nw1" "${DOTSTAR}"
dotest devcom2-4 "${testcvs} watch on w2" ''
dotest devcom2-5 "${testcvs} -q ci -m add-them" "${DOTSTAR}"
dotest devcom2-6 "${testcvs} watch on w3" ''
cd ../..
mkdir 2
cd 2
dotest devcom2-7 "${testcvs} -q co first-dir" 'U first-dir/nw1
U first-dir/w1
U first-dir/w2
U first-dir/w3'
dotest devcom2-8 "test -w first-dir/nw1" ''
dotest_fail devcom2-9 "test -w first-dir/w1" ''
dotest_fail devcom2-10 "test -w first-dir/w2" ''
dotest_fail devcom2-11 "test -w first-dir/w3" ''
cd first-dir
dotest devcom2-12 "${testcvs} edit w4" \
"${PROG} edit: no such file w4; ignored"
dotest devcom2-13 "${testcvs} watch on" ''
dotest devcom2-14 "${testcvs} edit w5" \
"${PROG} edit: no such file w5; ignored"
dotest devcom2-15 "${testcvs} editors" ''
dotest devcom2-16 "${testcvs} editors w4" ''
dotest devcom2-17 "cat ${CVSROOT_DIRNAME}/first-dir/CVS/fileattr" \
"Fw1 _watched=
Fw2 _watched=
Fw3 _watched=
Fnw1 _watched=
D _watched="
cd ..
dotest devcom2-18 "${testcvs} -q co -d first+dir first-dir" \
"U first${PLUS}dir/nw1
U first${PLUS}dir/w1
U first${PLUS}dir/w2
U first${PLUS}dir/w3"
cd first+dir
dotest_fail devcom2-19 "${testcvs} edit" \
"${PROG} \[[a-z]* aborted\]: current directory (${TESTDIR}/2/first${PLUS}dir) contains an invalid character (${PLUS},>;=\\\\t\\\\n)"
dotest devcom2-20 "cat ${CVSROOT_DIRNAME}/first-dir/CVS/fileattr" \
"Fw1 _watched=
Fw2 _watched=
Fw3 _watched=
Fnw1 _watched=
D _watched="
cd ../..
rm -rf 1 2
rm -rf ${CVSROOT_DIRNAME}/first-dir
;;
devcom3)
mkdir ${CVSROOT_DIRNAME}/first-dir
mkdir 1
cd 1
dotest devcom3-1 "${testcvs} -q co first-dir" ''
cd first-dir
touch w1 w2
dotest devcom3-2 "${testcvs} add w1 w2" "${DOTSTAR}"
dotest devcom3-3 "${testcvs} watch on w1 w2" ''
dotest devcom3-4 "${testcvs} -q ci -m add-them" "${DOTSTAR}"
dotest devcom3-5 "cat ${CVSROOT_DIRNAME}/first-dir/CVS/fileattr" \
"Fw1 _watched=
Fw2 _watched="
cat <<'EOF' >>${CVSROOT_DIRNAME}/first-dir/CVS/fileattr
Enew line here
G@EOF
dotest devcom3-6 "${testcvs} watch off w1" ''
dotest devcom3-7 "cat ${CVSROOT_DIRNAME}/first-dir/CVS/fileattr" \
"Fw2 _watched=
G@#..!@#=&
Enew line here"
echo 'Fw2 duplicate=' >>${CVSROOT_DIRNAME}/first-dir/CVS/fileattr
dotest devcom3-8 "${testcvs} watch on w1" ''
dotest devcom3-9 "cat ${CVSROOT_DIRNAME}/first-dir/CVS/fileattr" \
"Fw2 _watched=
Fw1 _watched=
Enew line here
G@#..!@#=&"
if $remote; then
CVS_SERVER_save=${CVS_SERVER}
CVS_SERVER=${TESTDIR}/cvs-none; export CVS_SERVER
dotest_fail devcom3-9ar "${testcvs} edit w1 2>/dev/null"
dotest devcom3-9br "test -w w1" ""
dotest devcom3-9cr "cat CVS/Notify" \
"Ew1 [SMTWF][uoehra][neduit] [JFAMSOND][aepuco][nbrylgptvc] [0-9 ][0-9] [0-9:]* [0-9][0-9][0-9][0-9] GMT [-a-zA-Z_.0-9]* ${TESTDIR}/1/first-dir EUC"
CVS_SERVER=${CVS_SERVER_save}; export CVS_SERVER
dotest devcom3-9dr "${testcvs} -q update" ""
dotest_fail devcom3-9er "test -f CVS/Notify" ""
dotest devcom3-9fr "${testcvs} watchers w1" \
"w1 ${username} tedit tunedit tcommit"
dotest devcom3-9gr "${testcvs} unedit w1" ""
dotest devcom3-9hr "${testcvs} watchers w1" ""
fi
cd ../..
sed -e 's/Fw2 /Fw2 /' <${CVSROOT_DIRNAME}/first-dir/CVS/fileattr \
>${CVSROOT_DIRNAME}/first-dir/CVS/fileattr.new
mv ${CVSROOT_DIRNAME}/first-dir/CVS/fileattr.new \
${CVSROOT_DIRNAME}/first-dir/CVS/fileattr
mkdir 2; cd 2
dotest_fail devcom3-10 "${testcvs} -Q co ." \
"${PROG} \[checkout aborted\]: file attribute database corruption: tab missing in ${CVSROOT_DIRNAME}/first-dir/CVS/fileattr"
cd ..
rm -rf 1 2
rm -rf ${CVSROOT_DIRNAME}/first-dir
;;
watch4)
mkdir 1; cd 1
dotest watch4-0a "${testcvs} -q co -l ." ''
mkdir first-dir
dotest watch4-0b "${testcvs} add first-dir" \
"Directory ${CVSROOT_DIRNAME}/first-dir added to the repository"
cd first-dir
dotest watch4-1 "${testcvs} watch on" ''
touch file1
dotest watch4-2 "${testcvs} add file1" \
"${PROG} add: scheduling file .file1. for addition
${PROG} add: use .${PROG} commit. to add this file permanently"
dotest watch4-3 "${testcvs} -q ci -m add" \
"RCS file: ${CVSROOT_DIRNAME}/first-dir/file1,v
done
Checking in file1;
${CVSROOT_DIRNAME}/first-dir/file1,v <-- file1
initial revision: 1\.1
done"
mkdir subdir
dotest watch4-4 "${testcvs} add subdir" \
"Directory ${CVSROOT_DIRNAME}/first-dir/subdir added to the repository"
cd subdir
touch sfile
dotest watch4-5 "${testcvs} add sfile" \
"${PROG} add: scheduling file .sfile. for addition
${PROG} add: use .${PROG} commit. to add this file permanently"
dotest watch4-6 "${testcvs} -q ci -m add" \
"RCS file: ${CVSROOT_DIRNAME}/first-dir/subdir/sfile,v
done
Checking in sfile;
${CVSROOT_DIRNAME}/first-dir/subdir/sfile,v <-- sfile
initial revision: 1\.1
done"
cd ../../..
mkdir 2; cd 2
dotest watch4-7 "${testcvs} -q co first-dir" "U first-dir/file1
U first-dir/subdir/sfile"
dotest_fail watch4-8 "test -w first-dir/file1" ''
dotest_fail watch4-9 "test -w first-dir/subdir/sfile" ''
cd first-dir
dotest watch4-10 "${testcvs} edit file1" ''
echo 'edited in 2' >file1
cd ../..
cd 1/first-dir
dotest watch4-11 "${testcvs} edit file1" ''
echo 'edited in 1' >file1
dotest watch4-12 "${testcvs} -q ci -m edit-in-1" \
"Checking in file1;
${CVSROOT_DIRNAME}/first-dir/file1,v <-- file1
new revision: 1\.2; previous revision: 1\.1
done"
cd ../..
cd 2/first-dir
dotest watch4-13 "${testcvs} -q update" \
"RCS file: ${CVSROOT_DIRNAME}/first-dir/file1,v
retrieving revision 1\.1
retrieving revision 1\.2
Merging differences between 1\.1 and 1\.2 into file1
rcsmerge: warning: conflicts during merge
${PROG} update: conflicts found in file1
C file1"
if (echo yes | ${testcvs} unedit file1) >>${LOGFILE}; then
pass watch4-14
else
fail watch4-15
fi
dotest watch4-16 "cat file1" ''
dotest watch4-17 "${testcvs} -q update" "U file1"
dotest watch4-18 "cat file1" "edited in 1"
cd ../..
dotest watch4-cleanup-1 "test -d 1" ''
dotest watch4-cleanup-1 "test -d 2" ''
rm -rf 1 2
rm -rf ${CVSROOT_DIRNAME}/first-dir
;;
watch5)
mkdir watch5; cd watch5
dotest watch5-0a "${testcvs} -q co -l ." ''
mkdir first-dir
dotest watch5-0b "${testcvs} add first-dir" \
"Directory ${CVSROOT_DIRNAME}/first-dir added to the repository"
cd first-dir
dotest watch5-1 "${testcvs} watch on" ''
touch file1
dotest watch5-2 "${testcvs} add file1" \
"${PROG} add: scheduling file .file1. for addition
${PROG} add: use .${PROG} commit. to add this file permanently"
dotest watch5-3 "${testcvs} -q ci -m add" \
"RCS file: ${CVSROOT_DIRNAME}/first-dir/file1,v
done
Checking in file1;
${CVSROOT_DIRNAME}/first-dir/file1,v <-- file1
initial revision: 1\.1
done"
dotest watch5-4 "${testcvs} edit file1" ''
dotest watch5-5 "test -f CVS/Base/file1" ''
if ${testcvs} status file1 >>${LOGFILE} 2>&1; then
pass watch5-6
else
fail watch5-6
fi
dotest watch5-7 "test -f CVS/Base/file1" ''
touch file1
if ${testcvs} status file1 >>${LOGFILE} 2>&1; then
pass watch5-8
else
fail watch5-8
fi
dotest watch5-10 "test -f CVS/Base/file1" ''
touch file1
dotest watch5-11 "${testcvs} -q up" ''
dotest watch5-12 "test -f CVS/Base/file1" ''
cd ../..
rm -r watch5
rm -rf ${CVSROOT_DIRNAME}/first-dir
;;
watch6)
mkdir watch6; cd watch6
dotest watch6-setup-1 "$testcvs -Q co -ldtop ."
cd top
mkdir watch6
dotest watch6-setup-2 "$testcvs -Q add watch6"
cd ..
dotest watch6-setup-3 "$testcvs -Q co watch6"
cd watch6
mkdir subdir
dotest watch6-setup-4 "$testcvs -Q add subdir"
cd subdir
dotest watch6-1 "$testcvs -Q watch add"
dotest watch6-2 \
"grep '_watchers' $CVSROOT_DIRNAME/watch6/subdir/CVS/fileattr >/dev/null"
dotest watch6-3 "$testcvs watch on"
dotest watch6-4 \
"grep '_watchers' $CVSROOT_DIRNAME/watch6/subdir/CVS/fileattr >/dev/null"
dotest watch6-5 \
"grep '_watched' $CVSROOT_DIRNAME/watch6/subdir/CVS/fileattr >/dev/null"
dotest watch6-6 "$testcvs watch off"
dotest watch6-7 \
"grep '_watchers' $CVSROOT_DIRNAME/watch6/subdir/CVS/fileattr >/dev/null"
dotest_fail watch6-8 \
"grep '_watched' $CVSROOT_DIRNAME/watch6/subdir/CVS/fileattr >/dev/null"
dotest watch6-9 "$testcvs watch remove"
dotest_fail watch6-10 \
"test -d $CVSROOT_DIRNAME/test-directory/subdir/CVS"
dotest_fail watch6-11 \
"test -f $CVSROOT_DIRNAME/test-directory/subdir/CVS/fileattr"
echo Hi there >afile
dotest watch6-12 "$testcvs -Q add afile"
dotest watch6-13 "$testcvs ci -m 'A file' afile" \
"RCS file: $CVSROOT_DIRNAME/watch6/subdir/afile,v
done
Checking in afile;
$CVSROOT_DIRNAME/watch6/subdir/afile,v <-- afile
initial revision: 1\.1
done"
dotest watch6-14 "$testcvs -Q watch add"
dotest watch6-15 \
"grep '_watchers' $CVSROOT_DIRNAME/watch6/subdir/CVS/fileattr >/dev/null"
dotest watch6-16 "$testcvs watch on"
dotest watch6-17 \
"grep '_watchers' $CVSROOT_DIRNAME/watch6/subdir/CVS/fileattr >/dev/null"
dotest watch6-18 \
"grep '_watched' $CVSROOT_DIRNAME/watch6/subdir/CVS/fileattr >/dev/null"
dotest watch6-19 "$testcvs watch off"
dotest watch6-20 \
"grep '_watchers' $CVSROOT_DIRNAME/watch6/subdir/CVS/fileattr >/dev/null"
dotest_fail watch6-21 \
"grep '_watched' $CVSROOT_DIRNAME/watch6/subdir/CVS/fileattr >/dev/null"
dotest watch6-22 "$testcvs watch remove"
dotest_fail watch6-23 \
"test -d $CVSROOT_DIRNAME/test-directory/subdir/CVS"
dotest_fail watch6-24 \
"test -f $CVSROOT_DIRNAME/test-directory/subdir/CVS/fileattr"
if $keep; then
echo Keeping $TESTDIR and exiting due to --keep
exit 0
fi
cd ../../..
rm -r watch6
rm -rf $CVSROOT_DIRNAME/watch6
;;
unedit-without-baserev)
mkdir 1; cd 1
module=x
file=m
echo foo > $file
dotest unedit-without-baserev-1 \
"$testcvs -Q import -m . $module X Y" ''
dotest unedit-without-baserev-2 "$testcvs -Q co $module" ''
cd $module
dotest unedit-without-baserev-3 "$testcvs -Q edit $file" ''
echo add a line >> $file
rm -f CVS/Baserev
echo "yes" | dotest unedit-without-baserev-4 "${testcvs} -Q unedit $file" \
"m has been modified; revert changes${QUESTION} ${PROG} unedit: m not mentioned in CVS/Baserev
${PROG} unedit: run update to complete the unedit"
dotest unedit-without-baserev-5 "cat CVS/Entries" \
"/$file/1\.1\.1\.1/${DOTSTAR}"
dotest unedit-without-baserev-6 "${testcvs} -q update" \
"${PROG} update: warning: m was lost
U m"
cd ../..
mkdir 2; cd 2
dotest unedit-without-baserev-7 "${testcvs} -Q co x" ''
cd x
dotest unedit-without-baserev-10 "${testcvs} edit m" ''
echo 'edited in 2' >m
cd ../..
cd 1/x
dotest unedit-without-baserev-11 "${testcvs} edit m" ''
echo 'edited in 1' >m
dotest unedit-without-baserev-12 "${testcvs} -q ci -m edit-in-1" \
"Checking in m;
${CVSROOT_DIRNAME}/x/m,v <-- m
new revision: 1\.2; previous revision: 1\.1
done"
cd ../..
cd 2/x
dotest unedit-without-baserev-13 "${testcvs} -q update" \
"RCS file: ${CVSROOT_DIRNAME}/x/m,v
retrieving revision 1\.1\.1\.1
retrieving revision 1\.2
Merging differences between 1\.1\.1\.1 and 1\.2 into m
rcsmerge: warning: conflicts during merge
${PROG} update: conflicts found in m
C m"
rm CVS/Baserev
dotest unedit-without-baserev-14 "echo yes | ${testcvs} unedit m" \
"m has been modified; revert changes${QUESTION} ${PROG} unedit: m not mentioned in CVS/Baserev
${PROG} unedit: run update to complete the unedit"
dotest unedit-without-baserev-15 "${testcvs} -q update" \
"${PROG} update: warning: m was lost
U m"
dotest unedit-without-baserev-16 "cat m" 'edited in 1'
dotest unedit-without-baserev-17 "${testcvs} -q update" ""
dotest unedit-without-baserev-18 "cat m" "edited in 1"
cd ../..
rm -rf 1
rm -r 2
rm -rf ${CVSROOT_DIRNAME}/$module
;;
ignore)
mkdir ignore
cd ignore
dotest ignore-1 "${testcvs} -q co CVSROOT" "U CVSROOT/${DOTSTAR}"
cd CVSROOT
echo rootig.c >cvsignore
dotest ignore-2 "${testcvs} add cvsignore" \
"${PROG}"' add: scheduling file `cvsignore'"'"' for addition
'"${PROG}"' add: use .'"${PROG}"' commit. to add this file permanently'
dotest ignore-3 " ${testcvs} ci -m added" \
"${PROG} [a-z]*: Examining \.
RCS file: ${CVSROOT_DIRNAME}/CVSROOT/cvsignore,v
done
Checking in cvsignore;
${CVSROOT_DIRNAME}/CVSROOT/cvsignore,v <-- cvsignore
initial revision: 1\.1
done
${PROG} commit: Rebuilding administrative file database"
cd ..
if echo "yes" | ${testcvs} release -d CVSROOT >>${LOGFILE} ; then
pass ignore-4
else
fail ignore-4
fi
CVSIGNORE=envig.c; export CVSIGNORE
mkdir dir-to-import
cd dir-to-import
touch foobar.c bar.c rootig.c defig.o envig.c optig.c
dotest_sort ignore-5 "${testcvs} import -m m -I optig.c ignore/first-dir tag1 tag2" \
'
I ignore/first-dir/defig.o
I ignore/first-dir/envig.c
I ignore/first-dir/optig.c
I ignore/first-dir/rootig.c
N ignore/first-dir/bar.c
N ignore/first-dir/foobar.c
No conflicts created by this import'
dotest_sort ignore-6 "${testcvs} import -m m -I ! ignore/second-dir tag3 tag4" \
'
N ignore/second-dir/bar.c
N ignore/second-dir/defig.o
N ignore/second-dir/envig.c
N ignore/second-dir/foobar.c
N ignore/second-dir/optig.c
N ignore/second-dir/rootig.c
No conflicts created by this import'
cd ..
rm -r dir-to-import
mkdir 1
cd 1
dotest ignore-7 "${testcvs} -q co -dsecond-dir ignore/second-dir" \
'U second-dir/bar.c
U second-dir/defig.o
U second-dir/envig.c
U second-dir/foobar.c
U second-dir/optig.c
U second-dir/rootig.c'
dotest ignore-8 "${testcvs} -q co -dfirst-dir ignore/first-dir" 'U first-dir/bar.c
U first-dir/foobar.c'
cd first-dir
touch rootig.c defig.o envig.c optig.c notig.c
dotest ignore-9 "${testcvs} -q update -I optig.c" "${QUESTION} notig.c"
dotest_sort ignore-10 "${testcvs} -q update -I ! -I CVS" \
"${QUESTION} defig.o
${QUESTION} envig.c
${QUESTION} notig.c
${QUESTION} optig.c
${QUESTION} rootig.c"
rm optig.c
if $remote; then
dotest ignore-11r "${testcvs} -q diff" "${QUESTION} notig.c"
touch bar.c
dotest ignore-11r "${testcvs} -q ci -m commit-it" "${QUESTION} notig.c"
fi
cd ..
echo notig.c >first-dir/.cvsignore
echo foobar.c >second-dir/.cvsignore
touch first-dir/notig.c second-dir/notig.c second-dir/foobar.c
dotest_sort ignore-12 "${testcvs} -qn update" \
"${QUESTION} first-dir/.cvsignore
${QUESTION} second-dir/.cvsignore
${QUESTION} second-dir/notig.c"
dotest_sort ignore-13 "${testcvs} -qn update -I! -I CVS" \
"${QUESTION} first-dir/.cvsignore
${QUESTION} first-dir/defig.o
${QUESTION} first-dir/envig.c
${QUESTION} first-dir/rootig.c
${QUESTION} second-dir/.cvsignore
${QUESTION} second-dir/notig.c"
echo yes | dotest ignore-14 "${testcvs} release -d first-dir" \
"${QUESTION} \.cvsignore
You have \[0\] altered files in this repository.
Are you sure you want to release (and delete) directory .first-dir': "
echo add a line >>second-dir/foobar.c
rm second-dir/notig.c second-dir/.cvsignore
echo yes | dotest ignore-15 "${testcvs} release -d second-dir" \
"M foobar.c
You have \[1\] altered files in this repository.
Are you sure you want to release (and delete) directory .second-dir': "
cd ../..
if $keep; then :; else
rm -r ignore
rm -rf ${CVSROOT_DIRNAME}/ignore
fi
;;
ignore-on-branch)
mkdir ignore-on-branch; cd ignore-on-branch
mkdir $CVSROOT_DIRNAME/ignore-on-branch
dotest ignore-on-branch-setup-1 "$testcvs -q co -dsetup ignore-on-branch" ''
cd setup
echo file1 >file1
dotest ignore-on-branch-setup-2 "$testcvs -q add file1" \
"${PROG} add: use .${PROG} commit. to add this file permanently"
dotest ignore-on-branch-setup-3 "$testcvs -q ci -mfile1 file1" \
"RCS file: $CVSROOT_DIRNAME/ignore-on-branch/file1,v
done
Checking in file1;
$CVSROOT_DIRNAME/ignore-on-branch/file1,v <-- file1
initial revision: 1\.1
done"
dotest ignore-on-branch-setup-4 "$testcvs -q tag -b branch" 'T file1'
echo file2 >file2
dotest ignore-on-branch-setup-5 "$testcvs -q add file2" \
"${PROG} add: use .${PROG} commit. to add this file permanently"
dotest ignore-on-branch-setup-6 "$testcvs -q ci -mtrunk file2" \
"RCS file: $CVSROOT_DIRNAME/ignore-on-branch/file2,v
done
Checking in file2;
$CVSROOT_DIRNAME/ignore-on-branch/file2,v <-- file2
initial revision: 1\.1
done"
cd ..
dotest ignore-on-branch-1 "$testcvs -q co -rbranch ignore-on-branch" \
'U ignore-on-branch/file1'
cd ignore-on-branch
echo file2 on branch >file2
dotest ignore-on-branch-2 "$testcvs -nq update" '? file2'
if $remote; then
dotest ignore-on-branch-3 "$testcvs -q tag -b branch2" \
'? file2
T file1'
else
dotest ignore-on-branch-3 "$testcvs -q tag -b branch2" 'T file1'
fi
dotest ignore-on-branch-4 "$testcvs -q add file2" \
"${PROG} add: use .${PROG} commit. to add this file permanently"
dotest ignore-on-branch-5 "$testcvs -q ci -mbranch file2" \
"Checking in file2;
$CVSROOT_DIRNAME/ignore-on-branch/file2,v <-- file2
new revision: 1\.1\.2\.2; previous revision: 1\.1\.2\.1
done"
dotest ignore-on-branch-6 "$testcvs -q up -rbranch2" \
"${PROG} update: file2 is no longer in the repository"
dotest ignore-on-branch-7 "$testcvs -q up -jbranch" 'U file2'
cd ../..
if $keep; then :; else
rm -r ignore-on-branch
rm -rf $CVSROOT_DIRNAME/ignore-on-branch
fi
;;
binfiles)
mkdir ${CVSROOT_DIRNAME}/first-dir
mkdir 1; cd 1
dotest binfiles-1 "${testcvs} -q co first-dir" ''
${AWK} 'BEGIN { printf "%c%c%c@%c%c", 2, 10, 137, 13, 10 }' \
</dev/null | ${TR} '@' '\000' >binfile.dat
cat binfile.dat binfile.dat >binfile2.dat
cd first-dir
cp ../binfile.dat binfile
dotest binfiles-2 "${testcvs} add -kb binfile" \
"${PROG}"' add: scheduling file `binfile'\'' for addition
'"${PROG}"' add: use .'"${PROG}"' commit. to add this file permanently'
dotest binfiles-3 "${testcvs} -q ci -m add-it" \
"RCS file: ${CVSROOT_DIRNAME}/first-dir/binfile,v
done
Checking in binfile;
${CVSROOT_DIRNAME}/first-dir/binfile,v <-- binfile
initial revision: 1\.1
done"
cd ../..
mkdir 2; cd 2
dotest binfiles-4 "${testcvs} -q co first-dir" 'U first-dir/binfile'
cd first-dir
dotest binfiles-5 "cmp ../../1/binfile.dat binfile" ''
dotest binfiles-5.5 "${testcvs} status binfile" \
"===================================================================
File: binfile Status: Up-to-date
Working revision: 1\.1.*
Repository revision: 1\.1 ${CVSROOT_DIRNAME}/first-dir/binfile,v
Sticky Tag: (none)
Sticky Date: (none)
Sticky Options: -kb"
cd ../..
mkdir 3; cd 3
dotest binfiles-5.5b0 "${testcvs} -q co first-dir/binfile" \
'U first-dir/binfile'
cd first-dir
dotest binfiles-5.5b1 "${testcvs} status binfile" \
"===================================================================
File: binfile Status: Up-to-date
Working revision: 1\.1.*
Repository revision: 1\.1 ${CVSROOT_DIRNAME}/first-dir/binfile,v
Sticky Tag: (none)
Sticky Date: (none)
Sticky Options: -kb"
cd ../..
rm -r 3
cd 2/first-dir
cp ../../1/binfile2.dat binfile
dotest binfiles-6 "${testcvs} -q ci -m modify-it" \
"Checking in binfile;
${CVSROOT_DIRNAME}/first-dir/binfile,v <-- binfile
new revision: 1\.2; previous revision: 1\.1
done"
cd ../../1/first-dir
dotest binfiles-7 "${testcvs} -q update" '[UP] binfile'
dotest binfiles-8 "cmp ../binfile2.dat binfile" ''
cp ../binfile.dat binfile
dotest binfiles-con0 "${testcvs} -q ci -m modify-it" \
"Checking in binfile;
${CVSROOT_DIRNAME}/first-dir/binfile,v <-- binfile
new revision: 1\.3; previous revision: 1\.2
done"
cd ../../2/first-dir
echo 'edits in dir 2' >binfile
dotest binfiles-con1 "${testcvs} -q update" \
"U binfile
${PROG} update: nonmergeable file needs merge
${PROG} update: revision 1\.3 from repository is now in binfile
${PROG} update: file from working directory is now in \.#binfile\.1\.2
C binfile"
dotest binfiles-con2 "cmp binfile ../../1/binfile.dat" ''
dotest binfiles-con3 "cat .#binfile.1.2" 'edits in dir 2'
cp ../../1/binfile2.dat binfile
dotest binfiles-con4 "${testcvs} -q ci -m resolve-it" \
"Checking in binfile;
${CVSROOT_DIRNAME}/first-dir/binfile,v <-- binfile
new revision: 1\.4; previous revision: 1\.3
done"
cd ../../1/first-dir
dotest binfiles-con5 "${testcvs} -q update" '[UP] binfile'
dotest binfiles-9 "${testcvs} -q update -A" ''
dotest binfiles-10 "${testcvs} -q update -kk" '[UP] binfile'
dotest binfiles-11 "${testcvs} -q update" ''
dotest binfiles-12 "${testcvs} -q update -A" '[UP] binfile'
dotest binfiles-13 "${testcvs} -q update -A" ''
cd ../..
mkdir 3
cd 3
dotest binfiles-13a0 "${testcvs} -q co -r HEAD first-dir" \
'U first-dir/binfile'
cd first-dir
dotest binfiles-13a1 "${testcvs} status binfile" \
"===================================================================
File: binfile Status: Up-to-date
Working revision: 1\.4.*
Repository revision: 1\.4 ${CVSROOT_DIRNAME}/first-dir/binfile,v
Sticky Tag: HEAD (revision: 1\.4)
Sticky Date: (none)
Sticky Options: -kb"
cd ../..
rm -r 3
cd 2/first-dir
echo 'this file is $''RCSfile$' >binfile
dotest binfiles-14a "${testcvs} -q ci -m modify-it" \
"Checking in binfile;
${CVSROOT_DIRNAME}/first-dir/binfile,v <-- binfile
new revision: 1\.5; previous revision: 1\.4
done"
dotest binfiles-14b "cat binfile" 'this file is $''RCSfile$'
dotest binfiles-14c "${testcvs} status binfile" \
"===================================================================
File: binfile Status: Up-to-date
Working revision: 1\.5.*
Repository revision: 1\.5 ${CVSROOT_DIRNAME}/first-dir/binfile,v
Sticky Tag: (none)
Sticky Date: (none)
Sticky Options: -kb"
dotest binfiles-14d "${testcvs} admin -kv binfile" \
"RCS file: ${CVSROOT_DIRNAME}/first-dir/binfile,v
done"
dotest binfiles-14e "cat binfile" 'this file is $''RCSfile$'
dotest binfiles-14f "${testcvs} status binfile" \
"===================================================================
File: binfile Status: Up-to-date
Working revision: 1\.5.*
Repository revision: 1\.5 ${CVSROOT_DIRNAME}/first-dir/binfile,v
Sticky Tag: (none)
Sticky Date: (none)
Sticky Options: -kb"
dotest binfiles-14g "${testcvs} -q update -A" '[UP] binfile'
dotest binfiles-14h "cat binfile" 'this file is binfile,v'
dotest binfiles-14i "${testcvs} status binfile" \
"===================================================================
File: binfile Status: Up-to-date
Working revision: 1\.5.*
Repository revision: 1\.5 ${CVSROOT_DIRNAME}/first-dir/binfile,v
Sticky Tag: (none)
Sticky Date: (none)
Sticky Options: -kv"
echo "Not a binary file." > nibfile
dotest binfiles-sticky1 "${testcvs} -q add nibfile" \
"${PROG} add: use .${PROG} commit. to add this file permanently"
dotest binfiles-sticky2 "${testcvs} -q ci -m add-it nibfile" \
"RCS file: ${CVSROOT_DIRNAME}/first-dir/nibfile,v
done
Checking in nibfile;
${CVSROOT_DIRNAME}/first-dir/nibfile,v <-- nibfile
initial revision: 1\.1
done"
dotest binfiles-sticky3 "${testcvs} -q update -kb nibfile" \
'[UP] nibfile'
dotest binfiles-sticky4 "${testcvs} -q status nibfile" \
"===================================================================
File: nibfile Status: Up-to-date
Working revision: 1\.1.*
Repository revision: 1\.1 ${CVSROOT_DIRNAME}/first-dir/nibfile,v
Sticky Tag: (none)
Sticky Date: (none)
Sticky Options: -kb"
dotest binfiles-sticky5 "${testcvs} -q update -A nibfile" \
"[UP] nibfile"
dotest binfiles-sticky6 "${testcvs} -q status nibfile" \
"===================================================================
File: nibfile Status: Up-to-date
Working revision: 1\.1.*
Repository revision: 1\.1 ${CVSROOT_DIRNAME}/first-dir/nibfile,v
Sticky Tag: (none)
Sticky Date: (none)
Sticky Options: (none)"
dotest binfiles-15 "${testcvs} -q admin -kb nibfile" \
"RCS file: ${CVSROOT_DIRNAME}/first-dir/nibfile,v
done"
dotest binfiles-16 "${testcvs} -q update nibfile" "[UP] nibfile"
dotest binfiles-17 "${testcvs} -q status nibfile" \
"===================================================================
File: nibfile Status: Up-to-date
Working revision: 1\.1.*
Repository revision: 1\.1 ${CVSROOT_DIRNAME}/first-dir/nibfile,v
Sticky Tag: (none)
Sticky Date: (none)
Sticky Options: -kb"
dotest binfiles-o1 "${testcvs} admin -o1.3:: binfile" \
"RCS file: ${CVSROOT_DIRNAME}/first-dir/binfile,v
deleting revision 1\.5
deleting revision 1\.4
done"
dotest binfiles-o2 "${testcvs} admin -o::1.3 binfile" \
"RCS file: ${CVSROOT_DIRNAME}/first-dir/binfile,v
deleting revision 1\.2
deleting revision 1\.1
done"
dotest binfiles-o3 "${testcvs} -q log -h -N binfile" "
RCS file: ${CVSROOT_DIRNAME}/first-dir/binfile,v
Working file: binfile
head: 1\.3
branch:
locks: strict
access list:
keyword substitution: v
total revisions: 1
============================================================================="
dotest binfiles-o4 "${testcvs} -q update binfile" "U binfile"
dotest binfiles-o5 "cmp binfile ../../1/binfile.dat" ""
cd ../..
rm -rf ${CVSROOT_DIRNAME}/first-dir
rm -r 1
rm -r 2
;;
binfiles2)
mkdir ${CVSROOT_DIRNAME}/first-dir
mkdir 1; cd 1
dotest binfiles2-1 "${testcvs} -q co first-dir" ''
cd first-dir
${AWK} 'BEGIN { printf "%c%c%c@%c%c", 2, 10, 137, 13, 10 }' \
</dev/null | ${TR} '@' '\000' >../binfile
cat ../binfile ../binfile >../binfile2
cat ../binfile2 ../binfile >../binfile3
cp ../binfile brmod
cp ../binfile brmod-trmod
cp ../binfile brmod-wdmod
dotest binfiles2-1a \
"${testcvs} add -kb brmod brmod-trmod brmod-wdmod" \
"${PROG} add: scheduling file .brmod. for addition
${PROG} add: scheduling file .brmod-trmod. for addition
${PROG} add: scheduling file .brmod-wdmod. for addition
${PROG} add: use .${PROG} commit. to add these files permanently"
dotest binfiles2-1b "${testcvs} -q ci -m add" \
"RCS file: ${CVSROOT_DIRNAME}/first-dir/brmod,v
done
Checking in brmod;
${CVSROOT_DIRNAME}/first-dir/brmod,v <-- brmod
initial revision: 1\.1
done
RCS file: ${CVSROOT_DIRNAME}/first-dir/brmod-trmod,v
done
Checking in brmod-trmod;
${CVSROOT_DIRNAME}/first-dir/brmod-trmod,v <-- brmod-trmod
initial revision: 1\.1
done
RCS file: ${CVSROOT_DIRNAME}/first-dir/brmod-wdmod,v
done
Checking in brmod-wdmod;
${CVSROOT_DIRNAME}/first-dir/brmod-wdmod,v <-- brmod-wdmod
initial revision: 1\.1
done"
dotest binfiles2-2 "${testcvs} -q tag -b br" 'T brmod
T brmod-trmod
T brmod-wdmod'
dotest binfiles2-3 "${testcvs} -q update -r br" ''
cp ../binfile binfile.dat
dotest binfiles2-4 "${testcvs} add -kb binfile.dat" \
"${PROG} add: scheduling file .binfile\.dat. for addition on branch .br.
${PROG} add: use .${PROG} commit. to add this file permanently"
cp ../binfile2 brmod
cp ../binfile2 brmod-trmod
cp ../binfile2 brmod-wdmod
dotest binfiles2-5 "${testcvs} -q ci -m br-changes" \
"RCS file: ${CVSROOT_DIRNAME}/first-dir/Attic/binfile\.dat,v
done
Checking in binfile\.dat;
${CVSROOT_DIRNAME}/first-dir/Attic/binfile\.dat,v <-- binfile\.dat
new revision: 1\.1\.2\.1; previous revision: 1\.1
done
Checking in brmod;
${CVSROOT_DIRNAME}/first-dir/brmod,v <-- brmod
new revision: 1\.1\.2\.1; previous revision: 1\.1
done
Checking in brmod-trmod;
${CVSROOT_DIRNAME}/first-dir/brmod-trmod,v <-- brmod-trmod
new revision: 1\.1\.2\.1; previous revision: 1\.1
done
Checking in brmod-wdmod;
${CVSROOT_DIRNAME}/first-dir/brmod-wdmod,v <-- brmod-wdmod
new revision: 1\.1\.2\.1; previous revision: 1\.1
done"
dotest binfiles2-6 "${testcvs} -q update -A" \
"${PROG} update: binfile\.dat is no longer in the repository
[UP] brmod
[UP] brmod-trmod
[UP] brmod-wdmod"
dotest_fail binfiles2-7 "test -f binfile.dat" ''
dotest binfiles2-7-brmod "cmp ../binfile brmod"
cp ../binfile3 brmod-trmod
dotest binfiles2-7a "${testcvs} -q ci -m tr-modify" \
"Checking in brmod-trmod;
${CVSROOT_DIRNAME}/first-dir/brmod-trmod,v <-- brmod-trmod
new revision: 1\.2; previous revision: 1\.1
done"
cp ../binfile3 brmod-wdmod
dotest binfiles2-8 "${testcvs} -q update -j br" \
"U binfile\.dat
U brmod
${PROG} update: nonmergeable file needs merge
${PROG} update: revision 1.1.2.1 from repository is now in brmod-trmod
${PROG} update: file from working directory is now in .#brmod-trmod.1.2
C brmod-trmod
M brmod-wdmod
${PROG} update: nonmergeable file needs merge
${PROG} update: revision 1.1.2.1 from repository is now in brmod-wdmod
${PROG} update: file from working directory is now in .#brmod-wdmod.1.1
C brmod-wdmod"
dotest binfiles2-9 "cmp ../binfile binfile.dat"
dotest binfiles2-9-brmod "cmp ../binfile2 brmod"
dotest binfiles2-9-brmod-trmod "cmp ../binfile2 brmod-trmod"
dotest binfiles2-9-brmod-trmod "cmp ../binfile2 brmod-wdmod"
dotest binfiles2-9a-brmod-trmod "cmp ../binfile3 .#brmod-trmod.1.2"
dotest binfiles2-9a-brmod-wdmod "cmp ../binfile3 .#brmod-wdmod.1.1"
dotest binfiles2-10 "${testcvs} -q ci -m checkin" \
"Checking in binfile\.dat;
${CVSROOT_DIRNAME}/first-dir/binfile\.dat,v <-- binfile\.dat
new revision: 1\.2; previous revision: 1\.1
done
Checking in brmod;
${CVSROOT_DIRNAME}/first-dir/brmod,v <-- brmod
new revision: 1\.2; previous revision: 1\.1
done
Checking in brmod-trmod;
${CVSROOT_DIRNAME}/first-dir/brmod-trmod,v <-- brmod-trmod
new revision: 1\.3; previous revision: 1\.2
done
Checking in brmod-wdmod;
${CVSROOT_DIRNAME}/first-dir/brmod-wdmod,v <-- brmod-wdmod
new revision: 1\.2; previous revision: 1\.1
done"
dotest_fail binfiles2-o1 "${testcvs} -q admin -o :1.2 brmod-trmod" \
"RCS file: ${CVSROOT_DIRNAME}/first-dir/brmod-trmod,v
deleting revision 1\.2
${PROG} admin: ${CVSROOT_DIRNAME}/first-dir/brmod-trmod,v: can't remove branch point 1\.1
${PROG} admin: RCS file for .brmod-trmod. not modified\."
dotest binfiles2-o2 "${testcvs} -q admin -o 1.1.2.1: brmod-trmod" \
"RCS file: ${CVSROOT_DIRNAME}/first-dir/brmod-trmod,v
deleting revision 1\.1\.2\.1
done"
dotest binfiles2-o3 "${testcvs} -q admin -o :1.2 brmod-trmod" \
"RCS file: ${CVSROOT_DIRNAME}/first-dir/brmod-trmod,v
deleting revision 1\.2
deleting revision 1\.1
done"
dotest binfiles2-o4 "${testcvs} -q log -N brmod-trmod" "
RCS file: ${CVSROOT_DIRNAME}/first-dir/brmod-trmod,v
Working file: brmod-trmod
head: 1\.3
branch:
locks: strict
access list:
keyword substitution: b
total revisions: 1; selected revisions: 1
description:
----------------------------
revision 1\.3
date: [0-9/]* [0-9:]*; author: ${username}; state: Exp;
checkin
============================================================================="
cd ..
cd ..
rm -rf ${CVSROOT_DIRNAME}/first-dir
rm -r 1
;;
binfiles3)
mkdir ${CVSROOT_DIRNAME}/first-dir
mkdir 1; cd 1
dotest binfiles3-1 "${testcvs} -q co first-dir" ''
${AWK} 'BEGIN { printf "%c%c%c@%c%c", 2, 10, 137, 13, 10 }' \
</dev/null | ${TR} '@' '\000' >binfile.dat
cd first-dir
echo hello >file1
dotest binfiles3-2 "${testcvs} add file1" \
"${PROG} add: scheduling file .file1. for addition
${PROG} add: use .${PROG} commit. to add this file permanently"
dotest binfiles3-3 "${testcvs} -q ci -m add-it" \
"RCS file: ${CVSROOT_DIRNAME}/first-dir/file1,v
done
Checking in file1;
${CVSROOT_DIRNAME}/first-dir/file1,v <-- file1
initial revision: 1\.1
done"
rm file1
dotest binfiles3-4 "${testcvs} rm file1" \
"${PROG} remove: scheduling .file1. for removal
${PROG} remove: use .${PROG} commit. to remove this file permanently"
dotest binfiles3-5 "${testcvs} -q ci -m remove-it" \
"Removing file1;
${CVSROOT_DIRNAME}/first-dir/file1,v <-- file1
new revision: delete; previous revision: 1\.1
done"
cp ../binfile.dat file1
dotest binfiles3-6 "${testcvs} add -kb file1" \
"${PROG} add: Re-adding file .file1. (in place of dead revision 1\.2)\.
${PROG} add: use .${PROG} commit. to add this file permanently"
dotest binfiles3-6a "cat CVS/Entries" \
"/file1/0/[A-Za-z0-9 :]*/-kb/
D"
dotest binfiles3-7 "${testcvs} -q ci -m readd-it" \
"${PROG} commit: changing keyword expansion mode to -kb
Checking in file1;
${CVSROOT_DIRNAME}/first-dir/file1,v <-- file1
new revision: 1\.3; previous revision: 1\.2
done"
dotest binfiles3-8 "${testcvs} -q log -h -N file1" "
RCS file: ${CVSROOT_DIRNAME}/first-dir/file1,v
Working file: file1
head: 1\.3
branch:
locks: strict
access list:
keyword substitution: b
total revisions: 3
============================================================================="
cp ${TESTDIR}/1/binfile.dat ${TESTDIR}/1/binfile4.dat
echo '%%$$ cp ${TESTDIR}/1/binfile4.dat ${TESTDIR}/1/binfile5.dat
echo 'aawwee%$$
cp ../binfile4.dat file1
dotest binfiles3-9 "${testcvs} -q ci -m change" \
"Checking in file1;
${CVSROOT_DIRNAME}/first-dir/file1,v <-- file1
new revision: 1\.4; previous revision: 1\.3
done"
cp ../binfile5.dat file1
dotest binfiles3-10 "${testcvs} -q ci -m change" \
"Checking in file1;
${CVSROOT_DIRNAME}/first-dir/file1,v <-- file1
new revision: 1\.5; previous revision: 1\.4
done"
dotest binfiles3-11 "${testcvs} admin -o 1.3::1.5 file1" \
"RCS file: ${CVSROOT_DIRNAME}/first-dir/file1,v
deleting revision 1\.4
done"
dotest binfiles3-12 "${testcvs} -q update -r 1.3 file1" "U file1"
dotest binfiles3-13 "cmp file1 ${TESTDIR}/1/binfile.dat" ""
cd ../..
rm -r 1
rm -rf ${CVSROOT_DIRNAME}/first-dir
;;
mcopy)
if $remote; then :; else
mkdir ${CVSROOT_DIRNAME}/first-dir
mkdir 1; cd 1
dotest mcopy-1 "${testcvs} -q co first-dir" ''
cd first-dir
echo 'brmod initial contents' >brmod
echo 'brmod-trmod initial contents' >brmod-trmod
echo 'brmod-wdmod initial contents' >brmod-wdmod
echo "* -m 'COPY'" >.cvswrappers
dotest mcopy-1a \
"${testcvs} add .cvswrappers brmod brmod-trmod brmod-wdmod" \
"${PROG} add: scheduling file .\.cvswrappers. for addition
${PROG} add: scheduling file .brmod. for addition
${PROG} add: scheduling file .brmod-trmod. for addition
${PROG} add: scheduling file .brmod-wdmod. for addition
${PROG} add: use .${PROG} commit. to add these files permanently"
dotest mcopy-1b "${testcvs} -q ci -m add" \
"RCS file: ${CVSROOT_DIRNAME}/first-dir/\.cvswrappers,v
done
Checking in \.cvswrappers;
${CVSROOT_DIRNAME}/first-dir/\.cvswrappers,v <-- \.cvswrappers
initial revision: 1\.1
done
RCS file: ${CVSROOT_DIRNAME}/first-dir/brmod,v
done
Checking in brmod;
${CVSROOT_DIRNAME}/first-dir/brmod,v <-- brmod
initial revision: 1\.1
done
RCS file: ${CVSROOT_DIRNAME}/first-dir/brmod-trmod,v
done
Checking in brmod-trmod;
${CVSROOT_DIRNAME}/first-dir/brmod-trmod,v <-- brmod-trmod
initial revision: 1\.1
done
RCS file: ${CVSROOT_DIRNAME}/first-dir/brmod-wdmod,v
done
Checking in brmod-wdmod;
${CVSROOT_DIRNAME}/first-dir/brmod-wdmod,v <-- brmod-wdmod
initial revision: 1\.1
done"
CVSWRAPPERS="* -m 'COPY'"
export CVSWRAPPERS
dotest mcopy-2 "${testcvs} -q tag -b br" 'T \.cvswrappers
T brmod
T brmod-trmod
T brmod-wdmod'
dotest mcopy-3 "${testcvs} -q update -r br" ''
echo 'modify brmod on br' >brmod
echo 'modify brmod-trmod on br' >brmod-trmod
echo 'modify brmod-wdmod on br' >brmod-wdmod
dotest mcopy-5 "${testcvs} -q ci -m br-changes" \
"Checking in brmod;
${CVSROOT_DIRNAME}/first-dir/brmod,v <-- brmod
new revision: 1\.1\.2\.1; previous revision: 1\.1
done
Checking in brmod-trmod;
${CVSROOT_DIRNAME}/first-dir/brmod-trmod,v <-- brmod-trmod
new revision: 1\.1\.2\.1; previous revision: 1\.1
done
Checking in brmod-wdmod;
${CVSROOT_DIRNAME}/first-dir/brmod-wdmod,v <-- brmod-wdmod
new revision: 1\.1\.2\.1; previous revision: 1\.1
done"
dotest mcopy-6 "${testcvs} -q update -A" \
"[UP] brmod
[UP] brmod-trmod
[UP] brmod-wdmod"
dotest mcopy-7 "cat brmod brmod-trmod brmod-wdmod" \
"brmod initial contents
brmod-trmod initial contents
brmod-wdmod initial contents"
echo 'modify brmod-trmod again on trunk' >brmod-trmod
dotest mcopy-7a "${testcvs} -q ci -m tr-modify" \
"Checking in brmod-trmod;
${CVSROOT_DIRNAME}/first-dir/brmod-trmod,v <-- brmod-trmod
new revision: 1\.2; previous revision: 1\.1
done"
echo 'modify brmod-wdmod in working dir' >brmod-wdmod
dotest mcopy-8 "${testcvs} -q update -j br" \
"U brmod
${PROG} update: nonmergeable file needs merge
${PROG} update: revision 1.1.2.1 from repository is now in brmod-trmod
${PROG} update: file from working directory is now in .#brmod-trmod.1.2
C brmod-trmod
M brmod-wdmod
${PROG} update: nonmergeable file needs merge
${PROG} update: revision 1.1.2.1 from repository is now in brmod-wdmod
${PROG} update: file from working directory is now in .#brmod-wdmod.1.1
C brmod-wdmod"
dotest mcopy-9 "cat brmod brmod-trmod brmod-wdmod" \
"modify brmod on br
modify brmod-trmod on br
modify brmod-wdmod on br"
dotest mcopy-9a "cat .#brmod-trmod.1.2 .#brmod-wdmod.1.1" \
"modify brmod-trmod again on trunk
modify brmod-wdmod in working dir"
dotest mcopy-10 "${testcvs} -q ci -m checkin" \
"Checking in brmod;
${CVSROOT_DIRNAME}/first-dir/brmod,v <-- brmod
new revision: 1\.2; previous revision: 1\.1
done
Checking in brmod-trmod;
${CVSROOT_DIRNAME}/first-dir/brmod-trmod,v <-- brmod-trmod
new revision: 1\.3; previous revision: 1\.2
done
Checking in brmod-wdmod;
${CVSROOT_DIRNAME}/first-dir/brmod-wdmod,v <-- brmod-wdmod
new revision: 1\.2; previous revision: 1\.1
done"
cd ..
cd ..
rm -rf ${CVSROOT_DIRNAME}/first-dir
rm -r 1
unset CVSWRAPPERS
fi
;;
binwrap)
mkdir dir-to-import
cd dir-to-import
touch foo.c foo.exe
dotest_fail binwrap-0 \
"${testcvs} import -m msg -I ! first-dir dup dup" \
"${PROG} \[[a-z]* aborted\]: tag .dup. was specified more than once"
if ${testcvs} import -m message -I ! -W "*.exe -k 'b'" \
first-dir tag1 tag2 >>${LOGFILE}; then
pass binwrap-1
else
fail binwrap-1
fi
cd ..
rm -r dir-to-import
dotest binwrap-2 "${testcvs} -q co first-dir" 'U first-dir/foo.c
U first-dir/foo.exe'
dotest binwrap-3 "${testcvs} -q status first-dir" \
"===================================================================
File: foo\.c Status: Up-to-date
Working revision: 1\.1\.1\.1.*
Repository revision: 1\.1\.1\.1 ${CVSROOT_DIRNAME}/first-dir/foo\.c,v
Sticky Tag: (none)
Sticky Date: (none)
Sticky Options: (none)
===================================================================
File: foo\.exe Status: Up-to-date
Working revision: 1\.1\.1\.1.*
Repository revision: 1\.1\.1\.1 ${CVSROOT_DIRNAME}/first-dir/foo\.exe,v
Sticky Tag: (none)
Sticky Date: (none)
Sticky Options: -kb"
rm -r first-dir
rm -rf ${CVSROOT_DIRNAME}/first-dir
;;
binwrap2)
mkdir dir-to-import
cd dir-to-import
touch foo.c foo.exe
if ${testcvs} import -m message -I ! \
-W "*.c -k 'o'" -W "* -k 'b'" \
first-dir tag1 tag2 >>${LOGFILE}; then
pass binwrap2-1
else
fail binwrap2-1
fi
cd ..
rm -r dir-to-import
dotest binwrap2-2 "${testcvs} -q co first-dir" 'U first-dir/foo.c
U first-dir/foo.exe'
dotest binwrap2-3 "${testcvs} -q status first-dir" \
"===================================================================
File: foo\.c Status: Up-to-date
Working revision: 1\.1\.1\.1.*
Repository revision: 1\.1\.1\.1 ${CVSROOT_DIRNAME}/first-dir/foo\.c,v
Sticky Tag: (none)
Sticky Date: (none)
Sticky Options: -ko
===================================================================
File: foo\.exe Status: Up-to-date
Working revision: 1\.1\.1\.1.*
Repository revision: 1\.1\.1\.1 ${CVSROOT_DIRNAME}/first-dir/foo\.exe,v
Sticky Tag: (none)
Sticky Date: (none)
Sticky Options: -kb"
rm -r first-dir
rm -rf ${CVSROOT_DIRNAME}/first-dir
;;
binwrap3)
binwrap3_line1="This is a test file "
binwrap3_line2="containing little of use "
binwrap3_line3="except this non-haiku"
binwrap3_text="${binwrap3_line1}${binwrap3_line2}${binwrap3_line3}"
cd ${TESTDIR}
mkdir wnt
cd wnt
mkdir binwrap3 mkdir binwrap3/sub1
mkdir binwrap3/sub2
mkdir binwrap3/sub2/subsub
echo "bar*" > binwrap3/.cvswrappers
echo "*.c0 -k 'b'" >> binwrap3/.cvswrappers
echo "whatever -k 'b'" >> binwrap3/.cvswrappers
echo ${binwrap3_text} > binwrap3/foo-b.c0
echo ${binwrap3_text} > binwrap3/bar-t.c0
echo ${binwrap3_text} > binwrap3/foo-b.sb
echo ${binwrap3_text} > binwrap3/foo-t.sb
echo ${binwrap3_text} > binwrap3/foo-t.c1
echo ${binwrap3_text} > binwrap3/foo-t.st
echo "bar* -k 'kv'" > binwrap3/sub1/.cvswrappers
echo "*.c1 -k 'b'" >> binwrap3/sub1/.cvswrappers
echo "whatever -k 'b'" >> binwrap3/sub1/.cvswrappers
echo ${binwrap3_text} > binwrap3/sub1/foo-b.c1
echo ${binwrap3_text} > binwrap3/sub1/bar-t.c1
echo ${binwrap3_text} > binwrap3/sub1/foo-b.sb
echo ${binwrap3_text} > binwrap3/sub1/foo-t.sb
echo ${binwrap3_text} > binwrap3/sub1/foo-t.c0
echo ${binwrap3_text} > binwrap3/sub1/foo-t.st
echo "bar*" > binwrap3/sub2/.cvswrappers
echo "*.st -k 'b'" >> binwrap3/sub2/.cvswrappers
echo ${binwrap3_text} > binwrap3/sub2/foo-b.sb
echo ${binwrap3_text} > binwrap3/sub2/foo-t.sb
echo ${binwrap3_text} > binwrap3/sub2/foo-b.st
echo ${binwrap3_text} > binwrap3/sub2/bar-t.st
echo ${binwrap3_text} > binwrap3/sub2/foo-t.c0
echo ${binwrap3_text} > binwrap3/sub2/foo-t.c1
echo ${binwrap3_text} > binwrap3/sub2/foo-t.c2
echo ${binwrap3_text} > binwrap3/sub2/foo-t.c3
echo "bar* -k 'kv'" > binwrap3/sub2/subsub/.cvswrappers
echo "*.c3 -k 'b'" >> binwrap3/sub2/subsub/.cvswrappers
echo "foo -k 'b'" >> binwrap3/sub2/subsub/.cvswrappers
echo "c0* -k 'b'" >> binwrap3/sub2/subsub/.cvswrappers
echo ${binwrap3_text} > binwrap3/sub2/subsub/foo-b.c3
echo ${binwrap3_text} > binwrap3/sub2/subsub/bar-t.c3
echo ${binwrap3_text} > binwrap3/sub2/subsub/foo-b.sb
echo ${binwrap3_text} > binwrap3/sub2/subsub/foo-t.sb
echo ${binwrap3_text} > binwrap3/sub2/subsub/foo-t.c0
echo ${binwrap3_text} > binwrap3/sub2/subsub/foo-t.c1
echo ${binwrap3_text} > binwrap3/sub2/subsub/foo-t.c2
echo ${binwrap3_text} > binwrap3/sub2/subsub/foo-t.st
dotest binwrap3-1 "${testcvs} -q co CVSROOT" "[UP] CVSROOT${DOTSTAR}"
cd CVSROOT
echo "foo-t.sb" > cvswrappers
echo "foo*.sb -k 'b'" >> cvswrappers
dotest binwrap3-2 "${testcvs} -q ci -m cvswrappers-mod" \
"Checking in cvswrappers;
${CVSROOT_DIRNAME}/CVSROOT/cvswrappers,v <-- cvswrappers
new revision: 1\.[0-9]*; previous revision: 1\.[0-9]*
done
${PROG} commit: Rebuilding administrative file database"
cd ..
CVSWRAPPERS_save=${CVSWRAPPERS}
unset CVSWRAPPERS
cd binwrap3
dotest binwrap3-2a \
"${testcvs} import -m . -I .cvswrappers binwrap3 tag1 tag2" \
"[NI] ${DOTSTAR}"
cd ..
rm -r binwrap3
dotest binwrap3-2b "${testcvs} co binwrap3" "${DOTSTAR}"
cd binwrap3
cd sub2
echo "*.newbin -k 'b'" > .cvswrappers
echo .cvswrappers >.cvsignore
echo .cvsignore >>.cvsignore
touch file1.newbin file1.txt
dotest binwrap3-2c "${testcvs} add file1.newbin file1.txt" \
"${PROG} add: scheduling file .file1\.newbin. for addition
${PROG} add: scheduling file .file1\.txt. for addition
${PROG} add: use .${PROG} commit. to add these files permanently"
dotest binwrap3-2d "${testcvs} -q ci -m add" \
"RCS file: ${CVSROOT_DIRNAME}/binwrap3/sub2/file1\.newbin,v
done
Checking in file1\.newbin;
${CVSROOT_DIRNAME}/binwrap3/sub2/file1\.newbin,v <-- file1\.newbin
initial revision: 1\.1
done
RCS file: ${CVSROOT_DIRNAME}/binwrap3/sub2/file1\.txt,v
done
Checking in file1\.txt;
${CVSROOT_DIRNAME}/binwrap3/sub2/file1\.txt,v <-- file1\.txt
initial revision: 1\.1
done"
cd ..
cd ..
rm -r binwrap3
dotest binwrap3-3 "${testcvs} co binwrap3" "${DOTSTAR}"
cd binwrap3
dotest binwrap3-top1 "grep foo-b.c0 ./CVS/Entries" \
"/foo-b.c0/1.1.1.1/[A-Za-z0-9 :]*/-kb/"
dotest binwrap3-top2 "grep foo-b.sb ./CVS/Entries" \
"/foo-b.sb/1.1.1.1/[A-Za-z0-9 :]*/-kb/"
dotest binwrap3-top3 "grep foo-t.c1 ./CVS/Entries" \
"/foo-t.c1/1.1.1.1/[A-Za-z0-9 :]*//"
dotest binwrap3-top4 "grep foo-t.st ./CVS/Entries" \
"/foo-t.st/1.1.1.1/[A-Za-z0-9 :]*//"
dotest binwrap3-top5 "grep foo-t.sb ./CVS/Entries" \
"/foo-t.sb/1.1.1.1/[A-Za-z0-9 :]*//"
dotest binwrap3-top6 "grep bar-t.c0 ./CVS/Entries" \
"/bar-t.c0/1.1.1.1/[A-Za-z0-9 :]*//"
dotest binwrap3-sub1-1 "grep foo-b.c1 sub1/CVS/Entries" \
"/foo-b.c1/1.1.1.1/[A-Za-z0-9 :]*/-kb/"
dotest binwrap3-sub1-2 "grep foo-b.sb sub1/CVS/Entries" \
"/foo-b.sb/1.1.1.1/[A-Za-z0-9 :]*/-kb/"
dotest binwrap3-sub1-3 "grep foo-t.c0 sub1/CVS/Entries" \
"/foo-t.c0/1.1.1.1/[A-Za-z0-9 :]*//"
dotest binwrap3-sub1-4 "grep foo-t.st sub1/CVS/Entries" \
"/foo-t.st/1.1.1.1/[A-Za-z0-9 :]*//"
dotest binwrap3-sub1-5 "grep foo-t.sb sub1/CVS/Entries" \
"/foo-t.sb/1.1.1.1/[A-Za-z0-9 :]*//"
dotest binwrap3-sub1-6 "grep bar-t.c1 sub1/CVS/Entries" \
"/bar-t.c1/1.1.1.1/[A-Za-z0-9 :]*//"
dotest binwrap3-sub2-1 "grep foo-b.sb sub2/CVS/Entries" \
"/foo-b.sb/1.1.1.1/[A-Za-z0-9 :]*/-kb/"
dotest binwrap3-sub2-2 "grep foo-b.st sub2/CVS/Entries" \
"/foo-b.st/1.1.1.1/[A-Za-z0-9 :]*/-kb/"
dotest binwrap3-sub2-3 "grep foo-t.c0 sub2/CVS/Entries" \
"/foo-t.c0/1.1.1.1/[A-Za-z0-9 :]*//"
dotest binwrap3-sub2-4 "grep foo-t.c1 sub2/CVS/Entries" \
"/foo-t.c1/1.1.1.1/[A-Za-z0-9 :]*//"
dotest binwrap3-sub2-5 "grep foo-t.c2 sub2/CVS/Entries" \
"/foo-t.c2/1.1.1.1/[A-Za-z0-9 :]*//"
dotest binwrap3-sub2-6 "grep foo-t.c3 sub2/CVS/Entries" \
"/foo-t.c3/1.1.1.1/[A-Za-z0-9 :]*//"
dotest binwrap3-sub2-7 "grep foo-t.sb sub2/CVS/Entries" \
"/foo-t.sb/1.1.1.1/[A-Za-z0-9 :]*//"
dotest binwrap3-sub2-8 "grep bar-t.st sub2/CVS/Entries" \
"/bar-t.st/1.1.1.1/[A-Za-z0-9 :]*//"
dotest binwrap3-subsub1 "grep foo-b.c3 sub2/subsub/CVS/Entries" \
"/foo-b.c3/1.1.1.1/[A-Za-z0-9 :]*/-kb/"
dotest binwrap3-subsub2 "grep foo-b.sb sub2/subsub/CVS/Entries" \
"/foo-b.sb/1.1.1.1/[A-Za-z0-9 :]*/-kb/"
dotest binwrap3-subsub3 "grep foo-t.c0 sub2/subsub/CVS/Entries" \
"/foo-t.c0/1.1.1.1/[A-Za-z0-9 :]*//"
dotest binwrap3-subsub4 "grep foo-t.c1 sub2/subsub/CVS/Entries" \
"/foo-t.c1/1.1.1.1/[A-Za-z0-9 :]*//"
dotest binwrap3-subsub5 "grep foo-t.c2 sub2/subsub/CVS/Entries" \
"/foo-t.c2/1.1.1.1/[A-Za-z0-9 :]*//"
dotest binwrap3-subsub6 "grep foo-t.st sub2/subsub/CVS/Entries" \
"/foo-t.st/1.1.1.1/[A-Za-z0-9 :]*//"
dotest binwrap3-subsub7 "grep foo-t.sb sub2/subsub/CVS/Entries" \
"/foo-t.sb/1.1.1.1/[A-Za-z0-9 :]*//"
dotest binwrap3-subsub8 "grep bar-t.c3 sub2/subsub/CVS/Entries" \
"/bar-t.c3/1.1.1.1/[A-Za-z0-9 :]*//"
dotest binwrap3-sub2-add1 "grep file1.newbin sub2/CVS/Entries" \
"/file1.newbin/1.1/[A-Za-z0-9 :]*/-kb/"
dotest binwrap3-sub2-add2 "grep file1.txt sub2/CVS/Entries" \
"/file1.txt/1.1/[A-Za-z0-9 :]*//"
cd ..
rm -r binwrap3 CVSROOT
cd ..
rm -r wnt
rm -rf ${CVSROOT_DIRNAME}/binwrap3
CVSWRAPPERS=${CVSWRAPPERS_save}
;;
mwrap)
mkdir wnt
cd wnt
dotest mwrap-c1 "${testcvs} -q co CVSROOT" "[UP] CVSROOT${DOTSTAR}"
cd CVSROOT
echo "* -m 'COPY'" >>cvswrappers
dotest mwrap-c2 "${testcvs} -q ci -m wrapper-mod" \
"Checking in cvswrappers;
${CVSROOT_DIRNAME}/CVSROOT/cvswrappers,v <-- cvswrappers
new revision: 1\.[0-9]*; previous revision: 1\.[0-9]*
done
${PROG} commit: Rebuilding administrative file database"
cd ..
mkdir m1; cd m1
dotest mwrap-1 "${testcvs} -q co -l ." ''
mkdir first-dir
dotest mwrap-2 "${testcvs} add first-dir" \
"Directory ${CVSROOT_DIRNAME}/first-dir added to the repository"
cd first-dir
touch aa
dotest mwrap-3 "${testcvs} add aa" \
"${PROG} add: scheduling file .aa. for addition
${PROG} add: use .${PROG} commit. to add this file permanently"
dotest mwrap-4 "${testcvs} -q ci -m add" \
"RCS file: ${CVSROOT_DIRNAME}/first-dir/aa,v
done
Checking in aa;
${CVSROOT_DIRNAME}/first-dir/aa,v <-- aa
initial revision: 1\.1
done"
cd ../..
mkdir m2; cd m2
dotest mwrap-5 "${testcvs} -q co first-dir" "U first-dir/aa"
cd first-dir
echo "changed in m2" >aa
dotest mwrap-6 "${testcvs} -q ci -m m2-mod" \
"Checking in aa;
${CVSROOT_DIRNAME}/first-dir/aa,v <-- aa
new revision: 1\.2; previous revision: 1\.1
done"
cd ../..
cd m1/first-dir
echo "changed in m1" >aa
if $remote; then
dotest mwrap-7 "${testcvs} -nq update" \
"${PROG} update: nonmergeable file needs merge
${PROG} update: revision 1\.2 from repository is now in aa
${PROG} update: file from working directory is now in \.#aa\.1\.1
C aa
U aa"
else
dotest mwrap-7 "${testcvs} -nq update" \
"U aa
${PROG} update: nonmergeable file needs merge
${PROG} update: revision 1\.2 from repository is now in aa
${PROG} update: file from working directory is now in \.#aa\.1\.1
C aa"
fi
dotest mwrap-8 "${testcvs} -q update" \
"U aa
${PROG} update: nonmergeable file needs merge
${PROG} update: revision 1\.2 from repository is now in aa
${PROG} update: file from working directory is now in \.#aa\.1\.1
C aa"
dotest mwrap-9 "cat aa" "changed in m2"
dotest mwrap-10 "cat .#aa.1.1" "changed in m1"
cd ../..
cd CVSROOT
echo ' dotest mwrap-ce "${testcvs} -q ci -m wrapper-mod" \
"Checking in cvswrappers;
${CVSROOT_DIRNAME}/CVSROOT/cvswrappers,v <-- cvswrappers
new revision: 1\.[0-9]*; previous revision: 1\.[0-9]*
done
${PROG} commit: Rebuilding administrative file database"
cd ..
rm -r CVSROOT
rm -r m1 m2
cd ..
rm -r wnt
rm -rf ${CVSROOT_DIRNAME}/first-dir
;;
info)
mkdir wnt
cd wnt
dotest info-1 "${testcvs} -q co CVSROOT" "[UP] CVSROOT${DOTSTAR}"
cd CVSROOT
rm -f $TESTDIR/testlog $TESTDIR/testlog2
echo "ALL sh -c \"echo x\${=MYENV}\${=OTHER}y\${=ZEE}=\$USER=\$CVSROOT= >>$TESTDIR/testlog; cat >/dev/null\"" > loginfo
echo "ALL echo %{sVv} >>$TESTDIR/testlog2; cat >/dev/null" >> loginfo
echo "ALL echo %{v} >>$TESTDIR/testlog2; cat >/dev/null" >> loginfo
echo "ALL echo %s >>$TESTDIR/testlog2; cat >/dev/null" >> loginfo
echo "ALL echo %{V}AX >>$TESTDIR/testlog2; cat >/dev/null" >> loginfo
echo "first-dir echo %sux >>$TESTDIR/testlog2; cat >/dev/null" \
>> loginfo
: dotest info-2 "${testcvs} add loginfo" \
"${PROG}"' add: scheduling file `loginfo'"'"' for addition
'"${PROG}"' add: use .'"${PROG}"' commit. to add this file permanently'
dotest info-3 "${testcvs} -q ci -m new-loginfo" \
"Checking in loginfo;
${CVSROOT_DIRNAME}/CVSROOT/loginfo,v <-- loginfo
new revision: 1\.[0-9]*; previous revision: 1\.[0-9]*
done
${PROG} commit: Rebuilding administrative file database"
cd ..
mkdir ${CVSROOT_DIRNAME}/first-dir
dotest info-5 "${testcvs} -q co first-dir" ''
cd first-dir
touch file1
dotest info-6 "${testcvs} add file1" \
"${PROG}"' add: scheduling file `file1'\'' for addition
'"${PROG}"' add: use .'"${PROG}"' commit. to add this file permanently'
echo "cvs -s OTHER=not-this -s MYENV=env-" >>$HOME/.cvsrc
dotest info-6a "${testcvs} -q -s OTHER=value ci -m add-it" \
"RCS file: ${CVSROOT_DIRNAME}/first-dir/file1,v
done
Checking in file1;
${CVSROOT_DIRNAME}/first-dir/file1,v <-- file1
initial revision: 1\.1
done
${PROG} commit: loginfo:1: no such user variable \${=ZEE}"
echo line0 >>file1
dotest info-6b "${testcvs} -q -sOTHER=foo ci -m mod-it" \
"Checking in file1;
${CVSROOT_DIRNAME}/first-dir/file1,v <-- file1
new revision: 1\.2; previous revision: 1\.1
done
${PROG} commit: loginfo:1: no such user variable \${=ZEE}"
echo line1 >>file1
dotest info-7 "${testcvs} -q -s OTHER=value -s ZEE=z ci -m mod-it" \
"Checking in file1;
${CVSROOT_DIRNAME}/first-dir/file1,v <-- file1
new revision: 1\.3; previous revision: 1\.2
done"
cd ..
dotest info-9 "cat $TESTDIR/testlog" "xenv-valueyz=${username}=${CVSROOT_DIRNAME}="
dotest info-10 "cat $TESTDIR/testlog2" \
'first-dir file1,NONE,1.1
first-dir 1.1
first-dir file1
first-dir NONEAX
first-dir file1ux
first-dir file1,1.1,1.2
first-dir 1.2
first-dir file1
first-dir 1.1AX
first-dir file1ux
first-dir file1,1.2,1.3
first-dir 1.3
first-dir file1
first-dir 1.2AX
first-dir file1ux'
cd CVSROOT
echo ' dotest info-11 "${testcvs} -q -s ZEE=garbage ci -m nuke-loginfo" \
"Checking in loginfo;
${CVSROOT_DIRNAME}/CVSROOT/loginfo,v <-- loginfo
new revision: 1\.[0-9]*; previous revision: 1\.[0-9]*
done
${PROG} commit: Rebuilding administrative file database"
cat >${TESTDIR}/vscript <<EOF
#!${TESTSHELL}
if sed 1q < \$1 | grep '^BugId:[ ]*[0-9][0-9]*$' > /dev/null; then
exit 0
elif sed 1q < \$1 | grep '^BugId:[ ]*new$' > /dev/null; then
echo A new bugid was found. >> \$1
exit 0
else
echo "No BugId found."
sleep 1
exit 1
fi
EOF
cat >${TESTDIR}/vscript2 <<EOF
#!${TESTSHELL}
if test -f CVS/Repository; then
repo=\`cat CVS/Repository\`
else
repo=\`pwd\`
fi
echo \$repo
if echo "\$repo" |grep yet-another/ >/dev/null 2>&1; then
exit 1
else
exit 0
fi
EOF
if test -n "$remotehost"; then
$CVS_RSH $remotehost "chmod +x ${TESTDIR}/vscript*"
else
chmod +x ${TESTDIR}/vscript*
fi
echo "^first-dir/yet-another\\(/\\|\$\\) ${TESTDIR}/vscript2" >>verifymsg
echo "^first-dir\\(/\\|\$\\) ${TESTDIR}/vscript" >>verifymsg
echo "^missing-script\$ ${TESTDIR}/bogus" >>verifymsg
echo "^missing-var\$ ${TESTDIR}/vscript \${=Bogus}" >>verifymsg
dotest info-v1 "${testcvs} -q ci -m add-verification" \
"Checking in verifymsg;
${CVSROOT_DIRNAME}/CVSROOT/verifymsg,v <-- verifymsg
new revision: 1\.[0-9]*; previous revision: 1\.[0-9]*
done
${PROG} commit: Rebuilding administrative file database"
cd ../first-dir
echo line2 >>file1
dotest_fail info-v2 "${testcvs} -q ci -m bogus" \
"No BugId found\.
${PROG} \[commit aborted\]: Message verification failed"
cat >${TESTDIR}/comment.tmp <<EOF
BugId: 42
and many more lines after it
EOF
dotest info-v3 "${testcvs} -q ci -F ${TESTDIR}/comment.tmp" \
"Checking in file1;
${CVSROOT_DIRNAME}/first-dir/file1,v <-- file1
new revision: 1\.4; previous revision: 1\.3
done"
rm ${TESTDIR}/comment.tmp
cd ..
mkdir another-dir
cd another-dir
touch file2
dotest_fail info-v4 \
"${testcvs} import -m bogus first-dir/another x y" \
"No BugId found\.
${PROG} \[import aborted\]: Message verification failed"
dotest info-v5 \
"${testcvs} import -m bogus first-dir/yet-another x y" \
"${TESTDIR}/wnt/another-dir
N first-dir/yet-another/file2
No conflicts created by this import" \
"${CVSROOT_DIRNAME}/first-dir/yet-another
N first-dir/yet-another/file2
No conflicts created by this import"
if $remote; then
dotest_fail info-v6r \
"${testcvs} import -m bogus first-dir/yet-another/and-another x y" \
"${CVSROOT_DIRNAME}/first-dir/yet-another/and-another
${PROG} \[import aborted\]: Message verification failed"
else
dotest info-v6 \
"${testcvs} import -m bogus first-dir/yet-another/and-another x y" \
"${TESTDIR}/wnt/another-dir
N first-dir/yet-another/and-another/file2
No conflicts created by this import"
fi
dotest_fail info-v7 "${testcvs} import -m bogus missing-script x y" \
"${PROG} import: cannot exec ${TESTDIR}/bogus: No such file or directory
${PROG} \[import aborted\]: Message verification failed" \
"${PROG} \[import aborted\]: Message verification failed"
dotest_fail info-v8 "${testcvs} import -m bogus missing-var x y" \
"${PROG} import: verifymsg:25: no such user variable \${=Bogus}
${PROG} \[import aborted\]: Message verification failed"
rm file2
cd ..
rmdir another-dir
cd CVSROOT
echo "RereadLogAfterVerify=always" >>config
dotest info-rereadlog-1 "${testcvs} -q ci -m add-RereadLogAfterVerify=always" \
"Checking in config;
${CVSROOT_DIRNAME}/CVSROOT/config,v <-- config
new revision: 1\.[0-9]*; previous revision: 1\.[0-9]*
done
${PROG} commit: Rebuilding administrative file database"
cd ../first-dir
echo line3 >>file1
cat >${TESTDIR}/comment.tmp <<EOF
BugId: new
See what happens next.
EOF
dotest info-reread-2 "${testcvs} -q ci -F ${TESTDIR}/comment.tmp" \
"Checking in file1;
${CVSROOT_DIRNAME}/first-dir/file1,v <-- file1
new revision: 1\.5; previous revision: 1\.4
done"
dotest info-reread-3 "${testcvs} -q log -N -r1.5 file1" "
.*
BugId: new
See what happens next.
A new bugid was found.
============================================================================="
cd ../CVSROOT
grep -v "RereadLogAfterVerify" config > config.new
mv config.new config
echo "RereadLogAfterVerify=stat" >>config
dotest info-reread-4 "${testcvs} -q ci -m add-RereadLogAfterVerify=stat" \
"Checking in config;
${CVSROOT_DIRNAME}/CVSROOT/config,v <-- config
new revision: 1\.[0-9]*; previous revision: 1\.[0-9]*
done
${PROG} commit: Rebuilding administrative file database"
cd ../first-dir
echo line4 >>file1
cat >${TESTDIR}/comment.tmp <<EOF
BugId: new
See what happens next with stat.
EOF
dotest info-reread-5 "${testcvs} -q ci -F ${TESTDIR}/comment.tmp" \
"Checking in file1;
${CVSROOT_DIRNAME}/first-dir/file1,v <-- file1
new revision: 1\.6; previous revision: 1\.5
done"
dotest info-reread-6 "${testcvs} -q log -N -r1.6 file1" "
.*
BugId: new
See what happens next with stat.
A new bugid was found.
============================================================================="
cd ../CVSROOT
grep -v "RereadLogAfterVerify" config > config.new
mv config.new config
echo "RereadLogAfterVerify=never" >>config
dotest info-reread-7 "${testcvs} -q ci -m add-RereadLogAfterVerify=never" \
"Checking in config;
${CVSROOT_DIRNAME}/CVSROOT/config,v <-- config
new revision: 1\.[0-9]*; previous revision: 1\.[0-9]*
done
${PROG} commit: Rebuilding administrative file database"
cd ../first-dir
echo line5 >>file1
cat >${TESTDIR}/comment.tmp <<EOF
BugId: new
See what happens next.
EOF
dotest info-reread-8 "${testcvs} -q ci -F ${TESTDIR}/comment.tmp" \
"Checking in file1;
${CVSROOT_DIRNAME}/first-dir/file1,v <-- file1
new revision: 1\.7; previous revision: 1\.6
done"
dotest info-reread-6 "${testcvs} -q log -N -r1.7 file1" "
.*
BugId: new
See what happens next.
============================================================================="
cd ../CVSROOT
echo 'DEFAULT false' >verifymsg
echo 'DEFAULT true' >>verifymsg
echo ' dotest info-multdef "${testcvs} -q ci -m multdef" \
"Checking in config;
${CVSROOT_DIRNAME}/CVSROOT/config,v <-- config
new revision: 1\.[0-9]*; previous revision: 1\.[0-9]*
done
Checking in verifymsg;
${CVSROOT_DIRNAME}/CVSROOT/verifymsg,v <-- verifymsg
new revision: 1\.[0-9]*; previous revision: 1\.[0-9]*
done
${PROG} commit: Rebuilding administrative file database"
cd ../CVSROOT
echo ' dotest info-cleanup-verifymsg "${testcvs} -q ci -m nuke-verifymsg" \
"${PROG} commit: Multiple .DEFAULT. lines (1 and 2) in verifymsg file
Checking in verifymsg;
${CVSROOT_DIRNAME}/CVSROOT/verifymsg,v <-- verifymsg
new revision: 1\.[0-9]*; previous revision: 1\.[0-9]*
done
${PROG} commit: Rebuilding administrative file database"
rm ${TESTDIR}/vscript*
cd ..
dotest_fail info-cleanup-0 "${testcvs} -n release -d CVSROOT" \
"${PROG} \[release aborted\]: cannot run command ${DOTSTAR}"
if echo "yes" | ${testcvs} release -d CVSROOT >>${LOGFILE} ; then
pass info-cleanup
else
fail info-cleanup
fi
if echo "yes" | ${testcvs} release -d first-dir >>${LOGFILE} ; then
pass info-cleanup-2
else
fail info-cleanup-2
fi
cd ..
rm -r wnt
rm $HOME/.cvsrc
rm -rf ${CVSROOT_DIRNAME}/first-dir
;;
taginfo)
mkdir 1; cd 1
dotest taginfo-1 "${testcvs} -q co CVSROOT" "U CVSROOT/${DOTSTAR}"
cd CVSROOT
cat >${TESTDIR}/1/loggit <<EOF
#!${TESTSHELL}
if test "\$1" = rejectme; then
exit 1
else
echo "\$@" >>${TESTDIR}/1/taglog
exit 0
fi
EOF
if test -n "$remotehost"; then
$CVS_RSH $remotehost "chmod +x ${TESTDIR}/1/loggit"
else
chmod +x ${TESTDIR}/1/loggit
fi
echo "ALL ${TESTDIR}/1/loggit" >taginfo
dotest taginfo-2 "${testcvs} -q ci -m check-in-taginfo" \
"Checking in taginfo;
${CVSROOT_DIRNAME}/CVSROOT/taginfo,v <-- taginfo
new revision: 1\.2; previous revision: 1\.1
done
${PROG} commit: Rebuilding administrative file database"
cd ..
mkdir ${CVSROOT_DIRNAME}/first-dir
dotest taginfo-3 "${testcvs} -q co first-dir" ''
cd first-dir
echo first >file1
dotest taginfo-4 "${testcvs} add file1" \
"${PROG} add: scheduling file .file1. for addition
${PROG} add: use .${PROG} commit. to add this file permanently"
dotest taginfo-5 "${testcvs} -q ci -m add-it" \
"RCS file: ${CVSROOT_DIRNAME}/first-dir/file1,v
done
Checking in file1;
${CVSROOT_DIRNAME}/first-dir/file1,v <-- file1
initial revision: 1\.1
done"
dotest taginfo-6 "${testcvs} -q tag tag1" "T file1"
dotest taginfo-7 "${testcvs} -q tag -b br" "T file1"
dotest taginfo-8 "${testcvs} -q update -r br" ""
echo add text on branch >>file1
dotest taginfo-9 "${testcvs} -q ci -m modify-on-br" \
"Checking in file1;
${CVSROOT_DIRNAME}/first-dir/file1,v <-- file1
new revision: 1\.1\.2\.1; previous revision: 1\.1
done"
dotest taginfo-10 "${testcvs} -q tag -F -c brtag" "T file1"
dotest_fail taginfo-11 "${testcvs} -q tag rejectme" \
"${PROG} tag: Pre-tag check failed
${PROG} \[tag aborted\]: correct the above errors first!"
dotest taginfo-12 "${testcvs} -nq tag rejectme" "T file1"
dotest taginfo-13 "${testcvs} -nq tag would-be-tag" "T file1"
dotest taginfo-14 "${testcvs} -q tag -d tag1" "D file1"
dotest taginfo-15 "${testcvs} -q tag -d tag1" ""
dotest taginfo-16 "${testcvs} -q rtag tag1 first-dir" ""
dotest taginfo-17 "${testcvs} -q rtag -d tag1 first-dir" ""
dotest taginfo-18 "${testcvs} -q rtag -d tag1 first-dir" ""
dotest taginfo-examine "cat ${TESTDIR}/1/taglog" \
"tag1 add ${CVSROOT_DIRNAME}/first-dir file1 1.1
br add ${CVSROOT_DIRNAME}/first-dir file1 1.1
brtag mov ${CVSROOT_DIRNAME}/first-dir file1 1.1.2.1
tag1 del ${CVSROOT_DIRNAME}/first-dir file1 1.1
tag1 del ${CVSROOT_DIRNAME}/first-dir
tag1 add ${CVSROOT_DIRNAME}/first-dir file1 1.1
tag1 del ${CVSROOT_DIRNAME}/first-dir file1 1.1
tag1 del ${CVSROOT_DIRNAME}/first-dir"
cd ..
cd CVSROOT
echo ' dotest taginfo-cleanup-1 "${testcvs} -q ci -m check-in-taginfo" \
"Checking in taginfo;
${CVSROOT_DIRNAME}/CVSROOT/taginfo,v <-- taginfo
new revision: 1\.3; previous revision: 1\.2
done
${PROG} commit: Rebuilding administrative file database"
cd ..
cd ..
rm -r 1
rm -rf ${CVSROOT_DIRNAME}/first-dir
;;
config)
mkdir wnt
cd wnt
dotest config-1 "${testcvs} -q co CVSROOT" "U CVSROOT/${DOTSTAR}"
cd CVSROOT
echo 'bogus line' >config
dotest config-3 "${testcvs} -q ci -m change-to-bogus-line" \
"Checking in config;
${CVSROOT_DIRNAME}/CVSROOT/config,v <-- config
new revision: 1\.[0-9]*; previous revision: 1\.[0-9]*
done
${PROG} commit: Rebuilding administrative file database"
echo 'BogusOption=yes' >config
dotest config-4 "${testcvs} -q ci -m change-to-bogus-opt" \
"${PROG} [a-z]*: syntax error in ${CVSROOT_DIRNAME}/CVSROOT/config: line 'bogus line' is missing '='
Checking in config;
${CVSROOT_DIRNAME}/CVSROOT/config,v <-- config
new revision: 1\.[0-9]*; previous revision: 1\.[0-9]*
done
${PROG} commit: Rebuilding administrative file database"
echo ' dotest config-5 "${testcvs} -q ci -m change-to-comment" \
"${PROG} [a-z]*: ${CVSROOT_DIRNAME}/CVSROOT/config: unrecognized keyword 'BogusOption'
Checking in config;
${CVSROOT_DIRNAME}/CVSROOT/config,v <-- config
new revision: 1\.[0-9]*; previous revision: 1\.[0-9]*
done
${PROG} commit: Rebuilding administrative file database"
dotest config-6 "${testcvs} -q update" ''
cd ..
rm -r CVSROOT
cd ..
rm -r wnt
;;
serverpatch)
mkdir ${CVSROOT_DIRNAME}/first-dir
mkdir 1
cd 1
dotest serverpatch-1 "${testcvs} -q co first-dir" ''
cd first-dir
echo '$''Name$' > file1
echo '1' >> file1
dotest serverpatch-2 "${testcvs} add file1" \
"${PROG}"' add: scheduling file `file1'\'' for addition
'"${PROG}"' add: use .'"${PROG}"' commit. to add this file permanently'
dotest serverpatch-3 "${testcvs} -q commit -m add" \
"RCS file: ${CVSROOT_DIRNAME}/first-dir/file1,v
done
Checking in file1;
${CVSROOT_DIRNAME}/first-dir/file1,v <-- file1
initial revision: 1\.1
done"
dotest serverpatch-4 "${testcvs} -q tag tag file1" 'T file1'
cd ../..
mkdir 2
cd 2
dotest serverpatch-5 "${testcvs} -q co -r tag first-dir" \
'U first-dir/file1'
dotest serverpatch-6 "${testcvs} -q update -A first-dir" ''
cd ../1/first-dir
echo '2' >> file1
dotest serverpatch-7 "${testcvs} -q ci -mx file1" \
"Checking in file1;
${CVSROOT_DIRNAME}/first-dir/file1,v <-- file1
new revision: 1\.2; previous revision: 1\.1
done"
cd ../../2/first-dir
dotest serverpatch-8 "${testcvs} -q update" \
'U file1' \
"P file1
${PROG} update: checksum failure after patch to \./file1; will refetch
${PROG} client: refetching unpatchable files
${PROG} update: warning: file1 was lost
U file1"
cd ../..
rm -r 1 2
rm -rf ${CVSROOT_DIRNAME}/first-dir
;;
log)
mkdir ${CVSROOT_DIRNAME}/first-dir
dotest log-1 "${testcvs} -q co first-dir" ''
cd first-dir
echo 'first revision' > file1
echo 'first revision' > file2
dotest log-2 "${testcvs} add file1 file2" \
"${PROG} add: scheduling file .file1. for addition
${PROG} add: scheduling file .file2. for addition
${PROG} add: use .${PROG} commit. to add these files permanently"
echo 'line 1 ' >${TESTDIR}/comment.tmp
echo ' ' >>${TESTDIR}/comment.tmp
echo 'line 2 ' >>${TESTDIR}/comment.tmp
echo ' ' >>${TESTDIR}/comment.tmp
echo ' ' >>${TESTDIR}/comment.tmp
dotest log-3 "${testcvs} -q commit -F ${TESTDIR}/comment.tmp" \
"RCS file: ${CVSROOT_DIRNAME}/first-dir/file1,v
done
Checking in file1;
${CVSROOT_DIRNAME}/first-dir/file1,v <-- file1
initial revision: 1\.1
done
RCS file: ${CVSROOT_DIRNAME}/first-dir/file2,v
done
Checking in file2;
${CVSROOT_DIRNAME}/first-dir/file2,v <-- file2
initial revision: 1\.1
done"
rm -f ${TESTDIR}/comment.tmp
echo 'second revision' > file1
echo 'second revision' > file2
dotest log-4 "${testcvs} -q ci -m2 file1 file2" \
"Checking in file1;
${CVSROOT_DIRNAME}/first-dir/file1,v <-- file1
new revision: 1\.2; previous revision: 1\.1
done
Checking in file2;
${CVSROOT_DIRNAME}/first-dir/file2,v <-- file2
new revision: 1\.2; previous revision: 1\.1
done"
dotest log-5 "${testcvs} -q tag -b branch file1" 'T file1'
dotest log-5a "${testcvs} -q tag tag1 file2" 'T file2'
echo 'third revision' > file1
echo 'third revision' > file2
dotest log-6 "${testcvs} -q ci -m3 file1 file2" \
"Checking in file1;
${CVSROOT_DIRNAME}/first-dir/file1,v <-- file1
new revision: 1\.3; previous revision: 1\.2
done
Checking in file2;
${CVSROOT_DIRNAME}/first-dir/file2,v <-- file2
new revision: 1\.3; previous revision: 1\.2
done"
dotest log-6a "${testcvs} -q tag tag2 file2" 'T file2'
dotest log-7 "${testcvs} -q update -r branch" \
"[UP] file1
${PROG} update: file2 is no longer in the repository"
echo 'first branch revision' > file1
dotest log-8 "${testcvs} -q ci -m1b file1" \
"Checking in file1;
${CVSROOT_DIRNAME}/first-dir/file1,v <-- file1
new revision: 1\.2\.2\.1; previous revision: 1\.2
done"
dotest log-9 "${testcvs} -q tag tag file1" 'T file1'
echo 'second branch revision' > file1
dotest log-10 "${testcvs} -q ci -m2b file1" \
"Checking in file1;
${CVSROOT_DIRNAME}/first-dir/file1,v <-- file1
new revision: 1\.2\.2\.2; previous revision: 1\.2\.2\.1
done"
log_header1="
RCS file: ${CVSROOT_DIRNAME}/first-dir/file1,v
Working file: file1
head: 1\.3
branch:
locks: strict
access list:"
rlog_header1="
RCS file: ${CVSROOT_DIRNAME}/first-dir/file1,v
head: 1\.3
branch:
locks: strict
access list:"
log_tags1='symbolic names:
tag: 1\.2\.2\.1
branch: 1\.2\.0\.2'
log_keyword='keyword substitution: kv'
log_dash='----------------------------
revision'
log_date="date: [0-9/]* [0-9:]*; author: ${username}; state: Exp;"
log_lines=" lines: ${PLUS}1 -1"
log_rev1="${log_dash} 1\.1
${log_date}
line 1
line 2"
log_rev2="${log_dash} 1\.2
${log_date}${log_lines}
branches: 1\.2\.2;
2"
log_rev3="${log_dash} 1\.3
${log_date}${log_lines}
3"
log_rev1b="${log_dash} 1\.2\.2\.1
${log_date}${log_lines}
1b"
log_rev2b="${log_dash} 1\.2\.2\.2
${log_date}${log_lines}
2b"
log_trailer='============================================================================='
dotest log-11 "${testcvs} log file1" \
"${log_header1}
${log_tags1}
${log_keyword}
total revisions: 5; selected revisions: 5
description:
${log_rev3}
${log_rev2}
${log_rev1}
${log_rev2b}
${log_rev1b}
${log_trailer}"
dotest log-12 "${testcvs} log -N file1" \
"${log_header1}
${log_keyword}
total revisions: 5; selected revisions: 5
description:
${log_rev3}
${log_rev2}
${log_rev1}
${log_rev2b}
${log_rev1b}
${log_trailer}"
dotest log-13 "${testcvs} log -b file1" \
"${log_header1}
${log_tags1}
${log_keyword}
total revisions: 5; selected revisions: 3
description:
${log_rev3}
${log_rev2}
${log_rev1}
${log_trailer}"
dotest log-14 "${testcvs} log -r file1" \
"${log_header1}
${log_tags1}
${log_keyword}
total revisions: 5; selected revisions: 1
description:
${log_rev3}
${log_trailer}"
dotest log-14a "${testcvs} log -rHEAD file1" \
"${log_header1}
${log_tags1}
${log_keyword}
total revisions: 5; selected revisions: 1
description:
${log_rev3}
${log_trailer}"
dotest_fail log-14b "${testcvs} log -r HEAD file1" \
"${PROG} log: nothing known about HEAD
${log_header1}
${log_tags1}
${log_keyword}
total revisions: 5; selected revisions: 1
description:
${log_rev3}
${log_trailer}"
dotest log-14c "${testcvs} log -r: file1" \
"${log_header1}
${log_tags1}
${log_keyword}
total revisions: 5; selected revisions: 1
description:
${log_rev3}
${log_trailer}"
dotest log-14d "${testcvs} log -r, file1" \
"${log_header1}
${log_tags1}
${log_keyword}
total revisions: 5; selected revisions: 1
description:
${log_rev3}
${log_trailer}"
dotest log-14e "${testcvs} log -r. file1" \
"${log_header1}
${log_tags1}
${log_keyword}
total revisions: 5; selected revisions: 1
description:
${log_rev3}
${log_trailer}"
dotest log-14f "${testcvs} log -r:: file1" \
"${log_header1}
${log_tags1}
${log_keyword}
total revisions: 5; selected revisions: 0
description:
${log_trailer}"
dotest log-15 "${testcvs} log -r1.2 file1" \
"${log_header1}
${log_tags1}
${log_keyword}
total revisions: 5; selected revisions: 1
description:
${log_rev2}
${log_trailer}"
dotest log-16 "${testcvs} log -r1.2.2 file1" \
"${log_header1}
${log_tags1}
${log_keyword}
total revisions: 5; selected revisions: 2
description:
${log_rev2b}
${log_rev1b}
${log_trailer}"
dotest log-17 "${testcvs} log -rbranch file1" \
"${log_header1}
${log_tags1}
${log_keyword}
total revisions: 5; selected revisions: 2
description:
${log_rev2b}
${log_rev1b}
${log_trailer}"
dotest log-18 "${testcvs} log -r1.2.2. file1" \
"${log_header1}
${log_tags1}
${log_keyword}
total revisions: 5; selected revisions: 1
description:
${log_rev2b}
${log_trailer}"
dotest log-18a "${testcvs} log -r1.2.2.2 -r1.3:1.3 file1" \
"${log_header1}
${log_tags1}
${log_keyword}
total revisions: 5; selected revisions: 2
description:
${log_rev3}
${log_rev2b}
${log_trailer}"
dotest log-19 "${testcvs} log -rbranch. file1" \
"${log_header1}
${log_tags1}
${log_keyword}
total revisions: 5; selected revisions: 1
description:
${log_rev2b}
${log_trailer}"
dotest log-20 "${testcvs} log -r1.2: file1" \
"${log_header1}
${log_tags1}
${log_keyword}
total revisions: 5; selected revisions: 2
description:
${log_rev3}
${log_rev2}
${log_trailer}"
dotest log-20a "${testcvs} log -r1.2:: file1" \
"${log_header1}
${log_tags1}
${log_keyword}
total revisions: 5; selected revisions: 1
description:
${log_rev3}
${log_trailer}"
dotest log-21 "${testcvs} log -r:1.2 file1" \
"${log_header1}
${log_tags1}
${log_keyword}
total revisions: 5; selected revisions: 2
description:
${log_rev2}
${log_rev1}
${log_trailer}"
dotest log-21a "${testcvs} log -r::1.2 file1" \
"${log_header1}
${log_tags1}
${log_keyword}
total revisions: 5; selected revisions: 2
description:
${log_rev2}
${log_rev1}
${log_trailer}"
dotest log-22 "${testcvs} log -r1.1:1.2 file1" \
"${log_header1}
${log_tags1}
${log_keyword}
total revisions: 5; selected revisions: 2
description:
${log_rev2}
${log_rev1}
${log_trailer}"
dotest log-22a "${testcvs} log -r1.1::1.2 file1" \
"${log_header1}
${log_tags1}
${log_keyword}
total revisions: 5; selected revisions: 1
description:
${log_rev2}
${log_trailer}"
dotest log-22b "${testcvs} log -r1.1::1.3 file1" \
"${log_header1}
${log_tags1}
${log_keyword}
total revisions: 5; selected revisions: 2
description:
${log_rev3}
${log_rev2}
${log_trailer}"
dotest log-23 "${testcvs} log -rBASE file1" \
"${log_header1}
${log_tags1}
${log_keyword}
total revisions: 5; selected revisions: 1
description:
${log_rev2b}
${log_trailer}"
dotest log-24 "${testcvs} -q up -r1.2 file1" "[UP] file1"
dotest log-25 "${testcvs} log -rBASE file1" \
"${log_header1}
${log_tags1}
${log_keyword}
total revisions: 5; selected revisions: 1
description:
${log_rev2}
${log_trailer}"
dotest log-26 "${testcvs} -q up -rbranch file1" "[UP] file1"
dotest log-r11 "${testcvs} rlog first-dir/file1" \
"${rlog_header1}
${log_tags1}
${log_keyword}
total revisions: 5; selected revisions: 5
description:
${log_rev3}
${log_rev2}
${log_rev1}
${log_rev2b}
${log_rev1b}
${log_trailer}"
dotest log-r12 "${testcvs} rlog -N first-dir/file1" \
"${rlog_header1}
${log_keyword}
total revisions: 5; selected revisions: 5
description:
${log_rev3}
${log_rev2}
${log_rev1}
${log_rev2b}
${log_rev1b}
${log_trailer}"
dotest log-r13 "${testcvs} rlog -b first-dir/file1" \
"${rlog_header1}
${log_tags1}
${log_keyword}
total revisions: 5; selected revisions: 3
description:
${log_rev3}
${log_rev2}
${log_rev1}
${log_trailer}"
dotest log-r14 "${testcvs} rlog -r first-dir/file1" \
"${rlog_header1}
${log_tags1}
${log_keyword}
total revisions: 5; selected revisions: 1
description:
${log_rev3}
${log_trailer}"
dotest log-r14a "${testcvs} rlog -rHEAD first-dir/file1" \
"${rlog_header1}
${log_tags1}
${log_keyword}
total revisions: 5; selected revisions: 1
description:
${log_rev3}
${log_trailer}"
dotest_fail log-r14b "${testcvs} rlog -r HEAD first-dir/file1" \
"${PROG} rlog: cannot find module .HEAD. - ignored
${rlog_header1}
${log_tags1}
${log_keyword}
total revisions: 5; selected revisions: 1
description:
${log_rev3}
${log_trailer}"
dotest log-r14c "${testcvs} rlog -r: first-dir/file1" \
"${rlog_header1}
${log_tags1}
${log_keyword}
total revisions: 5; selected revisions: 1
description:
${log_rev3}
${log_trailer}"
dotest log-r14d "${testcvs} rlog -r, first-dir/file1" \
"${rlog_header1}
${log_tags1}
${log_keyword}
total revisions: 5; selected revisions: 1
description:
${log_rev3}
${log_trailer}"
dotest log-r14e "${testcvs} rlog -r. first-dir/file1" \
"${rlog_header1}
${log_tags1}
${log_keyword}
total revisions: 5; selected revisions: 1
description:
${log_rev3}
${log_trailer}"
dotest log-r14f "${testcvs} rlog -r:: first-dir/file1" \
"${rlog_header1}
${log_tags1}
${log_keyword}
total revisions: 5; selected revisions: 0
description:
${log_trailer}"
dotest log-r15 "${testcvs} rlog -r1.2 first-dir/file1" \
"${rlog_header1}
${log_tags1}
${log_keyword}
total revisions: 5; selected revisions: 1
description:
${log_rev2}
${log_trailer}"
dotest log-r16 "${testcvs} rlog -r1.2.2 first-dir/file1" \
"${rlog_header1}
${log_tags1}
${log_keyword}
total revisions: 5; selected revisions: 2
description:
${log_rev2b}
${log_rev1b}
${log_trailer}"
dotest log-r17 "${testcvs} rlog -rbranch first-dir/file1" \
"${rlog_header1}
${log_tags1}
${log_keyword}
total revisions: 5; selected revisions: 2
description:
${log_rev2b}
${log_rev1b}
${log_trailer}"
dotest log-r18 "${testcvs} rlog -r1.2.2. first-dir/file1" \
"${rlog_header1}
${log_tags1}
${log_keyword}
total revisions: 5; selected revisions: 1
description:
${log_rev2b}
${log_trailer}"
dotest log-r18a "${testcvs} rlog -r1.2.2.2 -r1.3:1.3 first-dir/file1" \
"${rlog_header1}
${log_tags1}
${log_keyword}
total revisions: 5; selected revisions: 2
description:
${log_rev3}
${log_rev2b}
${log_trailer}"
dotest log-r19 "${testcvs} rlog -rbranch. first-dir/file1" \
"${rlog_header1}
${log_tags1}
${log_keyword}
total revisions: 5; selected revisions: 1
description:
${log_rev2b}
${log_trailer}"
dotest log-r20 "${testcvs} rlog -r1.2: first-dir/file1" \
"${rlog_header1}
${log_tags1}
${log_keyword}
total revisions: 5; selected revisions: 2
description:
${log_rev3}
${log_rev2}
${log_trailer}"
dotest log-r20a "${testcvs} rlog -r1.2:: first-dir/file1" \
"${rlog_header1}
${log_tags1}
${log_keyword}
total revisions: 5; selected revisions: 1
description:
${log_rev3}
${log_trailer}"
dotest log-r21 "${testcvs} rlog -r:1.2 first-dir/file1" \
"${rlog_header1}
${log_tags1}
${log_keyword}
total revisions: 5; selected revisions: 2
description:
${log_rev2}
${log_rev1}
${log_trailer}"
dotest log-r21a "${testcvs} rlog -r::1.2 first-dir/file1" \
"${rlog_header1}
${log_tags1}
${log_keyword}
total revisions: 5; selected revisions: 2
description:
${log_rev2}
${log_rev1}
${log_trailer}"
dotest log-r22 "${testcvs} rlog -r1.1:1.2 first-dir/file1" \
"${rlog_header1}
${log_tags1}
${log_keyword}
total revisions: 5; selected revisions: 2
description:
${log_rev2}
${log_rev1}
${log_trailer}"
dotest log-r22a "${testcvs} rlog -r1.1::1.2 first-dir/file1" \
"${rlog_header1}
${log_tags1}
${log_keyword}
total revisions: 5; selected revisions: 1
description:
${log_rev2}
${log_trailer}"
dotest log-r22b "${testcvs} rlog -r1.1::1.3 first-dir/file1" \
"${rlog_header1}
${log_tags1}
${log_keyword}
total revisions: 5; selected revisions: 2
description:
${log_rev3}
${log_rev2}
${log_trailer}"
dotest log-r23 "${testcvs} rlog -rBASE first-dir/file1" \
"${PROG} rlog: warning: no revision .BASE. in .${CVSROOT_DIRNAME}/first-dir/file1,v.
${rlog_header1}
${log_tags1}
${log_keyword}
total revisions: 5; selected revisions: 0
description:
${log_trailer}"
dotest log-r24 "${testcvs} -q up -r1.2 file1" "[UP] file1"
dotest log-r25 "${testcvs} rlog -rBASE first-dir/file1" \
"${PROG} rlog: warning: no revision .BASE. in .${CVSROOT_DIRNAME}/first-dir/file1,v.
${rlog_header1}
${log_tags1}
${log_keyword}
total revisions: 5; selected revisions: 0
description:
${log_trailer}"
dotest log-d0 "${testcvs} -q up -A" \
"[UP] file1
U file2"
dotest log-d1 "${testcvs} -q rm -f file1" \
"${PROG} remove: use .${PROG} commit. to remove this file permanently"
dotest log-d2 "${testcvs} -q ci -m4" \
"Removing file1;
${CVSROOT_DIRNAME}/first-dir/file1,v <-- file1
new revision: delete; previous revision: 1\.3
done"
log_header1="
RCS file: ${CVSROOT_DIRNAME}/first-dir/Attic/file1,v
Working file: file1
head: 1\.4
branch:
locks: strict
access list:"
rlog_header1="
RCS file: ${CVSROOT_DIRNAME}/first-dir/Attic/file1,v
head: 1\.4
branch:
locks: strict
access list:"
log_header2="
RCS file: ${CVSROOT_DIRNAME}/first-dir/file2,v
Working file: file2
head: 1\.3
branch:
locks: strict
access list:"
rlog_header2="
RCS file: ${CVSROOT_DIRNAME}/first-dir/file2,v
head: 1\.3
branch:
locks: strict
access list:"
log_tags2='symbolic names:
tag2: 1\.3
tag1: 1\.2'
log_rev4="${log_dash} 1\.4
date: [0-9/]* [0-9:]*; author: ${username}; state: dead; lines: ${PLUS}0 -0
4"
log_rev22="${log_dash} 1\.2
${log_date}${log_lines}
2"
dotest log-d3 "${testcvs} log -rbranch file1" \
"${log_header1}
${log_tags1}
${log_keyword}
total revisions: 6; selected revisions: 2
description:
${log_rev2b}
${log_rev1b}
${log_trailer}"
dotest log-rd3 "${testcvs} rlog -rbranch first-dir/file1" \
"${rlog_header1}
${log_tags1}
${log_keyword}
total revisions: 6; selected revisions: 2
description:
${log_rev2b}
${log_rev1b}
${log_trailer}"
dotest log-d4 "${testcvs} -q log -rbranch" \
"${log_header1}
${log_tags1}
${log_keyword}
total revisions: 6; selected revisions: 2
description:
${log_rev2b}
${log_rev1b}
${log_trailer}
${PROG} log: warning: no revision .branch. in .${CVSROOT_DIRNAME}/first-dir/file2,v.
${log_header2}
${log_tags2}
${log_keyword}
total revisions: 3; selected revisions: 0
description:
${log_trailer}"
dotest log-d4a "${testcvs} -q log -t -rbranch" \
"${log_header1}
${log_tags1}
${log_keyword}
total revisions: 6
description:
${log_trailer}
${PROG} log: warning: no revision .branch. in .${CVSROOT_DIRNAME}/first-dir/file2,v.
${log_header2}
${log_tags2}
${log_keyword}
total revisions: 3
description:
${log_trailer}"
dotest log-d4b "${testcvs} -q log -tS -rbranch" \
"${log_header1}
${log_tags1}
${log_keyword}
total revisions: 6; selected revisions: 2
description:
${log_trailer}
${PROG} log: warning: no revision .branch. in .${CVSROOT_DIRNAME}/first-dir/file2,v."
dotest log-d4c "${testcvs} -q log -h -rbranch" \
"${log_header1}
${log_tags1}
${log_keyword}
total revisions: 6
${log_trailer}
${PROG} log: warning: no revision .branch. in .${CVSROOT_DIRNAME}/first-dir/file2,v.
${log_header2}
${log_tags2}
${log_keyword}
total revisions: 3
${log_trailer}"
dotest log-d4d "${testcvs} -q log -hS -rbranch" \
"${log_header1}
${log_tags1}
${log_keyword}
total revisions: 6; selected revisions: 2
${log_trailer}
${PROG} log: warning: no revision .branch. in .${CVSROOT_DIRNAME}/first-dir/file2,v."
dotest log-d4e "${testcvs} -q log -R -rbranch" \
"${CVSROOT_DIRNAME}/first-dir/Attic/file1,v
${CVSROOT_DIRNAME}/first-dir/file2,v"
dotest log-d4f "${testcvs} -q log -R -S -rbranch" \
"${CVSROOT_DIRNAME}/first-dir/Attic/file1,v
${PROG} log: warning: no revision .branch. in .${CVSROOT_DIRNAME}/first-dir/file2,v."
dotest log-rd4 "${testcvs} -q rlog -rbranch first-dir" \
"${rlog_header1}
${log_tags1}
${log_keyword}
total revisions: 6; selected revisions: 2
description:
${log_rev2b}
${log_rev1b}
${log_trailer}
${PROG} rlog: warning: no revision .branch. in .${CVSROOT_DIRNAME}/first-dir/file2,v.
${rlog_header2}
${log_tags2}
${log_keyword}
total revisions: 3; selected revisions: 0
description:
${log_trailer}"
dotest log-rd4a "${testcvs} -q rlog -t -rbranch first-dir" \
"${rlog_header1}
${log_tags1}
${log_keyword}
total revisions: 6
description:
${log_trailer}
${PROG} rlog: warning: no revision .branch. in .${CVSROOT_DIRNAME}/first-dir/file2,v.
${rlog_header2}
${log_tags2}
${log_keyword}
total revisions: 3
description:
${log_trailer}"
dotest log-rd4b "${testcvs} -q rlog -St -rbranch first-dir" \
"${rlog_header1}
${log_tags1}
${log_keyword}
total revisions: 6; selected revisions: 2
description:
${log_trailer}
${PROG} rlog: warning: no revision .branch. in .${CVSROOT_DIRNAME}/first-dir/file2,v."
dotest log-rd4c "${testcvs} -q rlog -h -rbranch first-dir" \
"${rlog_header1}
${log_tags1}
${log_keyword}
total revisions: 6
${log_trailer}
${PROG} rlog: warning: no revision .branch. in .${CVSROOT_DIRNAME}/first-dir/file2,v.
${rlog_header2}
${log_tags2}
${log_keyword}
total revisions: 3
${log_trailer}"
dotest log-rd4d "${testcvs} -q rlog -Sh -rbranch first-dir" \
"${rlog_header1}
${log_tags1}
${log_keyword}
total revisions: 6; selected revisions: 2
${log_trailer}
${PROG} rlog: warning: no revision .branch. in .${CVSROOT_DIRNAME}/first-dir/file2,v."
dotest log-rd4e "${testcvs} -q rlog -R -rbranch first-dir" \
"${CVSROOT_DIRNAME}/first-dir/Attic/file1,v
${CVSROOT_DIRNAME}/first-dir/file2,v"
dotest log-rd4f "${testcvs} -q rlog -R -S -rbranch first-dir" \
"${CVSROOT_DIRNAME}/first-dir/Attic/file1,v
${PROG} rlog: warning: no revision .branch. in .${CVSROOT_DIRNAME}/first-dir/file2,v."
dotest log-d5 "${testcvs} log -r1.2.2.1:1.2.2.2 file1" \
"${log_header1}
${log_tags1}
${log_keyword}
total revisions: 6; selected revisions: 2
description:
${log_rev2b}
${log_rev1b}
${log_trailer}"
dotest log-rd5 "${testcvs} rlog -r1.2.2.1:1.2.2.2 first-dir/file1" \
"${rlog_header1}
${log_tags1}
${log_keyword}
total revisions: 6; selected revisions: 2
description:
${log_rev2b}
${log_rev1b}
${log_trailer}"
dotest log-d6 "${testcvs} -q log -r1.2.2.1:1.2.2.2" \
"${log_header1}
${log_tags1}
${log_keyword}
total revisions: 6; selected revisions: 2
description:
${log_rev2b}
${log_rev1b}
${log_trailer}
${log_header2}
${log_tags2}
${log_keyword}
total revisions: 3; selected revisions: 0
description:
${log_trailer}"
dotest log-rd6 "${testcvs} -q rlog -r1.2.2.1:1.2.2.2 first-dir" \
"${rlog_header1}
${log_tags1}
${log_keyword}
total revisions: 6; selected revisions: 2
description:
${log_rev2b}
${log_rev1b}
${log_trailer}
${rlog_header2}
${log_tags2}
${log_keyword}
total revisions: 3; selected revisions: 0
description:
${log_trailer}"
dotest log-d7 "${testcvs} log -r1.2:1.3 file1" \
"${log_header1}
${log_tags1}
${log_keyword}
total revisions: 6; selected revisions: 2
description:
${log_rev3}
${log_rev2}
${log_trailer}"
dotest log-rd7 "${testcvs} -q rlog -r1.2:1.3 first-dir/file1" \
"${rlog_header1}
${log_tags1}
${log_keyword}
total revisions: 6; selected revisions: 2
description:
${log_rev3}
${log_rev2}
${log_trailer}"
dotest log-d8 "${testcvs} -q log -rtag1:tag2" \
"${PROG} log: warning: no revision .tag1. in .${CVSROOT_DIRNAME}/first-dir/Attic/file1,v.
${PROG} log: warning: no revision .tag2. in .${CVSROOT_DIRNAME}/first-dir/Attic/file1,v.
${log_header1}
${log_tags1}
${log_keyword}
total revisions: 6; selected revisions: 0
description:
${log_trailer}
${log_header2}
${log_tags2}
${log_keyword}
total revisions: 3; selected revisions: 2
description:
${log_rev3}
${log_rev22}
${log_trailer}"
dotest log-d8a "${testcvs} -q log -rtag1:tag2 -S" \
"${PROG} log: warning: no revision .tag1. in .${CVSROOT_DIRNAME}/first-dir/Attic/file1,v.
${PROG} log: warning: no revision .tag2. in .${CVSROOT_DIRNAME}/first-dir/Attic/file1,v.
${log_header2}
${log_tags2}
${log_keyword}
total revisions: 3; selected revisions: 2
description:
${log_rev3}
${log_rev22}
${log_trailer}"
dotest log-rd8 "${testcvs} -q rlog -rtag1:tag2 first-dir" \
"${PROG} rlog: warning: no revision .tag1. in .${CVSROOT_DIRNAME}/first-dir/Attic/file1,v.
${PROG} rlog: warning: no revision .tag2. in .${CVSROOT_DIRNAME}/first-dir/Attic/file1,v.
${rlog_header1}
${log_tags1}
${log_keyword}
total revisions: 6; selected revisions: 0
description:
${log_trailer}
${rlog_header2}
${log_tags2}
${log_keyword}
total revisions: 3; selected revisions: 2
description:
${log_rev3}
${log_rev22}
${log_trailer}"
dotest log-rd8a "${testcvs} -q rlog -rtag1:tag2 -S first-dir" \
"${PROG} rlog: warning: no revision .tag1. in .${CVSROOT_DIRNAME}/first-dir/Attic/file1,v.
${PROG} rlog: warning: no revision .tag2. in .${CVSROOT_DIRNAME}/first-dir/Attic/file1,v.
${rlog_header2}
${log_tags2}
${log_keyword}
total revisions: 3; selected revisions: 2
description:
${log_rev3}
${log_rev22}
${log_trailer}"
dotest log-d99 "${testcvs} -q up -rbranch" \
"[UP] file1
${PROG} update: file2 is no longer in the repository"
dotest log-o0 "${testcvs} admin -o 1.2.2.2:: file1" \
"RCS file: ${CVSROOT_DIRNAME}/first-dir/Attic/file1,v
done"
dotest log-o1 "${testcvs} admin -o ::1.2.2.1 file1" \
"RCS file: ${CVSROOT_DIRNAME}/first-dir/Attic/file1,v
done"
dotest log-o2 "${testcvs} admin -o 1.2.2.1:: file1" \
"RCS file: ${CVSROOT_DIRNAME}/first-dir/Attic/file1,v
deleting revision 1\.2\.2\.2
done"
dotest log-o3 "${testcvs} log file1" \
"${log_header1}
${log_tags1}
${log_keyword}
total revisions: 5; selected revisions: 5
description:
${log_rev4}
${log_rev3}
${log_rev2}
${log_rev1}
${log_rev1b}
${log_trailer}"
dotest log-ro3 "${testcvs} rlog first-dir/file1" \
"${rlog_header1}
${log_tags1}
${log_keyword}
total revisions: 5; selected revisions: 5
description:
${log_rev4}
${log_rev3}
${log_rev2}
${log_rev1}
${log_rev1b}
${log_trailer}"
dotest log-o4 "${testcvs} -q update -p -r 1.2.2.1 file1" \
"first branch revision"
cd ..
rm -r first-dir
rm -rf ${CVSROOT_DIRNAME}/first-dir
;;
log2)
mkdir ${CVSROOT_DIRNAME}/first-dir
dotest log2-1 "${testcvs} -q co first-dir" ''
cd first-dir
echo 'first revision' > file1
dotest log2-2 "${testcvs} add -m file1-is-for-testing file1" \
"${PROG}"' add: scheduling file `file1'\'' for addition
'"${PROG}"' add: use .'"${PROG}"' commit. to add this file permanently'
dotest log2-3 "${testcvs} -q commit -m 1" \
"RCS file: ${CVSROOT_DIRNAME}/first-dir/file1,v
done
Checking in file1;
${CVSROOT_DIRNAME}/first-dir/file1,v <-- file1
initial revision: 1\.1
done"
if $remote; then :; else
dotest log2-4 "${testcvs} log -N file1" "
RCS file: ${CVSROOT_DIRNAME}/first-dir/file1,v
Working file: file1
head: 1\.1
branch:
locks: strict
access list:
keyword substitution: kv
total revisions: 1; selected revisions: 1
description:
file1-is-for-testing
----------------------------
revision 1\.1
date: [0-9/]* [0-9:]*; author: ${username}; state: Exp;
1
============================================================================="
fi
dotest log2-5 "${testcvs} admin -t-change-description file1" \
"RCS file: ${CVSROOT_DIRNAME}/first-dir/file1,v
done"
dotest log2-6 "${testcvs} log -N file1" "
RCS file: ${CVSROOT_DIRNAME}/first-dir/file1,v
Working file: file1
head: 1\.1
branch:
locks: strict
access list:
keyword substitution: kv
total revisions: 1; selected revisions: 1
description:
change-description
----------------------------
revision 1\.1
date: [0-9/]* [0-9:]*; author: ${username}; state: Exp;
1
============================================================================="
echo 'longer description' >${TESTDIR}/descrip
echo 'with two lines' >>${TESTDIR}/descrip
dotest log2-7 "${testcvs} admin -t${TESTDIR}/descrip file1" \
"RCS file: ${CVSROOT_DIRNAME}/first-dir/file1,v
done"
dotest_fail log2-7a "${testcvs} admin -t${TESTDIR}/nonexist file1" \
"${PROG} \[[a-z]* aborted\]: can't stat ${TESTDIR}/nonexist: No such file or directory"
dotest log2-8 "${testcvs} log -N file1" "
RCS file: ${CVSROOT_DIRNAME}/first-dir/file1,v
Working file: file1
head: 1\.1
branch:
locks: strict
access list:
keyword substitution: kv
total revisions: 1; selected revisions: 1
description:
longer description
with two lines
----------------------------
revision 1\.1
date: [0-9/]* [0-9:]*; author: ${username}; state: Exp;
1
============================================================================="
dotest log2-9 "echo change from stdin | ${testcvs} admin -t -q file1" ""
dotest log2-10 "${testcvs} log -N file1" "
RCS file: ${CVSROOT_DIRNAME}/first-dir/file1,v
Working file: file1
head: 1\.1
branch:
locks: strict
access list:
keyword substitution: kv
total revisions: 1; selected revisions: 1
description:
change from stdin
----------------------------
revision 1\.1
date: [0-9/]* [0-9:]*; author: ${username}; state: Exp;
1
============================================================================="
cd ..
rm ${TESTDIR}/descrip
rm -r first-dir
rm -rf ${CVSROOT_DIRNAME}/first-dir
;;
logopt)
mkdir 1; cd 1
dotest logopt-1 "${testcvs} -q co -l ." ''
mkdir first-dir
dotest logopt-2 "${testcvs} add first-dir" \
"Directory ${CVSROOT_DIRNAME}/first-dir added to the repository"
cd first-dir
echo hi >file1
dotest logopt-3 "${testcvs} add file1" \
"${PROG} add: scheduling file .file1. for addition
${PROG} add: use .${PROG} commit. to add this file permanently"
dotest logopt-4 "${testcvs} -q ci -m add file1" \
"RCS file: ${CVSROOT_DIRNAME}/first-dir/file1,v
done
Checking in file1;
${CVSROOT_DIRNAME}/first-dir/file1,v <-- file1
initial revision: 1\.1
done"
cd ..
dotest logopt-5 "${testcvs} log -R -d 2038-01-01" \
"${PROG} log: Logging \.
${PROG} log: Logging first-dir
${CVSROOT_DIRNAME}/first-dir/file1,v"
dotest logopt-6 "${testcvs} log -d 2038-01-01 -R" \
"${PROG} log: Logging \.
${PROG} log: Logging first-dir
${CVSROOT_DIRNAME}/first-dir/file1,v"
dotest logopt-6a "${testcvs} log -Rd 2038-01-01" \
"${PROG} log: Logging \.
${PROG} log: Logging first-dir
${CVSROOT_DIRNAME}/first-dir/file1,v"
dotest logopt-7 "${testcvs} log -s Exp -R" \
"${PROG} log: Logging \.
${PROG} log: Logging first-dir
${CVSROOT_DIRNAME}/first-dir/file1,v"
cd ..
rm -r 1
rm -rf ${CVSROOT_DIRNAME}/first-dir
;;
ann)
mkdir 1; cd 1
dotest ann-1 "${testcvs} -q co -l ." ''
mkdir first-dir
dotest ann-2 "${testcvs} add first-dir" \
"Directory ${CVSROOT_DIRNAME}/first-dir added to the repository"
cd first-dir
cat >file1 <<EOF
this
is
the
ancestral
file
EOF
dotest ann-3 "${testcvs} add file1" \
"${PROG} add: scheduling file .file1. for addition
${PROG} add: use .${PROG} commit. to add this file permanently"
dotest ann-4 "${testcvs} -q ci -m add file1" \
"RCS file: ${CVSROOT_DIRNAME}/first-dir/file1,v
done
Checking in file1;
${CVSROOT_DIRNAME}/first-dir/file1,v <-- file1
initial revision: 1\.1
done"
cat >file1 <<EOF
this
is
a
file
with
a
blank
line
EOF
dotest ann-5 "${testcvs} -q ci -m modify file1" \
"Checking in file1;
${CVSROOT_DIRNAME}/first-dir/file1,v <-- file1
new revision: 1\.2; previous revision: 1\.1
done"
dotest ann-6 "${testcvs} -q tag -b br" "T file1"
cat >file1 <<EOF
this
is
a
trunk file
with
a
blank
line
EOF
dotest ann-7 "${testcvs} -q ci -m modify file1" \
"Checking in file1;
${CVSROOT_DIRNAME}/first-dir/file1,v <-- file1
new revision: 1\.3; previous revision: 1\.2
done"
dotest ann-8 "${testcvs} -q update -r br" "[UP] file1"
cat >file1 <<EOF
this
is
a
file
with
a
blank
line
and some
branched content
EOF
dotest ann-9 "${testcvs} -q ci -m modify" \
"Checking in file1;
${CVSROOT_DIRNAME}/first-dir/file1,v <-- file1
new revision: 1\.2\.2\.1; previous revision: 1\.2
done"
dotest ann-10 "${testcvs} ann" \
"
Annotations for file1
\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*
1\.1 (${username} *[0-9a-zA-Z-]*): this
1\.1 (${username} *[0-9a-zA-Z-]*): is
1\.2 (${username} *[0-9a-zA-Z-]*): a
1\.3 (${username} *[0-9a-zA-Z-]*): trunk file
1\.2 (${username} *[0-9a-zA-Z-]*):
1\.2 (${username} *[0-9a-zA-Z-]*): with
1\.2 (${username} *[0-9a-zA-Z-]*): a
1\.2 (${username} *[0-9a-zA-Z-]*): blank
1\.2 (${username} *[0-9a-zA-Z-]*): line"
dotest ann-11 "${testcvs} ann -r br" \
"
Annotations for file1
\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*
1\.1 (${username} *[0-9a-zA-Z-]*): this
1\.1 (${username} *[0-9a-zA-Z-]*): is
1\.2 (${username} *[0-9a-zA-Z-]*): a
1\.1 (${username} *[0-9a-zA-Z-]*): file
1\.2 (${username} *[0-9a-zA-Z-]*):
1\.2 (${username} *[0-9a-zA-Z-]*): with
1\.2 (${username} *[0-9a-zA-Z-]*): a
1\.2 (${username} *[0-9a-zA-Z-]*): blank
1\.2 (${username} *[0-9a-zA-Z-]*): line
1\.2\.2\.1 (${username} *[0-9a-zA-Z-]*): and some
1\.2\.2\.1 (${username} *[0-9a-zA-Z-]*): branched content"
dotest ann-12 "${testcvs} ann -r 1.2.0.2 file1" ""
dotest ann-13 "${testcvs} ann -r 1.2.2 file1" \
"
Annotations for file1
\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*
1\.1 (${username} *[0-9a-zA-Z-]*): this
1\.1 (${username} *[0-9a-zA-Z-]*): is
1\.2 (${username} *[0-9a-zA-Z-]*): a
1\.1 (${username} *[0-9a-zA-Z-]*): file
1\.2 (${username} *[0-9a-zA-Z-]*):
1\.2 (${username} *[0-9a-zA-Z-]*): with
1\.2 (${username} *[0-9a-zA-Z-]*): a
1\.2 (${username} *[0-9a-zA-Z-]*): blank
1\.2 (${username} *[0-9a-zA-Z-]*): line
1\.2\.2\.1 (${username} *[0-9a-zA-Z-]*): and some
1\.2\.2\.1 (${username} *[0-9a-zA-Z-]*): branched content"
dotest_fail ann-14 "${testcvs} ann -r bill-clintons-chastity file1" \
"${PROG} \[annotate aborted\]: no such tag bill-clintons-chastity"
cd ../..
rm -r 1
dotest ann-r10 "${testcvs} rann first-dir" \
"
Annotations for first-dir/file1
\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*
1\.1 (${username} *[0-9a-zA-Z-]*): this
1\.1 (${username} *[0-9a-zA-Z-]*): is
1\.2 (${username} *[0-9a-zA-Z-]*): a
1\.3 (${username} *[0-9a-zA-Z-]*): trunk file
1\.2 (${username} *[0-9a-zA-Z-]*):
1\.2 (${username} *[0-9a-zA-Z-]*): with
1\.2 (${username} *[0-9a-zA-Z-]*): a
1\.2 (${username} *[0-9a-zA-Z-]*): blank
1\.2 (${username} *[0-9a-zA-Z-]*): line"
dotest ann-r11 "${testcvs} rann -r br first-dir" \
"
Annotations for first-dir/file1
\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*
1\.1 (${username} *[0-9a-zA-Z-]*): this
1\.1 (${username} *[0-9a-zA-Z-]*): is
1\.2 (${username} *[0-9a-zA-Z-]*): a
1\.1 (${username} *[0-9a-zA-Z-]*): file
1\.2 (${username} *[0-9a-zA-Z-]*):
1\.2 (${username} *[0-9a-zA-Z-]*): with
1\.2 (${username} *[0-9a-zA-Z-]*): a
1\.2 (${username} *[0-9a-zA-Z-]*): blank
1\.2 (${username} *[0-9a-zA-Z-]*): line
1\.2\.2\.1 (${username} *[0-9a-zA-Z-]*): and some
1\.2\.2\.1 (${username} *[0-9a-zA-Z-]*): branched content"
dotest ann-r12 "${testcvs} rann -r 1.2.0.2 first-dir/file1" ""
dotest ann-r13 "${testcvs} rann -r 1.2.2 first-dir/file1" \
"
Annotations for first-dir/file1
\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*
1\.1 (${username} *[0-9a-zA-Z-]*): this
1\.1 (${username} *[0-9a-zA-Z-]*): is
1\.2 (${username} *[0-9a-zA-Z-]*): a
1\.1 (${username} *[0-9a-zA-Z-]*): file
1\.2 (${username} *[0-9a-zA-Z-]*):
1\.2 (${username} *[0-9a-zA-Z-]*): with
1\.2 (${username} *[0-9a-zA-Z-]*): a
1\.2 (${username} *[0-9a-zA-Z-]*): blank
1\.2 (${username} *[0-9a-zA-Z-]*): line
1\.2\.2\.1 (${username} *[0-9a-zA-Z-]*): and some
1\.2\.2\.1 (${username} *[0-9a-zA-Z-]*): branched content"
dotest_fail ann-r14 "${testcvs} rann -r bill-clintons-chastity first-dir/file1" \
"${PROG} \[rannotate aborted\]: no such tag bill-clintons-chastity"
rm -rf ${CVSROOT_DIRNAME}/first-dir
;;
ann-id)
mkdir 1; cd 1
dotest ann-id-1 "${testcvs} -q co -l ." ''
module=x
mkdir $module
dotest ann-id-2 "${testcvs} add $module" \
"Directory ${CVSROOT_DIRNAME}/$module added to the repository"
cd $module
file=m
echo '$Id''$' > $file
dotest ann-id-3 "$testcvs add $file" \
"${PROG} add: scheduling file .$file. for addition
${PROG} add: use .${PROG} commit. to add this file permanently"
dotest ann-id-4 "$testcvs -Q ci -m . $file" \
"RCS file: ${CVSROOT_DIRNAME}/$module/$file,v
done
Checking in $file;
${CVSROOT_DIRNAME}/$module/$file,v <-- $file
initial revision: 1\.1
done"
echo line2 >> $file
dotest ann-id-5 "$testcvs -Q ci -m . $file" \
"Checking in $file;
${CVSROOT_DIRNAME}/$module/$file,v <-- $file
new revision: 1\.2; previous revision: 1\.1
done"
dotest ann-id-6 "$testcvs -Q ann $file" \
"
Annotations for $file
\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*
1.2 ($username *[0-9a-zA-Z-]*): "'\$'"Id: $file,v 1.1 [0-9/]* [0-9:]* $username Exp "'\$'"
1.2 ($username *[0-9a-zA-Z-]*): line2"
cd ../..
rm -rf 1
rm -rf ${CVSROOT_DIRNAME}/$module
;;
crerepos)
CVS_SERVER_save=$CVS_SERVER
if $remote; then
depends_on_rsh "$CVS_RSH"
if test $? -eq 77; then
skip crerepos "$skipreason"
continue
fi
mkdir crerepos
mkdir crerepos/CVSROOT
cat >$TESTDIR/cvs-setHome <<EOF
#!/bin/sh
HOME=$HOME
export HOME
exec $CVS_SERVER_save "\$@"
EOF
chmod a+x $TESTDIR/cvs-setHome
CVS_SERVER=$TESTDIR/cvs-setHome; export CVS_SERVER
CREREPOS_ROOT=:ext:$host$TESTDIR/crerepos
else
dotest_fail crerepos-1 \
"${testcvs} -d ${TESTDIR}/crerepos co cvs-sanity" \
"${PROG} \[checkout aborted\]: ${TESTDIR}/crerepos/CVSROOT: .*"
mkdir crerepos
dotest_fail crerepos-2 \
"${testcvs} -d ${TESTDIR}/crerepos co cvs-sanity" \
"${PROG} \[checkout aborted\]: ${TESTDIR}/crerepos/CVSROOT: .*"
mkdir crerepos/CVSROOT
dotest_fail crerepos-3 \
"${testcvs} -d ${TESTDIR}/crerepos co cvs-sanity" \
"${PROG} checkout: cannot find module .cvs-sanity. - ignored"
mkdir 1; cd 1
dotest crerepos-4 \
"${testcvs} -q -d ${TESTDIR}/crerepos co CVSROOT" \
''
if echo yes | \
${testcvs} -d ${TESTDIR}/crerepos release -d CVSROOT >>${LOGFILE}; then
pass crerepos-5
else
fail crerepos-5
fi
rm -rf CVS
cd ..
dotest crerepos-6 "rmdir 1"
CREREPOS_ROOT=${TESTDIR}/crerepos
fi
if $remote; then
mkdir 1; cd 1
dotest_fail crerepos-6a-r \
"${testcvs} -q -d :ext:`hostname`:../crerepos get ." \
"${PROG} [a-z]*: CVSROOT may only specify a positive, non-zero, integer port (not .\.\..)\.
${PROG} [a-z]*: Perhaps you entered a relative pathname${QUESTION}
${PROG} \[[a-z]* aborted\]: Bad CVSROOT: .:ext:${hostname}:\.\./crerepos.\."
cd ..
rm -r 1
mkdir 1; cd 1
dotest_fail crerepos-6b-r \
"${testcvs} -d :ext:`hostname`:crerepos init" \
"${PROG} [a-z]*: CVSROOT requires a path spec:
${PROG} [a-z]*: :(gserver|kserver|pserver):\[\[user\]\[:password\]@\]host\[:\[port\]\]/path
${PROG} [a-z]*: \[:(ext|server):\]\[\[user\]@\]host\[:\]/path
${PROG} \[[a-z]* aborted\]: Bad CVSROOT: .:ext:${hostname}:crerepos.\."
cd ..
rm -r 1
else
mkdir 1; cd 1
dotest_fail crerepos-6a "CVS_RSH=false ${testcvs} -q -d ../crerepos get ." \
"${PROG} \[checkout aborted\]: end of file from server (consult above messages if any)" \
"${PROG} \[checkout aborted\]: received broken pipe signal"
cd ..
rm -r 1
mkdir 1; cd 1
dotest_fail crerepos-6b "${testcvs} -d crerepos init" \
"${PROG} init: CVSROOT must be an absolute pathname (not .crerepos.)
${PROG} init: when using local access method\.
${PROG} \[init aborted\]: Bad CVSROOT: .crerepos.\."
cd ..
rm -r 1
fi
dotest_fail crerepos-7 \
"test -f ${TESTDIR}/crerepos/CVSROOT/history" ''
mkdir 1; cd 1
dotest crerepos-8 "${testcvs} -q co -l ." ''
mkdir first-dir
dotest crerepos-9 "${testcvs} add first-dir" \
"Directory ${CVSROOT_DIRNAME}/first-dir added to the repository"
cd first-dir
touch file1
dotest crerepos-10 "${testcvs} add file1" \
"${PROG} add: scheduling file .file1. for addition
${PROG} add: use .${PROG} commit. to add this file permanently"
dotest crerepos-11 "${testcvs} -q ci -m add-it" \
"RCS file: ${CVSROOT_DIRNAME}/first-dir/file1,v
done
Checking in file1;
${CVSROOT_DIRNAME}/first-dir/file1,v <-- file1
initial revision: 1\.1
done"
cd ../..
rm -r 1
mkdir 1; cd 1
dotest crerepos-12 "${testcvs} -d ${CREREPOS_ROOT} -q co -l ." ''
mkdir crerepos-dir
dotest crerepos-13 "${testcvs} add crerepos-dir" \
"Directory ${TESTDIR}/crerepos/crerepos-dir added to the repository"
cd crerepos-dir
touch cfile
dotest crerepos-14 "${testcvs} add cfile" \
"${PROG} add: scheduling file .cfile. for addition
${PROG} add: use .${PROG} commit. to add this file permanently"
dotest crerepos-15 "${testcvs} -q ci -m add-it" \
"RCS file: ${TESTDIR}/crerepos/crerepos-dir/cfile,v
done
Checking in cfile;
${TESTDIR}/crerepos/crerepos-dir/cfile,v <-- cfile
initial revision: 1\.1
done"
cd ../..
rm -r 1
mkdir 1; cd 1
dotest crerepos-16 "${testcvs} co first-dir" \
"${PROG} checkout: Updating first-dir
U first-dir/file1"
dotest crerepos-17 "${testcvs} -d ${CREREPOS_ROOT} co crerepos-dir" \
"${PROG} checkout: Updating crerepos-dir
U crerepos-dir/cfile"
dotest crerepos-18 "${testcvs} update" \
"${PROG} update: Updating first-dir
${PROG} update: Updating crerepos-dir"
cd ..
CVS_SERVER=$CVS_SERVER_save; export CVS_SERVER
if $keep; then
echo Keeping ${TESTDIR} and exiting due to --keep
exit 0
fi
rm -f $TESTDIR/cvs-setHome
rm -r 1
rm -rf ${CVSROOT_DIRNAME}/first-dir ${TESTDIR}/crerepos
;;
rcs)
mkdir ${CVSROOT_DIRNAME}/first-dir
cat <<EOF >${CVSROOT_DIRNAME}/first-dir/file1,v
head 1.3;
access;
symbols;
locks; strict;
comment @
1.3
date 2000.11.24.15.58.37; author kingdon; state Exp;
branches;
next 1.2;
1.2
date 96.11.24.15.57.41; author kingdon; state Exp;
branches;
next 1.1;
1.1
date 96.11.24.15.56.05; author kingdon; state Exp;
branches;
next ;
desc
@file1 is for testing CVS
@
1.3
log
@delete second line; modify twelfth line
@
text
@This is the first line
This is the third line
This is the fourth line
This is the fifth line
This is the sixth line
This is the seventh line
This is the eighth line
This is the ninth line
This is the tenth line
This is the eleventh line
This is the twelfth line (and what a line it is)
This is the thirteenth line
@
1.2
log
@add more lines
@
text
@a1 1
This is the second line
d11 1
a11 1
This is the twelfth line
@
1.1
log
@add file1
@
text
@d2 12
@
EOF
dotest rcs-1 "${testcvs} -q co first-dir" 'U first-dir/file1'
cd first-dir
dotest rcs-2 "${testcvs} -q log" "
RCS file: ${CVSROOT_DIRNAME}/first-dir/file1,v
Working file: file1
head: 1\.3
branch:
locks: strict
access list:
symbolic names:
keyword substitution: kv
total revisions: 3; selected revisions: 3
description:
file1 is for testing CVS
----------------------------
revision 1\.3
date: 2000/11/24 15:58:37; author: kingdon; state: Exp; lines: ${PLUS}1 -2
delete second line; modify twelfth line
----------------------------
revision 1\.2
date: 1996/11/24 15:57:41; author: kingdon; state: Exp; lines: ${PLUS}12 -0
add more lines
----------------------------
revision 1\.1
date: 1996/11/24 15:56:05; author: kingdon; state: Exp;
add file1
============================================================================="
dotest rcs-3 "${testcvs} -q log -d '1996-12-11<'" "
RCS file: ${CVSROOT_DIRNAME}/first-dir/file1,v
Working file: file1
head: 1\.3
branch:
locks: strict
access list:
symbolic names:
keyword substitution: kv
total revisions: 3; selected revisions: 1
description:
file1 is for testing CVS
----------------------------
revision 1\.3
date: 2000/11/24 15:58:37; author: kingdon; state: Exp; lines: ${PLUS}1 -2
delete second line; modify twelfth line
============================================================================="
dotest rcs-4 "${testcvs} -q log -d '<3 Apr 2000 00:00'" \
"
RCS file: ${CVSROOT_DIRNAME}/first-dir/file1,v
Working file: file1
head: 1\.3
branch:
locks: strict
access list:
symbolic names:
keyword substitution: kv
total revisions: 3; selected revisions: 2
description:
file1 is for testing CVS
----------------------------
revision 1\.2
date: 1996/11/24 15:57:41; author: kingdon; state: Exp; lines: ${PLUS}12 -0
add more lines
----------------------------
revision 1\.1
date: 1996/11/24 15:56:05; author: kingdon; state: Exp;
add file1
============================================================================="
dotest rcs-4a "${testcvs} annotate file1" \
"
Annotations for file1
\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*
1\.1 (kingdon 24-Nov-96): This is the first line
1\.2 (kingdon 24-Nov-96): This is the third line
1\.2 (kingdon 24-Nov-96): This is the fourth line
1\.2 (kingdon 24-Nov-96): This is the fifth line
1\.2 (kingdon 24-Nov-96): This is the sixth line
1\.2 (kingdon 24-Nov-96): This is the seventh line
1\.2 (kingdon 24-Nov-96): This is the eighth line
1\.2 (kingdon 24-Nov-96): This is the ninth line
1\.2 (kingdon 24-Nov-96): This is the tenth line
1\.2 (kingdon 24-Nov-96): This is the eleventh line
1\.3 (kingdon 24-Nov-00): This is the twelfth line (and what a line it is)
1\.2 (kingdon 24-Nov-96): This is the thirteenth line"
cat <<EOF >${CVSROOT_DIRNAME}/first-dir/file2,v
head 1.5 ;
branch 1.2.6;
access ;
symbols branch:1.2.6;
locks;
testofanewphrase @without newphrase we'd have trouble extending @@ all@ ;
1.5 date 71.01.01.01.00.00; author joe; state bogus; branches; next 1.4;
1.4 date 71.01.01.00.00.05; author joe; state bogus; branches; next 1.3;
1.3 date 70.12.31.15.00.05; author joe; state bogus; branches; next 1.2;
1.2 date 70.12.31.12.15.05; author me; state bogus; branches 1.2.6.1; next 1.1;
1.1 date 70.12.31.11.00.05; author joe; state bogus; branches; next; newph;
1.2.6.1 date 71.01.01.08.00.05; author joe; state Exp; branches; next;
desc @@
1.5 log @@ newphrase1; newphrase2 42; text @head revision@
1.4 log @@ text @d1 1
a1 1
new year revision@
1.3 log @@ text @d1 1
a1 1
old year revision@
1.2 log @@ text @d1 1
a1 1
mid revision@ 1.1
log @@ text @d1 1
a1 1
start revision@
1.2.6.1 log @@ text @d1 1
a1 1
branch revision@
EOF
dotest rcs-5 "${testcvs} -q update file2" "U file2"
dotest rcs-6 "cat file2" "branch revision"
dotest rcs-6a "${testcvs} -q update -r branch file2" ""
echo "next branch revision" > file2
dotest rcs-6b "${testcvs} -q ci -m mod file2" \
"Checking in file2;
${CVSROOT_DIRNAME}/first-dir/file2,v <-- file2
new revision: 1\.2\.6\.2; previous revision: 1\.2\.6\.1
done"
dotest rcs-7 "${testcvs} admin -b file2" \
"RCS file: ${CVSROOT_DIRNAME}/first-dir/file2,v
done"
dotest rcs-8 \
"grep testofanewphrase ${CVSROOT_DIRNAME}/first-dir/file2,v" \
"testofanewphrase[ ][ ]*@without newphrase we'd have trouble extending @@ all@[ ]*;"
dotest rcs-8a "cat ${CVSROOT_DIRNAME}/first-dir/file2,v" \
"head 1\.5;
access;
symbols
branch:1.2.6;
locks;
testofanewphrase @without newphrase we'd have trouble extending @@ all@;
1\.5
date 71\.01\.01\.01\.00\.00; author joe; state bogus;
branches;
next 1\.4;
1\.4
date 71\.01\.01\.00\.00\.05; author joe; state bogus;
branches;
next 1\.3;
1\.3
date 70\.12\.31\.15\.00\.05; author joe; state bogus;
branches;
next 1\.2;
1\.2
date 70\.12\.31\.12\.15\.05; author me; state bogus;
branches
1\.2\.6\.1;
next 1\.1;
1\.1
date 70\.12\.31\.11\.00\.05; author joe; state bogus;
branches;
next ;
newph ;
1\.2\.6\.1
date 71\.01\.01\.08\.00\.05; author joe; state Exp;
branches;
next 1\.2\.6\.2;
1\.2\.6\.2
date [0-9.]*; author ${username}; state Exp;
branches;
next ;
desc
@@
1\.5
log
@@
newphrase1 ;
newphrase2 42;
text
@head revision@
1\.4
log
@@
text
@d1 1
a1 1
new year revision@
1\.3
log
@@
text
@d1 1
a1 1
old year revision@
1\.2
log
@@
text
@d1 1
a1 1
mid revision@
1\.1
log
@@
text
@d1 1
a1 1
start revision@
1\.2\.6\.1
log
@@
text
@d1 1
a1 1
branch revision@
1\.2\.6\.2
log
@mod
@
text
@d1 1
a1 1
next branch revision
@"
dotest rcs-9 "${testcvs} -q update -p -D '1970-12-31 11:30 UT' file2" \
"start revision"
dotest rcs-10 "${testcvs} -q update -p -D '1970-12-31 12:30 UT' file2" \
"mid revision"
dotest rcs-11 "${testcvs} -q update -p -D '1971-01-01 00:30 UT' file2" \
"new year revision"
dotest rcs-12 "${testcvs} -q update -p -D 'December 31, 1970 12:30pm UT' file2" \
"mid revision"
dotest rcs-13 "${testcvs} -q update -p -D 'January 1, 1971 12:30am UT' file2" \
"new year revision"
dotest rcs-14 "${testcvs} -q log file2" "
RCS file: ${CVSROOT_DIRNAME}/first-dir/file2,v
Working file: file2
head: 1\.5
branch:
locks:
access list:
symbolic names:
branch: 1\.2\.6
keyword substitution: kv
total revisions: 7; selected revisions: 7
description:
----------------------------
revision 1\.5
date: 1971/01/01 01:00:00; author: joe; state: bogus; lines: ${PLUS}1 -1
\*\*\* empty log message \*\*\*
----------------------------
revision 1\.4
date: 1971/01/01 00:00:05; author: joe; state: bogus; lines: ${PLUS}1 -1
\*\*\* empty log message \*\*\*
----------------------------
revision 1\.3
date: 1970/12/31 15:00:05; author: joe; state: bogus; lines: ${PLUS}1 -1
\*\*\* empty log message \*\*\*
----------------------------
revision 1\.2
date: 1970/12/31 12:15:05; author: me; state: bogus; lines: ${PLUS}1 -1
branches: 1\.2\.6;
\*\*\* empty log message \*\*\*
----------------------------
revision 1\.1
date: 1970/12/31 11:00:05; author: joe; state: bogus;
\*\*\* empty log message \*\*\*
----------------------------
revision 1\.2\.6\.2
date: [0-9/]* [0-9:]*; author: ${username}; state: Exp; lines: ${PLUS}1 -1
mod
----------------------------
revision 1\.2\.6\.1
date: 1971/01/01 08:00:05; author: joe; state: Exp; lines: ${PLUS}1 -1
\*\*\* empty log message \*\*\*
============================================================================="
dotest rcs-15 "${testcvs} -q log -d '<1971-01-01 00:00 GMT' file2 \
| grep revision" \
"total revisions: 7; selected revisions: 3
revision 1\.3
revision 1\.2
revision 1\.1"
dotest rcs-16 "${testcvs} -q log -d '1971-01-01 00:00 GMT<' file2 \
| grep revision" \
"total revisions: 7; selected revisions: 4
revision 1\.5
revision 1\.4
revision 1\.2\.6\.2
revision 1\.2\.6\.1"
dotest rcs-17 "${testcvs} -q log -d '>1971-01-01 00:00 GMT' \
-d '1970-12-31 12:15 GMT>' file2 | grep revision" \
"total revisions: 7; selected revisions: 5
revision 1\.5
revision 1\.4
revision 1\.1
revision 1\.2\.6\.2
revision 1\.2\.6\.1"
dotest rcs-18 "${testcvs} -q log -d '1970-12-31 11:30 GMT' \
-d '1971-01-01 00:00:05 GMT<1971-01-01 01:00:01 GMT' \
file2 | grep revision" \
"total revisions: 7; selected revisions: 2
revision 1\.5
revision 1\.1"
dotest rcs-19 "${testcvs} -q log \
-d '1971-01-01 01:00:01 GMT>=1971-01-01 00:00:05 GMT' \
file2 | grep revision" \
"total revisions: 7; selected revisions: 2
revision 1\.5
revision 1\.4"
cd ..
rm -r first-dir
rm -rf ${CVSROOT_DIRNAME}/first-dir
;;
rcs2)
mkdir ${CVSROOT_DIRNAME}/first-dir
cat <<EOF >${CVSROOT_DIRNAME}/first-dir/file1,v
head 1.7; access; symbols; locks; strict;
1.7 date 2004.08.31.01.01.01; author sue; state; branches; next 1.6;
1.6 date 2004.02.29.01.01.01; author sue; state; branches; next 1.5;
1.5 date 2003.02.28.01.01.01; author sue; state; branches; next 1.4;
1.4 date 2001.01.01.01.01.01; author sue; state; branches; next 1.3;
1.3 date 2000.02.29.01.01.01; author sue; state; branches; next 1.2;
1.2 date 99.09.09.01.01.01; author sue; state; branches; next 1.1;
1.1 date 98.09.10.01.01.01; author sue; state; branches; next;
desc @a test file@
1.7 log @@ text @head revision@
1.6 log @@ text @d1 1
a1 1
2004 was a great year for leaping@
1.5 log @@ text @d1 1
a1 1
2003 wasn't@
1.4 log @@ text @d1 1
a1 1
two year hiatus@
1.3 log @@ text @d1 1
a1 1
2000 is also a good year for leaping@
1.2 log @@ text @d1 1
a1 1
Tonight we're going to party like it's a certain year@
1.1 log @@ text @d1 1
a1 1
Need to start somewhere@
EOF
dotest rcs2-1 "${testcvs} -q co first-dir" 'U first-dir/file1'
cd first-dir
dotest rcs2-2 "${testcvs} -q update -p -D '1999-09-09 11:30 UT' file1" \
"Tonight we're going to party like it's a certain year"
dotest rcs2-3 "${testcvs} -q update -p -D '2001-01-01 11:30 UT' file1" \
"two year hiatus"
dotest rcs2-4 "${testcvs} -q update -p -D '2000-02-29 11:30 UT' file1" \
"2000 is also a good year for leaping"
dotest_fail rcs2-5 "${testcvs} -q update -p -D '2003-02-29 11:30 UT' file1" \
"${PROG} \[[a-z]* aborted\]: Can't parse date/time: 2003-02-29 11:30 UT"
dotest rcs2-6 "${testcvs} -q update -p -D 2007-01-07 file1" \
"head revision"
dotest rcs2-7 "${testcvs} -q update -p -D '96 months' file1" \
"head revision"
dotest rcs2-8 "${testcvs} -q update -p -D '8 years' file1" \
"head revision"
cd ..
rm -r first-dir
rm -rf ${CVSROOT_DIRNAME}/first-dir
;;
rcs3)
mkdir ${CVSROOT_DIRNAME}/first-dir
cat <<EOF >${CVSROOT_DIRNAME}/first-dir/file1,v
head 1.1; access; symbols; locks; expand o; 1.1 date 2007.03.20.04.03.02
; author jeremiah ;state ; branches; next;desc@@1.1log@@text@head@
EOF
mkdir 1; cd 1
dotest_fail rcs3-1 "${testcvs} -q co first-dir" \
"${PROG} \[checkout aborted\]: EOF while looking for value in RCS file ${CVSROOT_DIRNAME}/first-dir/file1,v"
cat <<EOF >${CVSROOT_DIRNAME}/first-dir/file1,v
head 1.1; access; symbols; locks; expand o; 1.1 date 2007.03.20.04.03.02
; author jeremiah ;state ; branches; next;desc @@1.1log@@text@head@
EOF
dotest_fail rcs3-2 "${testcvs} -q co first-dir" \
"${PROG} \[checkout aborted\]: unexpected '.x6c' reading revision number in RCS file ${CVSROOT_DIRNAME}/first-dir/file1,v"
cat <<EOF >${CVSROOT_DIRNAME}/first-dir/file1,v
head 1.1; access; symbols; locks; expand o; 1.1 date 2007.03.20.04.03.02
; author jeremiah ;state ; branches; next;desc @@1.1 log@@text@head@
EOF
dotest_fail rcs3-3 "${testcvs} -q co first-dir" \
"${PROG} \[checkout aborted\]: EOF while looking for value in RCS file ${CVSROOT_DIRNAME}/first-dir/file1,v"
cat <<EOF >${CVSROOT_DIRNAME}/first-dir/file1,v
head 1.1; access; symbols; locks; expand o; 1.1 date 2007.03.20.04.03.02
; author jeremiah ;state ; branches; next;desc @@1.1 log @@text @head@
EOF
dotest rcs3-4 "${testcvs} -q co first-dir" 'U first-dir/file1'
dotest_fail rcs3-5 "${testcvs} log -s nostate first-dir/file1" \
"${DOTSTAR}ssertion.*failed${DOTSTAR}" "${DOTSTAR}failed assertion${DOTSTAR}"
cd first-dir
dotest_fail rcs3-5a "${testcvs} log -s nostate file1" \
"${DOTSTAR}ssertion.*failed${DOTSTAR}" "${DOTSTAR}failed assertion${DOTSTAR}"
cd ..
cd first-dir
dotest rcs3-6 "${testcvs} log -R file1" \
"${CVSROOT_DIRNAME}/first-dir/file1,v"
${AWK} </dev/null 'BEGIN { printf "@%c", 10 }' | ${TR} '@' '\000' \
>>${CVSROOT_DIRNAME}/first-dir/file1,v
dotest_fail rcs3-7 "${testcvs} log -s nostate file1" \
"${PROG} \[log aborted\]: unexpected '.x0' reading revision number in RCS file ${CVSROOT_DIRNAME}/first-dir/file1,v"
cd ../..
rm -r 1
rm -rf ${CVSROOT_DIRNAME}/first-dir
;;
rcs4)
mkdir rcs4
cd rcs4
mkdir imp-dir
cd imp-dir
echo 'OpenMunger sources' >file1
TZ=GMT touch -t 200012010123 file1
dotest_sort rcs4-1 \
"${testcvs} import -d -m add rcs4-dir openmunger openmunger-1_0" \
'
N rcs4-dir/file1
No conflicts created by this import'
echo 'OpenMunger sources release 1.1 extras' >>file1
TZ=GMT touch -t 200112011234 file1
dotest_sort rcs4-2 \
"${testcvs} import -d -m add rcs4-dir openmunger openmunger-1_1" \
'
No conflicts created by this import
U rcs4-dir/file1'
cd ..
dotest rcs4-3 \
"${testcvs} -q co rcs4-dir" \
'U rcs4-dir/file1'
cd rcs4-dir
echo 'local change' >> file1
dotest rcs4-4 \
"${testcvs} -q commit -m hack file1" \
"Checking in file1;
${CVSROOT_DIRNAME}/rcs4-dir/file1,v <-- file1
new revision: 1\.2; previous revision: 1\.1
done"
dotest rcs4-5 \
"${testcvs} -q update -D 'October 1, 2001 UTC' file1" \
'[UP] file1'
dotest rcs4-6 \
"${testcvs} -q status file1" \
'===================================================================
File: file1 Status: Up-to-date
Working revision: 1\.1\.1\.1.*
Repository revision: 1\.1\.1\.1 '${CVSROOT_DIRNAME}'/rcs4-dir/file1,v
Sticky Tag: (none)
Sticky Date: 2001\.10\.01\.00\.00\.00
Sticky Options: (none)'
if $keep; then
echo Keeping ${TESTDIR} and exiting due to --keep
exit 0
fi
cd ../..
rm -r rcs4
rm -rf ${CVSROOT_DIRNAME}/rcs4-dir
;;
lockfiles)
mkdir 1; cd 1
mkdir sdir
mkdir sdir/ssdir
echo file >sdir/ssdir/file1
dotest lockfiles-1 \
"${testcvs} -Q import -m import-it first-dir bar baz" ""
cd ..
mkdir 2; cd 2
dotest lockfiles-2 "${testcvs} -q co first-dir" \
"U first-dir/sdir/ssdir/file1"
dotest lockfiles-3 "${testcvs} -Q co CVSROOT" ""
cd CVSROOT
echo "LockDir=${TESTDIR}/locks" >config
dotest lockfiles-4 "${testcvs} -q ci -m config-it" \
"Checking in config;
${CVSROOT_DIRNAME}/CVSROOT/config,v <-- config
new revision: 1\.[0-9]*; previous revision: 1\.[0-9]*
done
${PROG} commit: Rebuilding administrative file database"
cd ../first-dir/sdir/ssdir
dotest_fail lockfiles-5 "${testcvs} -q update" \
"${PROG} \[update aborted\]: cannot stat ${TESTDIR}/locks: No such file or directory
${PROG} \[update aborted\]: cannot stat ${TESTDIR}/locks: No such file or directory"
mkdir ${TESTDIR}/locks
if test -n "$remotehost"; then
$CVS_RSH $remotehost "chmod u=rwx,g=r,o= ${TESTDIR}/locks"
else
chmod u=rwx,g=r,o= ${TESTDIR}/locks
fi
umask 0077
CVSUMASK=0077; export CVSUMASK
dotest lockfiles-6 "${testcvs} -q update" ""
dotest lockfiles-7 "ls ${TESTDIR}/locks/first-dir/sdir/ssdir" ""
if test -n "$remotehost"; then
dotest lockfiles-7a "$CVS_RSH $remotehost 'ls -ld ${TESTDIR}/locks/first-dir'" \
"drwxr-----.*first-dir"
dotest lockfiles-7b "$CVS_RSH $remotehost 'ls -ld ${TESTDIR}/locks/first-dir/sdir/ssdir'" \
"drwxr-----.*first-dir/sdir/ssdir"
else
dotest lockfiles-7a "ls -ld ${TESTDIR}/locks/first-dir" \
"drwxr-----.*first-dir"
dotest lockfiles-7b "ls -ld ${TESTDIR}/locks/first-dir/sdir/ssdir" \
"drwxr-----.*first-dir/sdir/ssdir"
fi
cd ../../..
dotest lockfiles-8 "${testcvs} -q update" ""
dotest lockfiles-9 "${testcvs} -q co -l ." ""
cd CVSROOT
echo "# nobody here but us comments" >config
dotest lockfiles-cleanup-1 "${testcvs} -q ci -m config-it" \
"Checking in config;
${CVSROOT_DIRNAME}/CVSROOT/config,v <-- config
new revision: 1\.[0-9]*; previous revision: 1\.[0-9]*
done
${PROG} commit: Rebuilding administrative file database"
cd ../..
umask 0077
unset CVSUMASK
rm -r ${TESTDIR}/locks
rm -r 1 2
rm -rf ${CVSROOT_DIRNAME}/first-dir
;;
backuprecover)
mkdir backuprecover; cd backuprecover
mkdir 1; cd 1
dotest backuprecover-1 "${testcvs} -q co -l ." ''
mkdir first-dir
dotest backuprecover-2 "${testcvs} add first-dir" \
"Directory ${CVSROOT_DIRNAME}/first-dir added to the repository"
cd first-dir
mkdir dir
dotest backuprecover-3 "${testcvs} add dir" \
"Directory ${CVSROOT_DIRNAME}/first-dir/dir added to the repository"
touch file1 dir/file2
dotest backuprecover-4 "${testcvs} -q add file1 dir/file2" \
"${PROG} add: use .${PROG} commit. to add these files permanently"
dotest backuprecover-5 "${testcvs} -q ci -mtest" \
"RCS file: ${CVSROOT_DIRNAME}/first-dir/file1,v
done
Checking in file1;
${CVSROOT_DIRNAME}/first-dir/file1,v <-- file1
initial revision: 1\.1
done
RCS file: ${CVSROOT_DIRNAME}/first-dir/dir/file2,v
done
Checking in dir/file2;
${CVSROOT_DIRNAME}/first-dir/dir/file2,v <-- file2
initial revision: 1\.1
done"
echo "Line one" >>file1
echo " is the place" >>file1
echo " we like to begin" >>file1
echo "Anything else" >>file1
echo " looks like" >>file1
echo " a sin" >>file1
echo "File 2" >>dir/file2
echo " is the place" >>dir/file2
echo " the rest of it goes" >>dir/file2
echo "Why I don't use" >>dir/file2
echo " something like 'foo'" >>dir/file2
echo " God only knows" >>dir/file2
dotest backuprecover-6 "${testcvs} -q ci -mtest" \
"Checking in file1;
${CVSROOT_DIRNAME}/first-dir/file1,v <-- file1
new revision: 1\.2; previous revision: 1\.1
done
Checking in dir/file2;
${CVSROOT_DIRNAME}/first-dir/dir/file2,v <-- file2
new revision: 1\.2; previous revision: 1\.1
done"
cd ../..
mkdir 2; cd 2
dotest backuprecover-7 "${testcvs} -Q co first-dir" ''
cd first-dir
sed -e "s/looks like/just looks like/" file1 >tmp; mv tmp file1
sed -e "s/don't use/don't just use/" dir/file2 >tmp; mv tmp dir/file2
cd ../../1/first-dir
echo "I need some more words" >>file1
echo " to fill up this space" >>file1
echo " anything else would be a disgrace" >>file1
echo "My rhymes cross many boundries" >>dir/file2
echo " this time it's files" >>dir/file2
echo " a word that fits here would be something like dials" >>dir/file2
dotest backuprecover-8 "${testcvs} -q ci -mtest" \
"Checking in file1;
${CVSROOT_DIRNAME}/first-dir/file1,v <-- file1
new revision: 1\.3; previous revision: 1\.2
done
Checking in dir/file2;
${CVSROOT_DIRNAME}/first-dir/dir/file2,v <-- file2
new revision: 1\.3; previous revision: 1\.2
done"
cp -r ${CVSROOT_DIRNAME}/first-dir ${CVSROOT_DIRNAME}/backup
cd ../..
mkdir 3; cd 3
dotest backuprecover-9a "${testcvs} -Q co first-dir" ''
cd first-dir
echo >>file1
echo >>dir/file2
echo "Developer 1 makes very lame rhymes" >>file1
echo " I think he should quit and become a mime" >>file1
echo "What the %*^# kind of rhyme crosses a boundry?" >>dir/file2
echo " I think you should quit and get a job in the foundry" >>dir/file2
dotest backuprecover-9b "${testcvs} -q ci -mtest" \
"Checking in file1;
${CVSROOT_DIRNAME}/first-dir/file1,v <-- file1
new revision: 1\.4; previous revision: 1\.3
done
Checking in dir/file2;
${CVSROOT_DIRNAME}/first-dir/dir/file2,v <-- file2
new revision: 1\.4; previous revision: 1\.3
done"
cd ../..
mkdir 4; cd 4
dotest backuprecover-10 "${testcvs} -Q co first-dir" ''
cd first-dir
sed -e "s/quit and/be fired so he can/" dir/file2 >tmp; mv tmp dir/file2
cd ../../1/first-dir
dotest backuprecover-11 "${testcvs} -Q update" ''
echo >>file1
echo >>dir/file2
echo "Oh yeah, well rhyme this" >>file1
echo " developer three" >>file1
echo " you want opposition" >>file1
echo " you found some in me!" >>file1
echo "I'll give you mimes" >>dir/file2
echo " and foundries galore!" >>dir/file2
echo " your head will spin" >>dir/file2
echo " once you find what's in store!" >>dir/file2
dotest backuprecover-12 "${testcvs} -q ci -mtest" \
"Checking in file1;
${CVSROOT_DIRNAME}/first-dir/file1,v <-- file1
new revision: 1\.5; previous revision: 1\.4
done
Checking in dir/file2;
${CVSROOT_DIRNAME}/first-dir/dir/file2,v <-- file2
new revision: 1\.5; previous revision: 1\.4
done"
cd ../../3/first-dir
dotest backuprecover-13 "${testcvs} -Q update" ''
sed -e "s/very/some extremely/" file1 >tmp; mv tmp file1
dotest backuprecover-14 "${testcvs} -q ci -mtest" \
"Checking in file1;
${CVSROOT_DIRNAME}/first-dir/file1,v <-- file1
new revision: 1\.6; previous revision: 1\.5
done"
echo >>file1
echo "Tee hee hee hee" >>file1
echo >>dir/file2
echo "Find what's in store?" >>dir/file2
echo " Oh, I'm so sure!" >>dir/file2
echo " You've got an ill, and I have the cure!" >>dir/file2
rm -rf ${CVSROOT_DIRNAME}/first-dir
mv ${CVSROOT_DIRNAME}/backup ${CVSROOT_DIRNAME}/first-dir
cd ../../1/first-dir
dotest backuprecover-15 "${testcvs} update" \
"${PROG} update: Updating .
U file1
${PROG} update: Updating dir
U dir/file2"
cd ../../3/first-dir
dotest_fail backuprecover-16 "${testcvs} update" \
"${PROG} update: Updating \.
${PROG} \[update aborted\]: could not find desired version 1\.6 in ${CVSROOT_DIRNAME}/first-dir/file1,v"
cd ../..
echo \
"#!/bin/sh
# This script will copy the CVS database dirs from the checked out
# version of a newly recovered repository and replace the CVS
# database dirs in a workspace with later revisions than those in the
# recovered repository
cd repos-first-dir
DATADIRS=\`find . -name CVS -print\`
cd ../first-dir
find . -name CVS -print | xargs rm -rf
for file in \${DATADIRS}; do
cp -r ../repos-first-dir/\${file} \${file}
done" >fixit
cd 3
dotest backuprecover-17 \
"${testcvs} -Q co -d repos-first-dir first-dir" ''
cd ../4
dotest backuprecover-18 \
"${testcvs} -Q co -d repos-first-dir first-dir" ''
sh ../fixit
cd ../3; sh ../fixit
cd first-dir
dotest backuprecover-19 "${testcvs} -q ci -mrecover/merge" \
"Checking in file1;
${CVSROOT_DIRNAME}/first-dir/file1,v <-- file1
new revision: 1\.4; previous revision: 1\.3
done
Checking in dir/file2;
${CVSROOT_DIRNAME}/first-dir/dir/file2,v <-- file2
new revision: 1\.4; previous revision: 1\.3
done"
cd ../../4/first-dir
dotest backuprecover-20 "${testcvs} update" \
"${PROG} update: Updating \.
RCS file: ${CVSROOT_DIRNAME}/first-dir/file1,v
retrieving revision 1\.3
retrieving revision 1\.4
Merging differences between 1\.3 and 1\.4 into file1
rcsmerge: warning: conflicts during merge
${PROG} update: conflicts found in file1
C file1
${PROG} update: Updating dir
RCS file: ${CVSROOT_DIRNAME}/first-dir/dir/file2,v
retrieving revision 1\.3
retrieving revision 1\.4
Merging differences between 1\.3 and 1\.4 into file2
rcsmerge: warning: conflicts during merge
${PROG} update: conflicts found in dir/file2
C dir/file2"
sed -e \
"/^<<<<<<</,/^=======/d
/^>>>>>>>/d" file1 >tmp; mv tmp file1
sed -e \
"/^<<<<<<</,/^=======/d
/^>>>>>>>/d
s/quit and/be fired so he can/" dir/file2 >tmp; mv tmp dir/file2
dotest backuprecover-21 "${testcvs} -q ci -mrecover/merge" \
"Checking in dir/file2;
${CVSROOT_DIRNAME}/first-dir/dir/file2,v <-- file2
new revision: 1\.5; previous revision: 1\.4
done"
cd ../../2/first-dir
dotest backuprecover-22 "${testcvs} -Q update" \
"RCS file: ${CVSROOT_DIRNAME}/first-dir/file1,v
retrieving revision 1\.2
retrieving revision 1\.4
Merging differences between 1\.2 and 1\.4 into file1
RCS file: ${CVSROOT_DIRNAME}/first-dir/dir/file2,v
retrieving revision 1\.2
retrieving revision 1\.5
Merging differences between 1\.2 and 1\.5 into file2"
dotest backuprecover-23 "${testcvs} -q ci -mtest" \
"Checking in file1;
${CVSROOT_DIRNAME}/first-dir/file1,v <-- file1
new revision: 1\.5; previous revision: 1\.4
done
Checking in dir/file2;
${CVSROOT_DIRNAME}/first-dir/dir/file2,v <-- file2
new revision: 1\.6; previous revision: 1\.5
done"
cd ../../1/first-dir
dotest backuprecover-24 "${testcvs} -Q update" ''
cd ../../..
rm -r backuprecover
rm -rf ${CVSROOT_DIRNAME}/first-dir
;;
sshstdio)
if $remote; then :; else
continue
fi
depends_on_ssh
if test $? -eq 77; then
skip sshstdio "$skipreason"
continue
fi
SSHSTDIO_ROOT=:ext:$host$CVSROOT_DIRNAME
mkdir sshstdio; cd sshstdio
dotest sshstdio-1 "$testcvs -d $SSHSTDIO_ROOT -q co -l ."
mkdir first-dir
dotest sshstdio-2 "$testcvs add first-dir" \
"Directory $CVSROOT_DIRNAME/first-dir added to the repository"
cd first-dir
a='aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa'
c='aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa'
cnt=0
echo $a > aaa
while [ $cnt -lt 5 ] ; do
cnt=`expr $cnt + 1` ;
mv aaa aaa.old
cat aaa.old aaa.old aaa.old aaa.old > aaa
done
dotest sshstdio-3 "$testcvs -q add aaa" \
"$PROG add: use .$PROG commit. to add this file permanently"
dotest sshstdio-4 "$testcvs -q ci -mcreate aaa" \
"RCS file: $CVSROOT_DIRNAME/first-dir/aaa,v
done
Checking in aaa;
$CVSROOT_DIRNAME/first-dir/aaa,v <-- aaa
initial revision: 1\.1
done"
sed 510q < aaa > aaa.old
(echo $c; cat aaa.old; echo $c; \
echo $c; cat aaa.old; echo $c) > aaa
dotest sshstdio-5 "$testcvs -q ci -mmodify-it aaa" \
"Checking in aaa;
$CVSROOT_DIRNAME/first-dir/aaa,v <-- aaa
new revision: 1\.2; previous revision: 1\.1
done"
cat > wrapper.sh <<EOF
#!$TESTSHELL
exec "\$@" 2>&1 < /dev/null | cat
EOF
chmod +x wrapper.sh
./wrapper.sh \
$testcvs -z5 -Q diff --side-by-side -W 500 -r 1.1 -r 1.2 \
aaa > wrapper.dif
$testcvs -z5 -Q diff --side-by-side -W 500 -r 1.1 -r 1.2 \
aaa > good.dif
dotest sshstdio-6 "cmp wrapper.dif good.dif"
if $keep; then
echo Keeping $TESTDIR and exiting due to --keep
exit 0
fi
cd ../..
CVS_RSH=$save_CVS_RSH; export CVS_RSH
rm -r sshstdio
rm -rf $CVSROOT_DIRNAME/first-dir
;;
parseroot2)
if $remote; then :; else
continue
fi
depends_on_rsh "$CVS_RSH"
if test $? -eq 77; then
skip parseroot2 "$skipreason"
continue
fi
mkdir parseroot2; cd parseroot2
save_CVSROOT=$CVSROOT
CVSROOT=$host:$CVSROOT_DIRNAME
dotest parseroot2-1 "$testcvs -Q co CVSROOT"
cd CVSROOT
dotest parseroot2-2 "$testcvs -Q up"
cd ..
rm -r CVSROOT
CVSROOT=$host$CVSROOT_DIRNAME
dotest parseroot2-3 "$testcvs -Q co CVSROOT"
cd CVSROOT
dotest parseroot2-4 "$testcvs -Q up"
if $keep; then
echo Keeping $TESTDIR and exiting due to --keep
exit 0
fi
cd ../..
CVSROOT=$save_CVSROOT
rm -r parseroot2
;;
history)
cat >${CVSROOT_DIRNAME}/CVSROOT/history <<EOF
O3395c677|anonymous|<remote>/*0|ccvs||ccvs
O3396c677|anonymous|<remote>/src|ccvs||src
O3397c677|kingdon|<remote>/*0|ccvs||ccvs
M339cafae|nk|<remote>|ccvs/src|1.229|sanity.sh
M339cafff|anonymous|<remote>|ccvs/src|1.23|Makefile
M339dc339|kingdon|~/work/*0|ccvs/src|1.231|sanity.sh
W33a6eada|anonymous|<remote>*4|ccvs/emx||Makefile.in
C3b235f50|kingdon|<remote>|ccvs/emx|1.3|README
M3b23af50|kingdon|~/work/*0|ccvs/doc|1.281|cvs.texinfo
EOF
dotest history-1 "${testcvs} history -e -a" \
"O 1997-06-04 19:48 ${PLUS}0000 anonymous ccvs =ccvs= <remote>/\*
O 1997-06-05 14:00 ${PLUS}0000 anonymous ccvs =src= <remote>/\*
M 1997-06-10 01:38 ${PLUS}0000 anonymous 1\.23 Makefile ccvs/src == <remote>
W 1997-06-17 19:51 ${PLUS}0000 anonymous Makefile\.in ccvs/emx == <remote>/emx
O 1997-06-06 08:12 ${PLUS}0000 kingdon ccvs =ccvs= <remote>/\*
M 1997-06-10 21:12 ${PLUS}0000 kingdon 1\.231 sanity\.sh ccvs/src == ~/work/ccvs/src
C 2001-06-10 11:51 ${PLUS}0000 kingdon 1\.3 README ccvs/emx == <remote>
M 2001-06-10 17:33 ${PLUS}0000 kingdon 1\.281 cvs\.texinfo ccvs/doc == ~/work/ccvs/doc
M 1997-06-10 01:36 ${PLUS}0000 nk 1\.229 sanity\.sh ccvs/src == <remote>"
dotest history-2 "${testcvs} history -e -a -D '10 Jun 1997 13:00 UT'" \
"W 1997-06-17 19:51 ${PLUS}0000 anonymous Makefile\.in ccvs/emx == <remote>/emx
M 1997-06-10 21:12 ${PLUS}0000 kingdon 1\.231 sanity\.sh ccvs/src == ~/work/ccvs/src
C 2001-06-10 11:51 ${PLUS}0000 kingdon 1\.3 README ccvs/emx == <remote>
M 2001-06-10 17:33 ${PLUS}0000 kingdon 1\.281 cvs\.texinfo ccvs/doc == ~/work/ccvs/doc"
dotest history-3 "${testcvs} history -e -a -D '10 Jun 2001 13:00 UT'" \
"M 2001-06-10 17:33 ${PLUS}0000 kingdon 1\.281 cvs\.texinfo ccvs/doc == ~/work/ccvs/doc"
dotest history-4 "${testcvs} history -ac sanity.sh" \
"M 1997-06-10 21:12 ${PLUS}0000 kingdon 1\.231 sanity\.sh ccvs/src == ~/work/ccvs/src
M 1997-06-10 01:36 ${PLUS}0000 nk 1\.229 sanity\.sh ccvs/src == <remote>"
dotest history-5 "${testcvs} history -a -xCGUWAMR README sanity.sh" \
"M 1997-06-10 21:12 ${PLUS}0000 kingdon 1\.231 sanity\.sh ccvs/src == ~/work/ccvs/src
C 2001-06-10 11:51 ${PLUS}0000 kingdon 1\.3 README ccvs/emx == <remote>
M 1997-06-10 01:36 ${PLUS}0000 nk 1\.229 sanity\.sh ccvs/src == <remote>"
dotest history-6 "${testcvs} history -xCGUWAMR -a -f README -f sanity.sh" \
"M 1997-06-10 21:12 ${PLUS}0000 kingdon 1\.231 sanity\.sh ccvs/src == ~/work/ccvs/src
C 2001-06-10 11:51 ${PLUS}0000 kingdon 1\.3 README ccvs/emx == <remote>
M 1997-06-10 01:36 ${PLUS}0000 nk 1\.229 sanity\.sh ccvs/src == <remote>"
dotest history-7 "${testcvs} history -xCGUWAMR -a -f sanity.sh README" \
"M 1997-06-10 21:12 ${PLUS}0000 kingdon 1\.231 sanity\.sh ccvs/src == ~/work/ccvs/src
C 2001-06-10 11:51 ${PLUS}0000 kingdon 1\.3 README ccvs/emx == <remote>
M 1997-06-10 01:36 ${PLUS}0000 nk 1\.229 sanity\.sh ccvs/src == <remote>"
dotest history-8 "${testcvs} history -ca -D '1970-01-01 00:00 UT'" \
"M 1997-06-10 01:36 ${PLUS}0000 nk 1\.229 sanity.sh ccvs/src == <remote>
M 1997-06-10 01:38 ${PLUS}0000 anonymous 1\.23 Makefile ccvs/src == <remote>
M 1997-06-10 21:12 ${PLUS}0000 kingdon 1\.231 sanity.sh ccvs/src == ~/work/ccvs/src
M 2001-06-10 17:33 ${PLUS}0000 kingdon 1\.281 cvs.texinfo ccvs/doc == ~/work/ccvs/doc"
dotest history-9 "${testcvs} history -acl" \
"M 2001-06-10 17:33 ${PLUS}0000 kingdon 1\.281 cvs.texinfo ccvs/doc == ~/work/ccvs/doc
M 1997-06-10 01:38 ${PLUS}0000 anonymous 1\.23 Makefile ccvs/src == <remote>
M 1997-06-10 21:12 ${PLUS}0000 kingdon 1\.231 sanity.sh ccvs/src == ~/work/ccvs/src"
dotest history-10 "${testcvs} history -lca -D '1970-01-01 00:00 UT'" \
"M 2001-06-10 17:33 ${PLUS}0000 kingdon 1\.281 cvs.texinfo ccvs/doc == ~/work/ccvs/doc
M 1997-06-10 01:38 ${PLUS}0000 anonymous 1\.23 Makefile ccvs/src == <remote>
M 1997-06-10 21:12 ${PLUS}0000 kingdon 1\.231 sanity.sh ccvs/src == ~/work/ccvs/src"
dotest history-11 "${testcvs} history -aw" \
"O 1997-06-04 19:48 ${PLUS}0000 anonymous ccvs =ccvs= <remote>/\*
O 1997-06-05 14:00 ${PLUS}0000 anonymous ccvs =src= <remote>/\*
O 1997-06-06 08:12 ${PLUS}0000 kingdon ccvs =ccvs= <remote>/\*"
dotest history-12 "${testcvs} history -aw -D'1970-01-01 00:00 UT'" \
"O 1997-06-04 19:48 ${PLUS}0000 anonymous ccvs =ccvs= <remote>/\*
O 1997-06-05 14:00 ${PLUS}0000 anonymous ccvs =src= <remote>/\*
O 1997-06-06 08:12 ${PLUS}0000 kingdon ccvs =ccvs= <remote>/\*"
;;
big)
mkdir ${CVSROOT_DIRNAME}/first-dir
dotest big-1 "${testcvs} -q co first-dir" ''
cd first-dir
for i in 0 1 2 3 4 5 6 7 8 9; do
for j in 0 1 2 3 4 5 6 7 8 9; do
for k in 0 1 2 3 4 5 6 7 8 9; do
echo \
"This is line ($i,$j,$k) which goes into the file file1 for testing" >>file1
done
done
done
dotest big-2 "${testcvs} add file1" \
"${PROG} add: scheduling file .file1. for addition
${PROG} add: use .${PROG} commit. to add this file permanently"
dotest big-3 "${testcvs} -q ci -m add" \
"RCS file: ${CVSROOT_DIRNAME}/first-dir/file1,v
done
Checking in file1;
${CVSROOT_DIRNAME}/first-dir/file1,v <-- file1
initial revision: 1\.1
done"
cd ..
mkdir 2
cd 2
dotest big-4 "${testcvs} -q get first-dir" "U first-dir/file1"
cd ../first-dir
echo "add a line to the end" >>file1
dotest big-5 "${testcvs} -q ci -m modify" \
"Checking in file1;
${CVSROOT_DIRNAME}/first-dir/file1,v <-- file1
new revision: 1\.2; previous revision: 1\.1
done"
cd ../2/first-dir
dotest big-6 "${testcvs} -q update" "[UP] file1"
cd ../..
if $keep; then
echo Keeping ${TESTDIR} and exiting due to --keep
exit 0
fi
rm -r first-dir 2
rm -rf ${CVSROOT_DIRNAME}/first-dir
;;
modes)
umask 077
mkdir 1; cd 1
dotest modes-1 "${testcvs} -q co -l ." ''
mkdir first-dir
dotest modes-2 "${testcvs} add first-dir" \
"Directory ${CVSROOT_DIRNAME}/first-dir added to the repository"
cd first-dir
touch aa
dotest modes-3 "${testcvs} add aa" \
"${PROG} add: scheduling file .aa. for addition
${PROG} add: use .${PROG} commit. to add this file permanently"
dotest modes-4 "${testcvs} -q ci -m add" \
"RCS file: ${CVSROOT_DIRNAME}/first-dir/aa,v
done
Checking in aa;
${CVSROOT_DIRNAME}/first-dir/aa,v <-- aa
initial revision: 1\.1
done"
if test -n "$remotehost"; then
dotest modes-5remotehost "$CVS_RSH $remotehost 'ls -l ${CVSROOT_DIRNAME}/first-dir/aa,v'" \
"-r--r--r-- .*"
else
dotest modes-5 "ls -l ${CVSROOT_DIRNAME}/first-dir/aa,v" \
"-r--r--r-- .*"
fi
chmod +x aa
echo change it >>aa
dotest modes-6 "${testcvs} -q ci -m set-execute-bit" \
"Checking in aa;
${CVSROOT_DIRNAME}/first-dir/aa,v <-- aa
new revision: 1\.2; previous revision: 1\.1
done"
if test -n "$remotehost"; then
dotest modes-7remotehost "$CVS_RSH $remotehost 'ls -l ${CVSROOT_DIRNAME}/first-dir/aa,v'" \
"-r--r--r-- .*"
else
dotest modes-7 "ls -l ${CVSROOT_DIRNAME}/first-dir/aa,v" \
"-r--r--r-- .*"
fi
if test -n "$remotehost"; then
$CVS_RSH $remotehost "chmod g=r,o= ${CVSROOT_DIRNAME}/first-dir/aa,v"
else
chmod g=r,o= ${CVSROOT_DIRNAME}/first-dir/aa,v
fi
echo second line >>aa
dotest modes-7a "${testcvs} -q ci -m set-execute-bit" \
"Checking in aa;
${CVSROOT_DIRNAME}/first-dir/aa,v <-- aa
new revision: 1\.3; previous revision: 1\.2
done"
if test -n "$remotehost"; then
dotest modes-7bremotehost "$CVS_RSH $remotehost 'ls -l ${CVSROOT_DIRNAME}/first-dir/aa,v'" \
"-r--r----- .*"
else
dotest modes-7b "ls -l ${CVSROOT_DIRNAME}/first-dir/aa,v" \
"-r--r----- .*"
fi
CVSUMASK=007
export CVSUMASK
touch ab
chmod +x ab
dotest modes-8 "${testcvs} add ab" \
"${PROG} add: scheduling file .ab. for addition
${PROG} add: use .${PROG} commit. to add this file permanently"
dotest modes-9 "${testcvs} -q ci -m add" \
"RCS file: ${CVSROOT_DIRNAME}/first-dir/ab,v
done
Checking in ab;
${CVSROOT_DIRNAME}/first-dir/ab,v <-- ab
initial revision: 1\.1
done"
if $remote; then
if test -n "$remotehost"; then
dotest modes-10remotehost "$CVS_RSH $remotehost 'ls -l ${CVSROOT_DIRNAME}/first-dir/ab,v'" \
"-r--r--r--.*"
else
dotest modes-10r "ls -l ${CVSROOT_DIRNAME}/first-dir/ab,v" \
"-r-xr-x---.*" "-r-xr-xr-x.*"
fi
else
dotest modes-10 "ls -l ${CVSROOT_DIRNAME}/first-dir/ab,v" \
"-r-xr-x---.*"
fi
dotest modes-11 "${testcvs} -q tag -b br" 'T aa
T ab'
dotest modes-12 "${testcvs} -q update -r br" ''
touch ac
dotest modes-13 "${testcvs} add ac" \
"${PROG} add: scheduling file .ac. for addition on branch .br.
${PROG} add: use .${PROG} commit. to add this file permanently"
dotest modes-14 "${testcvs} -q ci -m add" \
"RCS file: ${CVSROOT_DIRNAME}/first-dir/Attic/ac,v
done
Checking in ac;
${CVSROOT_DIRNAME}/first-dir/Attic/ac,v <-- ac
new revision: 1\.1\.2\.1; previous revision: 1\.1
done"
if $remote; then
if test -n "$remotehost"; then
dotest modes-15r \
"$CVS_RSH $remotehost 'ls -l ${CVSROOT_DIRNAME}/first-dir/Attic/ac,v'" \
"-r--r--r--.*"
else
dotest modes-15r \
"ls -l ${CVSROOT_DIRNAME}/first-dir/Attic/ac,v" \
"-r--r--r--.*" "-r--r-----.*"
fi
else
dotest modes-15 \
"ls -l ${CVSROOT_DIRNAME}/first-dir/Attic/ac,v" \
"-r--r-----.*"
fi
cd ../..
rm -r 1
rm -rf ${CVSROOT_DIRNAME}/first-dir
;;
modes2)
mkdir 1; cd 1
dotest modes2-1 "${testcvs} -q co -l ." ''
mkdir first-dir
dotest modes2-2 "${testcvs} add first-dir" \
"Directory ${CVSROOT_DIRNAME}/first-dir added to the repository"
cd first-dir
touch aa
dotest modes2-3 "${testcvs} add aa" \
"${PROG} add: scheduling file .aa. for addition
${PROG} add: use .${PROG} commit. to add this file permanently"
dotest modes2-4 "${testcvs} -q ci -m add" \
"RCS file: ${CVSROOT_DIRNAME}/first-dir/aa,v
done
Checking in aa;
${CVSROOT_DIRNAME}/first-dir/aa,v <-- aa
initial revision: 1\.1
done"
echo "more money" >> aa
dotest modes2-5 "${testcvs} -q ci -m add" \
"Checking in aa;
${CVSROOT_DIRNAME}/first-dir/aa,v <-- aa
new revision: 1\.2; previous revision: 1\.1
done"
touch aa
chmod a= aa
if ls ${CVSROOT_DIRNAME}/first-dir >/dev/null 2>&1; then :; else
dotest_fail modes2-6 "${testcvs} -q update -r 1.1 aa" \
"${PROG} \[update aborted\]: cannot open file aa for comparing: Permission denied" \
"${PROG} \[update aborted\]: reading aa: Permission denied"
fi
chmod u+rwx aa
cd ../..
rm -r 1
rm -rf ${CVSROOT_DIRNAME}/first-dir
;;
modes3)
mkdir 1; cd 1
dotest modes3-1 "${testcvs} -q co -l ." ''
mkdir first-dir second-dir
dotest modes3-2 "${testcvs} add first-dir second-dir" \
"Directory ${CVSROOT_DIRNAME}/first-dir added to the repository
Directory ${CVSROOT_DIRNAME}/second-dir added to the repository"
touch first-dir/aa second-dir/ab
dotest modes3-3 "${testcvs} add first-dir/aa second-dir/ab" \
"${PROG} add: scheduling file .first-dir/aa. for addition
${PROG} add: scheduling file .second-dir/ab. for addition
${PROG} add: use .${PROG} commit. to add these files permanently"
dotest modes3-4 "${testcvs} -q ci -m add" \
"RCS file: ${CVSROOT_DIRNAME}/first-dir/aa,v
done
Checking in first-dir/aa;
${CVSROOT_DIRNAME}/first-dir/aa,v <-- aa
initial revision: 1\.1
done
RCS file: ${CVSROOT_DIRNAME}/second-dir/ab,v
done
Checking in second-dir/ab;
${CVSROOT_DIRNAME}/second-dir/ab,v <-- ab
initial revision: 1\.1
done"
if test -n "$remotehost"; then
$CVS_RSH $remotehost "chmod a= ${CVSROOT_DIRNAME}/first-dir"
else
chmod a= ${CVSROOT_DIRNAME}/first-dir
fi
if ls ${CVSROOT_DIRNAME}/first-dir >/dev/null 2>&1; then
if test -n "$remotehost"; then
cygwin_hack=false
else
cygwin_hack=:
fi
else
cygwin_hack=false
fi
cd $TESTDIR/1
if $cygwin_hack; then :; else
dotest modes3-5 "${testcvs} update" \
"${PROG} update: Updating \.
${PROG} update: Updating first-dir
${PROG} update: cannot open directory ${CVSROOT_DIRNAME}/first-dir: Permission denied
${PROG} update: skipping directory first-dir
${PROG} update: Updating second-dir"
fi
rm -r first-dir
dotest modes3-6 "${testcvs} update -dP" \
"${PROG} update: Updating .
${PROG} update: Updating CVSROOT
U ${DOTSTAR}
${PROG} update: Updating first-dir
${PROG} update: cannot open directory ${CVSROOT_DIRNAME}/first-dir: Permission denied
${PROG} update: skipping directory first-dir
${PROG} update: Updating second-dir" \
"${PROG} update: Updating .
${PROG} update: Updating CVSROOT
U ${DOTSTAR}
${PROG} update: Updating first-dir
${PROG} update: Updating second-dir"
cd ..
rm -r 1
chmod u+rwx ${CVSROOT_DIRNAME}/first-dir
rm -rf ${CVSROOT_DIRNAME}/first-dir ${CVSROOT_DIRNAME}/second-dir
;;
stamps)
mkdir 1; cd 1
dotest stamps-1 "${testcvs} -q co -l ." ''
mkdir first-dir
dotest stamps-2 "${testcvs} add first-dir" \
"Directory ${CVSROOT_DIRNAME}/first-dir added to the repository"
cd first-dir
touch aa
echo '$''Id$' >kw
sleep 60
ls -l aa >${TESTDIR}/1/stamp.aa.touch
ls -l kw >${TESTDIR}/1/stamp.kw.touch
sleep 60
dotest stamps-3 "${testcvs} add aa kw" \
"${PROG} add: scheduling file .aa. for addition
${PROG} add: scheduling file .kw. for addition
${PROG} add: use .${PROG} commit. to add these files permanently"
ls -l aa >${TESTDIR}/1/stamp.aa.add
ls -l kw >${TESTDIR}/1/stamp.kw.add
dotest stamps-4aa \
"cmp ${TESTDIR}/1/stamp.aa.touch ${TESTDIR}/1/stamp.aa.add" ''
dotest stamps-4kw \
"cmp ${TESTDIR}/1/stamp.kw.touch ${TESTDIR}/1/stamp.kw.add" ''
sleep 60
dotest stamps-5 "${testcvs} -q ci -m add" \
"RCS file: ${CVSROOT_DIRNAME}/first-dir/aa,v
done
Checking in aa;
${CVSROOT_DIRNAME}/first-dir/aa,v <-- aa
initial revision: 1\.1
done
RCS file: ${CVSROOT_DIRNAME}/first-dir/kw,v
done
Checking in kw;
${CVSROOT_DIRNAME}/first-dir/kw,v <-- kw
initial revision: 1\.1
done"
sleep 60
ls -l aa >${TESTDIR}/1/stamp.aa.ci
ls -l kw >${TESTDIR}/1/stamp.kw.ci
dotest stamps-6aa \
"cmp ${TESTDIR}/1/stamp.aa.add ${TESTDIR}/1/stamp.aa.ci" ''
if cmp ${TESTDIR}/1/stamp.kw.add ${TESTDIR}/1/stamp.kw.ci >/dev/null
then
fail stamps-6kw
else
pass stamps-6kw
fi
cd ../..
sleep 60
mkdir 2
cd 2
dotest stamps-7 "${testcvs} -q get first-dir" "U first-dir/aa
U first-dir/kw"
cd first-dir
ls -l aa >${TESTDIR}/1/stamp.aa.get
ls -l kw >${TESTDIR}/1/stamp.kw.get
if cmp ${TESTDIR}/1/stamp.aa.ci ${TESTDIR}/1/stamp.aa.get >/dev/null
then
fail stamps-8aa
else
pass stamps-8aa
fi
dotest stamps-8kw \
"cmp ${TESTDIR}/1/stamp.kw.ci ${TESTDIR}/1/stamp.kw.get" ''
sleep 60
echo add a line >>aa
echo add a line >>kw
dotest stamps-9 "${testcvs} -q ci -m change-them" \
"Checking in aa;
${CVSROOT_DIRNAME}/first-dir/aa,v <-- aa
new revision: 1\.2; previous revision: 1\.1
done
Checking in kw;
${CVSROOT_DIRNAME}/first-dir/kw,v <-- kw
new revision: 1\.2; previous revision: 1\.1
done"
sleep 60
ls -l aa >${TESTDIR}/1/stamp.aa.ci2
ls -l kw >${TESTDIR}/1/stamp.kw.ci2
cd ../..
cd 1/first-dir
sleep 60
dotest stamps-10 "${testcvs} -q update" '[UP] aa
[UP] kw'
date >${TESTDIR}/1/stamp.debug.update
ls -l aa >${TESTDIR}/1/stamp.aa.update
ls -l kw >${TESTDIR}/1/stamp.kw.update
if cmp ${TESTDIR}/1/stamp.aa.update ${TESTDIR}/1/stamp.aa.ci2 \
>/dev/null
then
fail stamps-11aa
else
pass stamps-11aa
fi
if cmp ${TESTDIR}/1/stamp.kw.update ${TESTDIR}/1/stamp.kw.ci2 \
>/dev/null
then
fail stamps-11kw
else
pass stamps-11kw
fi
cd ../..
if $keep; then
echo Keeping ${TESTDIR} and exiting due to --keep
exit 0
fi
rm -r 1 2
rm -rf ${CVSROOT_DIRNAME}/first-dir
;;
perms)
rm -f ${CVSROOT_DIRNAME}/CVSROOT/config
echo 'PreservePermissions=yes' > ${CVSROOT_DIRNAME}/CVSROOT/config
chmod 444 ${CVSROOT_DIRNAME}/CVSROOT/config
mkdir 1; cd 1
dotest perms-1 "${testcvs} -q co -l ." ''
mkdir first-dir
dotest perms-2 "${testcvs} add first-dir" \
"Directory ${CVSROOT_DIRNAME}/first-dir added to the repository"
cd first-dir
touch foo
chmod 431 foo
dotest perms-3 "${testcvs} add foo" \
"${PROG} add: scheduling file .foo. for addition
${PROG} add: use .${PROG} commit. to add this file permanently"
dotest perms-4 "${testcvs} -q ci -m ''" \
"RCS file: ${CVSROOT_DIRNAME}/first-dir/foo,v
done
Checking in foo;
${CVSROOT_DIRNAME}/first-dir/foo,v <-- foo
initial revision: 1\.1
done"
cd ../..
mkdir 2; cd 2
dotest perms-5 "${testcvs} -q co first-dir" "U first-dir/foo"
cd first-dir
if $remote; then :; else
dotest perms-6 "ls -l foo" "-r---wx--x .* foo"
fi
cd ../..
rm -rf 1 2
rm -rf ${CVSROOT_DIRNAME}/first-dir
rm -f ${CVSROOT_DIRNAME}/CVSROOT/config
touch ${CVSROOT_DIRNAME}/CVSROOT/config
chmod 444 ${CVSROOT_DIRNAME}/CVSROOT/config
;;
symlinks)
rm -f ${CVSROOT_DIRNAME}/CVSROOT/config
echo 'PreservePermissions=yes' > ${CVSROOT_DIRNAME}/CVSROOT/config
chmod 444 ${CVSROOT_DIRNAME}/CVSROOT/config
mkdir 1; cd 1
dotest symlinks-1 "${testcvs} -q co -l ." ''
mkdir first-dir
dotest symlinks-2 "${testcvs} add first-dir" \
"Directory ${CVSROOT_DIRNAME}/first-dir added to the repository"
cd first-dir
dotest symlinks-2.1 "ln -s ${TESTDIR}/fumble slink" ""
dotest symlinks-3 "${testcvs} add slink" \
"${PROG} add: scheduling file .slink. for addition
${PROG} add: use .${PROG} commit. to add this file permanently"
if $remote; then
dotest_fail symlinks-4r "${testcvs} -q ci -m ''" \
"${PROG} \[commit aborted\]: reading slink: No such file or directory"
else
dotest symlinks-4 "${testcvs} -q ci -m ''" \
"RCS file: ${CVSROOT_DIRNAME}/first-dir/slink,v
done
Checking in slink;
${CVSROOT_DIRNAME}/first-dir/slink,v <-- slink
initial revision: 1\.1
done"
cd ../..
mkdir 2; cd 2
dotest symlinks-5 "${testcvs} -q co first-dir" "U first-dir/slink"
cd first-dir
dotest symlinks-6 "ls -l slink" \
"l[rwx\-]* .* slink -> ${TESTDIR}/fumble"
fi
cd ../..
rm -rf 1 2
rm -rf ${CVSROOT_DIRNAME}/first-dir
rm -f ${CVSROOT_DIRNAME}/CVSROOT/config
touch ${CVSROOT_DIRNAME}/CVSROOT/config
chmod 444 ${CVSROOT_DIRNAME}/CVSROOT/config
;;
symlinks2)
mkdir 1; cd 1
dotest symlinks2-1 "${testcvs} -q co -l ." ''
mkdir first-dir
dotest symlinks2-2 "${testcvs} add first-dir" \
"Directory ${CVSROOT_DIRNAME}/first-dir added to the repository"
cd first-dir
echo nonsymlink > slink
dotest symlinks2-3 "${testcvs} add slink" \
"${PROG} add: scheduling file .slink. for addition
${PROG} add: use .${PROG} commit. to add this file permanently"
dotest symlinks2-4 "${testcvs} -q ci -m ''" \
"RCS file: ${CVSROOT_DIRNAME}/first-dir/slink,v
done
Checking in slink;
${CVSROOT_DIRNAME}/first-dir/slink,v <-- slink
initial revision: 1\.1
done"
rm slink
echo second file >cvslog.file2
dotest symlinks2-5 "ln -s cvslog.file2 slink" ""
dotest symlinks2-6 "${testcvs} -q ci -m linkify" \
"Checking in slink;
${CVSROOT_DIRNAME}/first-dir/slink,v <-- slink
new revision: 1\.2; previous revision: 1\.1
done"
dotest symlinks2-7 "${testcvs} -q update -r 1.1 slink" "[UP] slink"
dotest symlinks2-8 "cat slink" "nonsymlink"
dotest symlinks2-9 "ls -l slink" "-[-rwx]* .* slink"
cd ../..
rm -rf 1
rm -rf ${CVSROOT_DIRNAME}/first-dir
;;
hardlinks)
rm -f ${CVSROOT_DIRNAME}/CVSROOT/config
echo 'PreservePermissions=yes' > ${CVSROOT_DIRNAME}/CVSROOT/config
chmod 444 ${CVSROOT_DIRNAME}/CVSROOT/config
mkdir 1; cd 1
dotest hardlinks-1 "${testcvs} -q co -l ." ''
mkdir first-dir
dotest hardlinks-2 "${testcvs} add first-dir" \
"Directory ${CVSROOT_DIRNAME}/first-dir added to the repository"
cd first-dir
if touch aaaa
then
pass hardlinks-2.1
else
fail hardlinks-2.1
fi
if ln aaaa b.b.b.b
then
pass hardlinks-2.2
else
fail hardlinks-2.2
fi
if ln aaaa 'dd dd dd'
then
pass hardlinks-2.3
else
fail hardlinks-2.3
fi
dotest hardlinks-3 "${testcvs} add [abd]*" \
"${PROG} add: scheduling file .aaaa. for addition
${PROG} add: scheduling file .b\.b\.b\.b. for addition
${PROG} add: scheduling file .dd dd dd. for addition
${PROG} add: use .${PROG} commit. to add these files permanently"
dotest hardlinks-4 "${testcvs} -q ci -m ''" \
"RCS file: ${CVSROOT_DIRNAME}/first-dir/aaaa,v
done
Checking in aaaa;
${CVSROOT_DIRNAME}/first-dir/aaaa,v <-- aaaa
initial revision: 1\.1
done
RCS file: ${CVSROOT_DIRNAME}/first-dir/b\.b\.b\.b,v
done
Checking in b\.b\.b\.b;
${CVSROOT_DIRNAME}/first-dir/b\.b\.b\.b,v <-- b\.b\.b\.b
initial revision: 1\.1
done
RCS file: ${CVSROOT_DIRNAME}/first-dir/dd dd dd,v
done
Checking in dd dd dd;
${CVSROOT_DIRNAME}/first-dir/dd dd dd,v <-- dd dd dd
initial revision: 1\.1
done"
cd ../..
mkdir 2; cd 2
if $remote; then
dotest hardlinks-5r "${testcvs} -q co first-dir" \
"U first-dir/aaaa
U first-dir/b\.b\.b\.b
U first-dir/dd dd dd"
cd first-dir
dotest hardlinks-6r "ls -l [abd]*" \
"-[rwx\-]* *1 .* aaaa
-[rwx\-]* *1 .* b\.b\.b\.b
-[rwx\-]* *1 .* dd dd dd"
else
dotest hardlinks-5 "${testcvs} -q co first-dir" \
"U first-dir/aaaa
U first-dir/b\.b\.b\.b
U first-dir/dd dd dd"
cd first-dir
dotest hardlinks-6 "ls -l [abd]*" \
"-[rwx\-]* *3 .* aaaa
-[rwx\-]* *3 .* b\.b\.b\.b
-[rwx\-]* *3 .* dd dd dd"
fi
cd ../..
rm -rf 1 2
rm -rf ${CVSROOT_DIRNAME}/first-dir
rm -f ${CVSROOT_DIRNAME}/CVSROOT/config
touch ${CVSROOT_DIRNAME}/CVSROOT/config
chmod 444 ${CVSROOT_DIRNAME}/CVSROOT/config
;;
sticky)
mkdir 1; cd 1
dotest sticky-1 "${testcvs} -q co -l ." ''
mkdir first-dir
dotest sticky-2 "${testcvs} add first-dir" \
"Directory ${CVSROOT_DIRNAME}/first-dir added to the repository"
cd first-dir
touch file1
dotest sticky-3 "${testcvs} add file1" \
"${PROG} add: scheduling file .file1. for addition
${PROG} add: use .${PROG} commit. to add this file permanently"
dotest sticky-4 "${testcvs} -q ci -m add" \
"RCS file: ${CVSROOT_DIRNAME}/first-dir/file1,v
done
Checking in file1;
${CVSROOT_DIRNAME}/first-dir/file1,v <-- file1
initial revision: 1\.1
done"
dotest sticky-5 "${testcvs} -q tag tag1" "T file1"
echo add a line >>file1
dotest sticky-6 "${testcvs} -q ci -m modify" \
"Checking in file1;
${CVSROOT_DIRNAME}/first-dir/file1,v <-- file1
new revision: 1\.2; previous revision: 1\.1
done"
dotest sticky-7 "${testcvs} -q update -r tag1" "[UP] file1"
dotest sticky-8 "cat file1" ''
dotest sticky-9 "${testcvs} -q update" ''
dotest sticky-10 "cat file1" ''
touch file2
dotest_fail sticky-11 "${testcvs} add file2" \
"${PROG} add: cannot add file on non-branch tag tag1"
dotest sticky-12 "${testcvs} -q update -A" "[UP] file1
${QUESTION} file2" "${QUESTION} file2
[UP] file1"
dotest sticky-13 "${testcvs} add file2" \
"${PROG} add: scheduling file .file2. for addition
${PROG} add: use .${PROG} commit. to add this file permanently"
dotest sticky-14 "${testcvs} -q ci -m add" \
"RCS file: ${CVSROOT_DIRNAME}/first-dir/file2,v
done
Checking in file2;
${CVSROOT_DIRNAME}/first-dir/file2,v <-- file2
initial revision: 1\.1
done"
dotest sticky-15 "${testcvs} -q update -r tag1" "[UP] file1
${PROG} update: file2 is no longer in the repository"
rm file1
dotest sticky-16 "${testcvs} rm file1" \
"${PROG} remove: scheduling .file1. for removal
${PROG} remove: use .${PROG} commit. to remove this file permanently"
dotest sticky-17 "${testcvs} -q ci -m remove-it" ""
dotest sticky-18 "${testcvs} -q update -A" "U file1
U file2"
dotest sticky-19 "${testcvs} -q update -r tag1" \
"${PROG} update: file1 is no longer in the repository
${PROG} update: file2 is no longer in the repository"
dotest sticky-20 "${testcvs} -q update -A" "U file1
U file2"
dotest sticky-21 "${testcvs} -q update -r 1.1 file1" "U file1"
dotest sticky-22 "${testcvs} rm -f file1" \
"${PROG} remove: cannot remove file .file1. which has a numeric sticky tag of .1\.1."
dotest sticky-23 "${testcvs} -q update -Dnow file1" \
"${PROG} update: warning: file1 was lost
U file1" "U file1"
dotest sticky-24 "${testcvs} rm -f file1" \
"${PROG} remove: cannot remove file .file1. which has a sticky date of .[0-9.]*."
dotest sticky-25 "${testcvs} -q update -A" \
"${PROG} update: warning: file1 was lost
U file1" "U file1"
cd ../..
rm -r 1
rm -rf ${CVSROOT_DIRNAME}/first-dir
;;
keyword)
mkdir 1; cd 1
dotest keyword-1 "${testcvs} -q co -l ." ''
mkdir first-dir
dotest keyword-2 "${testcvs} add first-dir" \
"Directory ${CVSROOT_DIRNAME}/first-dir added to the repository"
cd first-dir
echo '$''Author$' > file1
echo '$''Date$' >> file1
echo '$''Header$' >> file1
echo '$''Id$' >> file1
echo '$''Locker$' >> file1
echo '$''Name$' >> file1
echo '$''RCSfile$' >> file1
echo '$''Revision$' >> file1
echo '$''Source$' >> file1
echo '$''State$' >> file1
echo '$''Nonkey$' >> file1
echo '$''Date' >> file1
echo '$''State$' '$''State$' >> file1
echo 'xx $''Log$' >> file1
dotest keyword-3 "${testcvs} add file1" \
"${PROG} add: scheduling file .file1. for addition
${PROG} add: use .${PROG} commit. to add this file permanently"
dotest keyword-4 "${testcvs} -q ci -m add" \
"RCS file: ${CVSROOT_DIRNAME}/first-dir/file1,v
done
Checking in file1;
${CVSROOT_DIRNAME}/first-dir/file1,v <-- file1
initial revision: 1\.1
done"
dotest keyword-5 "cat file1" \
'\$'"Author: ${username} "'\$'"
"'\$'"Date: [0-9][0-9][0-9][0-9]/[0-9][0-9]/[0-9][0-9] [0-9][0-9]:[0-9][0-9]:[0-9][0-9] "'\$'"
"'\$'"Header: ${CVSROOT_DIRNAME}/first-dir/file1,v 1\.1 [0-9/]* [0-9:]* ${username} Exp "'\$'"
"'\$'"Id: file1,v 1\.1 [0-9/]* [0-9:]* ${username} Exp "'\$'"
"'\$'"Locker: "'\$'"
"'\$'"Name: "'\$'"
"'\$'"RCSfile: file1,v "'\$'"
"'\$'"Revision: 1\.1 "'\$'"
"'\$'"Source: ${CVSROOT_DIRNAME}/first-dir/file1,v "'\$'"
"'\$'"State: Exp "'\$'"
"'\$'"Nonkey"'\$'"
"'\$'"Date
"'\$'"State: Exp "'\$'" "'\$'"State: Exp "'\$'"
xx "'\$'"Log: file1,v "'\$'"
xx Revision 1\.1 [0-9/]* [0-9:]* ${username}
xx add
xx"
dotest keyword-6 "${testcvs} admin -l file1" \
"RCS file: ${CVSROOT_DIRNAME}/first-dir/file1,v
1\.1 locked
done"
dotest keyword-7 "${testcvs} update -kkv file1" "U file1"
dotest keyword-8 "cat file1" \
'\$'"Author: ${username} "'\$'"
"'\$'"Date: [0-9][0-9][0-9][0-9]/[0-9][0-9]/[0-9][0-9] [0-9][0-9]:[0-9][0-9]:[0-9][0-9] "'\$'"
"'\$'"Header: ${CVSROOT_DIRNAME}/first-dir/file1,v 1\.1 [0-9/]* [0-9:]* ${username} Exp "'\$'"
"'\$'"Id: file1,v 1\.1 [0-9/]* [0-9:]* ${username} Exp "'\$'"
"'\$'"Locker: "'\$'"
"'\$'"Name: "'\$'"
"'\$'"RCSfile: file1,v "'\$'"
"'\$'"Revision: 1\.1 "'\$'"
"'\$'"Source: ${CVSROOT_DIRNAME}/first-dir/file1,v "'\$'"
"'\$'"State: Exp "'\$'"
"'\$'"Nonkey"'\$'"
"'\$'"Date
"'\$'"State: Exp "'\$'" "'\$'"State: Exp "'\$'"
xx "'\$'"Log: file1,v "'\$'"
xx Revision 1\.1 [0-9/]* [0-9:]* ${username}
xx add
xx"
dotest keyword-9 "${testcvs} update -kkvl file1" "U file1"
dotest keyword-10 "cat file1" \
'\$'"Author: ${username} "'\$'"
"'\$'"Date: [0-9][0-9][0-9][0-9]/[0-9][0-9]/[0-9][0-9] [0-9][0-9]:[0-9][0-9]:[0-9][0-9] "'\$'"
"'\$'"Header: ${CVSROOT_DIRNAME}/first-dir/file1,v 1\.1 [0-9/]* [0-9:]* ${username} Exp ${username} "'\$'"
"'\$'"Id: file1,v 1\.1 [0-9/]* [0-9:]* ${username} Exp ${username} "'\$'"
"'\$'"Locker: ${username} "'\$'"
"'\$'"Name: "'\$'"
"'\$'"RCSfile: file1,v "'\$'"
"'\$'"Revision: 1\.1 "'\$'"
"'\$'"Source: ${CVSROOT_DIRNAME}/first-dir/file1,v "'\$'"
"'\$'"State: Exp "'\$'"
"'\$'"Nonkey"'\$'"
"'\$'"Date
"'\$'"State: Exp "'\$'" "'\$'"State: Exp "'\$'"
xx "'\$'"Log: file1,v "'\$'"
xx Revision 1\.1 [0-9/]* [0-9:]* ${username}
xx add
xx"
dotest keyword-11 "${testcvs} update -kk file1" "U file1"
dotest keyword-12 "cat file1" \
'\$'"Author"'\$'"
"'\$'"Date"'\$'"
"'\$'"Header"'\$'"
"'\$'"Id"'\$'"
"'\$'"Locker"'\$'"
"'\$'"Name"'\$'"
"'\$'"RCSfile"'\$'"
"'\$'"Revision"'\$'"
"'\$'"Source"'\$'"
"'\$'"State"'\$'"
"'\$'"Nonkey"'\$'"
"'\$'"Date
"'\$'"State"'\$'" "'\$'"State"'\$'"
xx "'\$'"Log"'\$'"
xx Revision 1\.1 [0-9/]* [0-9:]* ${username}
xx add
xx"
dotest keyword-13 "${testcvs} update -kv file1" "U file1"
dotest keyword-14 "cat file1" \
"${username}
[0-9][0-9][0-9][0-9]/[0-9][0-9]/[0-9][0-9] [0-9][0-9]:[0-9][0-9]:[0-9][0-9]
${CVSROOT_DIRNAME}/first-dir/file1,v 1\.1 [0-9/]* [0-9:]* ${username} Exp
file1,v 1\.1 [0-9/]* [0-9:]* ${username} Exp
file1,v
1\.1
${CVSROOT_DIRNAME}/first-dir/file1,v
Exp
"'\$'"Nonkey"'\$'"
"'\$'"Date
Exp Exp
xx file1,v
xx Revision 1\.1 [0-9/]* [0-9:]* ${username}
xx add
xx"
dotest keyword-15 "${testcvs} update -ko file1" "U file1"
dotest keyword-16 "cat file1" \
'\$'"Author"'\$'"
"'\$'"Date"'\$'"
"'\$'"Header"'\$'"
"'\$'"Id"'\$'"
"'\$'"Locker"'\$'"
"'\$'"Name"'\$'"
"'\$'"RCSfile"'\$'"
"'\$'"Revision"'\$'"
"'\$'"Source"'\$'"
"'\$'"State"'\$'"
"'\$'"Nonkey"'\$'"
"'\$'"Date
"'\$'"State"'\$'" "'\$'"State"'\$'"
xx "'\$'"Log"'\$'
dotest keyword-17 "${testcvs} update -A file1" "U file1"
echo '$''Name$' > file1
dotest keyword-18 "${testcvs} ci -m modify file1" \
"Checking in file1;
${CVSROOT_DIRNAME}/first-dir/file1,v <-- file1
new revision: 1\.2; previous revision: 1\.1
done"
dotest keyword-19 "${testcvs} -q tag tag1" "T file1"
echo "change" >> file1
dotest keyword-20 "${testcvs} -q ci -m mod2 file1" \
"Checking in file1;
${CVSROOT_DIRNAME}/first-dir/file1,v <-- file1
new revision: 1\.3; previous revision: 1\.2
done"
dotest keyword-21 "${testcvs} -q update -r tag1" "U file1" \
"P file1
${PROG} update: checksum failure after patch to \./file1; will refetch
${PROG} client: refetching unpatchable files
${PROG} update: warning: file1 was lost
U file1"
dotest keyword-22 "cat file1" '\$'"Name: tag1 "'\$'
if $remote; then
dotest keyword-23r "${testcvs} update -A file1" "P file1
${PROG} update: checksum failure after patch to \./file1; will refetch
${PROG} client: refetching unpatchable files
${PROG} update: warning: file1 was lost
U file1"
else
dotest keyword-23 "${testcvs} update -A file1" "[UP] file1"
fi
dotest keyword-24 "cat file1" '\$'"Name: "'\$'"
change"
cd ../..
rm -r 1
rm -rf ${CVSROOT_DIRNAME}/first-dir
;;
keywordlog)
mkdir 1; cd 1
dotest keywordlog-1 "${testcvs} -q co -l ." ''
mkdir first-dir
dotest keywordlog-2 "${testcvs} add first-dir" \
"Directory ${CVSROOT_DIRNAME}/first-dir added to the repository"
cd first-dir
echo initial >file1
dotest keywordlog-3 "${testcvs} add file1" \
"${PROG} add: scheduling file .file1. for addition
${PROG} add: use .${PROG} commit. to add this file permanently"
dotest keywordlog-4 "${testcvs} -q ci -r 1.3 -m add file1" \
"RCS file: ${CVSROOT_DIRNAME}/first-dir/file1,v
done
Checking in file1;
${CVSROOT_DIRNAME}/first-dir/file1,v <-- file1
initial revision: 1\.3
done"
cd ../..
mkdir 2; cd 2
dotest keywordlog-4a "${testcvs} -q co first-dir" "U first-dir/file1"
cd ../1/first-dir
echo 'xx $''Log$' >> file1
cat >${TESTDIR}/comment.tmp <<EOF
First log line
Second log line
EOF
dotest_fail keywordlog-4b \
"${testcvs} ci -F ${TESTDIR}/comment.tmp file1" \
"${PROG} commit: sticky tag .1\.3. for file .file1. is not a branch
${PROG} \[commit aborted\]: correct above errors first!"
dotest keywordlog-4c "${testcvs} -q update -A" "M file1"
dotest keywordlog-5 "${testcvs} ci -F ${TESTDIR}/comment.tmp file1" \
"Checking in file1;
${CVSROOT_DIRNAME}/first-dir/file1,v <-- file1
new revision: 1\.4; previous revision: 1\.3
done"
rm -f ${TESTDIR}/comment.tmp
dotest keywordlog-6 "${testcvs} -q tag -b br" "T file1"
dotest keywordlog-7 "cat file1" \
"initial
xx "'\$'"Log: file1,v "'\$'"
xx Revision 1\.4 [0-9/]* [0-9:]* ${username}
xx First log line
xx Second log line
xx"
cd ../../2/first-dir
dotest keywordlog-8 "${testcvs} -q update" "[UP] file1"
dotest keywordlog-9 "cat file1" \
"initial
xx "'\$'"Log: file1,v "'\$'"
xx Revision 1\.4 [0-9/]* [0-9:]* ${username}
xx First log line
xx Second log line
xx"
cd ../../1/first-dir
echo "change" >> file1
dotest keywordlog-10 "${testcvs} ci -m modify file1" \
"Checking in file1;
${CVSROOT_DIRNAME}/first-dir/file1,v <-- file1
new revision: 1\.5; previous revision: 1\.4
done"
dotest keywordlog-11 "cat file1" \
"initial
xx "'\$'"Log: file1,v "'\$'"
xx Revision 1\.5 [0-9/]* [0-9:]* ${username}
xx modify
xx
xx Revision 1\.4 [0-9/]* [0-9:]* ${username}
xx First log line
xx Second log line
xx
change"
cd ../../2/first-dir
dotest keywordlog-12 "${testcvs} -q update" "[UP] file1"
dotest keywordlog-13 "cat file1" \
"initial
xx "'\$'"Log: file1,v "'\$'"
xx Revision 1\.5 [0-9/]* [0-9:]* ${username}
xx modify
xx
xx Revision 1\.4 [0-9/]* [0-9:]* ${username}
xx First log line
xx Second log line
xx
change"
cd ../../1/first-dir
dotest keywordlog-14 "${testcvs} -q update -r br" "[UP] file1"
echo br-change >>file1
dotest keywordlog-15 "${testcvs} -q ci -m br-modify" \
"Checking in file1;
${CVSROOT_DIRNAME}/first-dir/file1,v <-- file1
new revision: 1\.4\.2\.1; previous revision: 1\.4
done"
dotest keywordlog-16 "cat file1" \
"initial
xx "'\$'"Log: file1,v "'\$'"
xx Revision 1\.4\.2\.1 [0-9/]* [0-9:]* ${username}
xx br-modify
xx
xx Revision 1\.4 [0-9/]* [0-9:]* ${username}
xx First log line
xx Second log line
xx
br-change"
cd ../../2/first-dir
dotest keywordlog-17 "${testcvs} -q update -r br" "[UP] file1"
dotest keywordlog-18 "cat file1" \
"initial
xx "'\$'"Log: file1,v "'\$'"
xx Revision 1\.4\.2\.1 [0-9/]* [0-9:]* ${username}
xx br-modify
xx
xx Revision 1\.4 [0-9/]* [0-9:]* ${username}
xx First log line
xx Second log line
xx
br-change"
cd ../..
dotest keywordlog-19 "${testcvs} -q co -p -r br first-dir/file1" \
"initial
xx "'\$'"Log: file1,v "'\$'"
xx Revision 1\.4\.2\.1 [0-9/]* [0-9:]* ${username}
xx br-modify
xx
xx Revision 1\.4 [0-9/]* [0-9:]* ${username}
xx First log line
xx Second log line
xx
br-change"
dotest keywordlog-20 "${testcvs} -q co -p first-dir/file1" \
"initial
xx "'\$'"Log: file1,v "'\$'"
xx Revision 1\.5 [0-9/]* [0-9:]* ${username}
xx modify
xx
xx Revision 1\.4 [0-9/]* [0-9:]* ${username}
xx First log line
xx Second log line
xx
change"
dotest keywordlog-21 "${testcvs} -q co -p -r 1.4 first-dir/file1" \
"initial
xx "'\$'"Log: file1,v "'\$'"
xx Revision 1\.4 [0-9/]* [0-9:]* ${username}
xx First log line
xx Second log line
xx"
cd 2/first-dir
dotest keywordlog-22 "${testcvs} ann -r br file1" \
"
Annotations for file1
\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*
1\.3 (${username} *[0-9a-zA-Z-]*): initial
1\.4\.2\.1 (${username} *[0-9a-zA-Z-]*): xx "'\$'"Log: file1,v "'\$'"
1\.4\.2\.1 (${username} *[0-9a-zA-Z-]*): xx Revision 1\.4 [0-9/]* [0-9:]* ${username}
1\.4\.2\.1 (${username} *[0-9a-zA-Z-]*): xx First log line
1\.4\.2\.1 (${username} *[0-9a-zA-Z-]*): xx Second log line
1\.4\.2\.1 (${username} *[0-9a-zA-Z-]*): xx
1\.4\.2\.1 (${username} *[0-9a-zA-Z-]*): br-change"
dotest keywordlog-23 "${testcvs} ann -r HEAD file1" \
"
Annotations for file1
\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*
1\.3 (${username} *[0-9a-zA-Z-]*): initial
1\.5 (${username} *[0-9a-zA-Z-]*): xx "'\$'"Log: file1,v "'\$'"
1\.5 (${username} *[0-9a-zA-Z-]*): xx Revision 1\.4 [0-9/]* [0-9:]* ${username}
1\.5 (${username} *[0-9a-zA-Z-]*): xx First log line
1\.5 (${username} *[0-9a-zA-Z-]*): xx Second log line
1\.5 (${username} *[0-9a-zA-Z-]*): xx
1\.5 (${username} *[0-9a-zA-Z-]*): change"
cd ../..
dotest keywordlog-24 \
"${testcvs} admin -oHEAD 1/first-dir/file1" \
"RCS file: ${CVSROOT_DIRNAME}/first-dir/file1,v
deleting revision 1\.5
done"
dotest keywordlog-25 \
"${testcvs} -q co -p first-dir/file1" \
"initial
xx "'\$'"Log: file1,v "'\$'"
xx Revision 1\.4 [0-9/]* [0-9:]* ${username}
xx First log line
xx Second log line
xx"
if $keep; then
echo Keeping ${TESTDIR} and exiting due to --keep
exit 0
fi
rm -r 1 2
rm -rf ${CVSROOT_DIRNAME}/first-dir
;;
keywordname)
mkdir keywordname; cd keywordname
mkdir 1; cd 1
dotest keywordname-init-1 "${testcvs} -q co -l ." ''
mkdir first-dir
dotest keywordname-init-2 "${testcvs} add first-dir" \
"Directory ${CVSROOT_DIRNAME}/first-dir added to the repository"
cd first-dir
echo '$'"Name$" >file1
echo '$'"Name$" >file2
dotest keywordname-init-3 "${testcvs} add file1 file2" \
"${PROG} add: scheduling file .file1. for addition
${PROG} add: scheduling file .file2. for addition
${PROG} add: use .${PROG} commit. to add these files permanently"
dotest keywordname-init-4 "${testcvs} -q ci -r 1.3 -m add" \
"RCS file: ${CVSROOT_DIRNAME}/first-dir/file1,v
done
Checking in file1;
${CVSROOT_DIRNAME}/first-dir/file1,v <-- file1
initial revision: 1\.3
done
RCS file: ${CVSROOT_DIRNAME}/first-dir/file2,v
done
Checking in file2;
${CVSROOT_DIRNAME}/first-dir/file2,v <-- file2
initial revision: 1\.3
done"
dotest keywordname-init-6 "${testcvs} -q up -A"
dotest keywordname-init-7 "${testcvs} -q tag -b br" \
"T file1
T file2"
echo new data >>file1
dotest keywordname-init-8 "${testcvs} -q ci -mchange" \
"Checking in file1;
${CVSROOT_DIRNAME}/first-dir/file1,v <-- file1
new revision: 1\.4; previous revision: 1\.3
done"
dotest keywordname-update-1 "${testcvs} -q up -rbr" "U file1" \
"P file1
${PROG} update: checksum failure after patch to \./file1; will refetch
${PROG} client: refetching unpatchable files
${PROG} update: warning: file1 was lost
U file1"
dotest keywordname-update-2 "cat file1" '\$'"Name: br "'\$'
dotest keywordname-update-3 "cat file2" '\$'"Name: "'\$'
dotest keywordname-update-4 "${testcvs} -q tag firsttag" \
"T file1
T file2"
dotest keywordname-update-5 "${testcvs} -q up -A" "U file1" \
"P file1
${PROG} update: checksum failure after patch to \./file1; will refetch
${PROG} client: refetching unpatchable files
${PROG} update: warning: file1 was lost
U file1"
dotest keywordname-update-6 "cat file1" \
'\$'"Name: "'\$'"
new data"
dotest keywordname-update-7 "cat file2" '\$'"Name: "'\$'
dotest keywordname-update-8 "${testcvs} -q up -rfirsttag" "U file1" \
"P file1
${PROG} update: checksum failure after patch to \./file1; will refetch
${PROG} client: refetching unpatchable files
${PROG} update: warning: file1 was lost
U file1"
dotest keywordname-update-9 "cat file1" '\$'"Name: firsttag "'\$'
dotest keywordname-update-10 "cat file2" '\$'"Name: "'\$'
dotest keywordname-update-11 "${testcvs} -q up -A" "[UP] file1" \
"P file1
${PROG} update: checksum failure after patch to ./file1; will refetch
${PROG} client: refetching unpatchable files
${PROG} update: warning: file1 was lost
U file1"
dotest keywordname-update-12 "cat file1" \
'\$'"Name: "'\$'"
new data"
dotest keywordname-update-13 "cat file2" '\$'"Name: "'\$'
cd ../..
mkdir 2; cd 2
dotest keywordname-checkout-1 \
"${testcvs} -q co -rfirsttag first-dir" \
"U first-dir/file1
U first-dir/file2"
cd first-dir
dotest keywordname-checkout-2 "cat file1" '\$'"Name: firsttag "'\$'
dotest keywordname-checkout-3 "cat file2" '\$'"Name: firsttag "'\$'
cd ../..
if $keep; then
echo Keeping ${TESTDIR} and exiting due to --keep
exit 0
fi
cd ..
rm -r keywordname
rm -rf ${CVSROOT_DIRNAME}/first-dir
;;
keyword2)
mkdir 1; cd 1
dotest keyword2-1 "${testcvs} -q co -l ." ''
mkdir first-dir
dotest keyword2-2 "${testcvs} add first-dir" \
"Directory ${CVSROOT_DIRNAME}/first-dir added to the repository"
cd first-dir
echo '$''Revision$' >> file1
echo "I" >>file1
echo "like" >>file1
echo "long" >>file1
echo "files!" >>file1
echo "" >>file1
echo "a test line for our times" >>file1
echo "" >>file1
echo "They" >>file1
echo "make" >>file1
echo "diff" >>file1
echo "look like it" >>file1
echo "did a much better" >>file1
echo "job." >>file1
dotest keyword2-3 "${testcvs} add file1" \
"${PROG} add: scheduling file .file1. for addition
${PROG} add: use .${PROG} commit. to add this file permanently"
${AWK} 'BEGIN { printf "%c%c%c%sRevision: 1.1 $@%c%c", \
2, 10, 137, "$", 13, 10 }' \
</dev/null | ${TR} '@' '\000' >../binfile.dat
cp ../binfile.dat .
dotest keyword2-5 "${testcvs} add -kb binfile.dat" \
"${PROG} add: scheduling file .binfile\.dat. for addition
${PROG} add: use .${PROG} commit. to add this file permanently"
dotest keyword2-6 "${testcvs} -q ci -m add" \
"RCS file: ${CVSROOT_DIRNAME}/first-dir/binfile\.dat,v
done
Checking in binfile\.dat;
${CVSROOT_DIRNAME}/first-dir/binfile\.dat,v <-- binfile\.dat
initial revision: 1\.1
done
RCS file: ${CVSROOT_DIRNAME}/first-dir/file1,v
done
Checking in file1;
${CVSROOT_DIRNAME}/first-dir/file1,v <-- file1
initial revision: 1\.1
done"
dotest keyword2-7 "${testcvs} -q tag -b branch" \
"T binfile\.dat
T file1"
sed -e 's/our/the best of and the worst of/' file1 >f; mv f file1
dotest keyword2-8 "${testcvs} -q ci -m change" \
"Checking in file1;
${CVSROOT_DIRNAME}/first-dir/file1,v <-- file1
new revision: 1\.2; previous revision: 1\.1
done"
dotest keyword2-9 "${testcvs} -q update -r branch" '[UP] file1'
echo "what else do we have?" >>file1
dotest keyword2-10 "${testcvs} -q ci -m change" \
"Checking in file1;
${CVSROOT_DIRNAME}/first-dir/file1,v <-- file1
new revision: 1\.1\.2\.1; previous revision: 1\.1
done"
dotest keyword2-11 "${testcvs} -q update -A -j branch" \
"U file1
RCS file: ${CVSROOT_DIRNAME}/first-dir/file1,v
retrieving revision 1\.1
retrieving revision 1\.1\.2\.1
Merging differences between 1\.1 and 1\.1\.2\.1 into file1
rcsmerge: warning: conflicts during merge"
dotest_fail keyword2-12 "${testcvs} diff file1" \
"Index: file1
===================================================================
RCS file: ${CVSROOT_DIRNAME}/first-dir/file1,v
retrieving revision 1\.2
diff -r1\.2 file1
0a1
> <<<<<<< file1
1a3,5
> =======
> \\\$""Revision: 1\.1\.2\.1 \\\$
> >>>>>>> 1\.1\.2\.1
14a19
> what else do we have${QUESTION}"
rm file1
dotest keyword2-13 "${testcvs} -q update -A -kk -j branch" \
"U binfile\.dat
${PROG} update: warning: file1 was lost
U file1
RCS file: ${CVSROOT_DIRNAME}/first-dir/file1,v
retrieving revision 1\.1
retrieving revision 1\.1\.2\.1
Merging differences between 1\.1 and 1\.1\.2\.1 into file1"
dotest keyword2-14 "${testcvs} -q ci -m change" \
"Checking in file1;
${CVSROOT_DIRNAME}/first-dir/file1,v <-- file1
new revision: 1\.3; previous revision: 1\.2
done"
dotest_fail keyword2-15 "cmp binfile.dat ../binfile.dat" \
"binfile\.dat \.\./binfile\.dat differ: char 13, line 2"
dotest keyword2-16 "${testcvs} -q update -A" \
"[UP] binfile.dat
[UP] file1"
dotest keyword2-17 "${testcvs} -q tag -b branch2" \
"T binfile\.dat
T file1"
dotest keyword2-18 "${testcvs} -q update -r branch2" ''
${AWK} 'BEGIN { printf "%c%c%c@%c%c", 2, 10, 137, 13, 10 }' \
</dev/null | ${TR} '@' '\000' >>binfile.dat
dotest keyword2-19 "${testcvs} -q ci -m badbadbad" \
"Checking in binfile\.dat;
${CVSROOT_DIRNAME}/first-dir/binfile\.dat,v <-- binfile\.dat
new revision: 1\.1\.4\.1; previous revision: 1\.1
done"
dotest keyword2-20 "${testcvs} -q update -A -kk -j branch2" \
"U binfile\.dat
RCS file: ${CVSROOT_DIRNAME}/first-dir/binfile\.dat,v
retrieving revision 1\.1
retrieving revision 1\.1\.4\.1
Merging differences between 1\.1 and 1\.1\.4\.1 into binfile\.dat
U file1"
cd ../..
rm -r 1
rm -rf ${CVSROOT_DIRNAME}/first-dir
;;
head)
mkdir imp-dir
cd imp-dir
echo 'imported contents' >file1
echo 'imported contents' >file2
dotest_sort head-1 "${testcvs} import -m add first-dir tag1 tag2" \
"
N first-dir/file1
N first-dir/file2
No conflicts created by this import"
cd ..
rm -r imp-dir
mkdir 1
cd 1
dotest head-2 "${testcvs} -q co first-dir" \
"U first-dir/file1
U first-dir/file2"
cd first-dir
echo 'add a line on trunk' >> file1
dotest head-3 "${testcvs} -q ci -m modify" \
"Checking in file1;
${CVSROOT_DIRNAME}/first-dir/file1,v <-- file1
new revision: 1\.2; previous revision: 1\.1
done"
dotest head-4 "${testcvs} -q tag trunktag" "T file1
T file2"
echo 'add a line on trunk after trunktag' >> file1
dotest head-5 "${testcvs} -q ci -m modify" \
"Checking in file1;
${CVSROOT_DIRNAME}/first-dir/file1,v <-- file1
new revision: 1\.3; previous revision: 1\.2
done"
dotest head-6 "${testcvs} -q tag -b br1" "T file1
T file2"
dotest head-7 "${testcvs} -q update -r br1" ""
echo 'modify on branch' >>file1
dotest head-8 "${testcvs} -q ci -m modify" \
"Checking in file1;
${CVSROOT_DIRNAME}/first-dir/file1,v <-- file1
new revision: 1\.3\.2\.1; previous revision: 1\.3
done"
dotest head-9 "${testcvs} -q tag brtag" "T file1
T file2"
echo 'modify on branch after brtag' >>file1
dotest head-10 "${testcvs} -q ci -m modify" \
"Checking in file1;
${CVSROOT_DIRNAME}/first-dir/file1,v <-- file1
new revision: 1\.3\.2\.2; previous revision: 1\.3\.2\.1
done"
dotest head-trunk-setup "${testcvs} -q update -A" "[UP] file1"
dotest head-trunk-update "${testcvs} -q update -r HEAD -p file1" \
"imported contents
add a line on trunk
add a line on trunk after trunktag"
dotest_fail head-trunk-diff "${testcvs} -q diff -c -r HEAD -r br1" \
"Index: file1
===================================================================
RCS file: ${CVSROOT_DIRNAME}/first-dir/file1,v
retrieving revision 1\.3
retrieving revision 1\.3\.2\.2
diff -c -r1\.3 -r1\.3\.2\.2
\*\*\* file1 ${RFCDATE} 1\.3
--- file1 ${RFCDATE} 1\.3\.2\.2
\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*
\*\*\* 1,3 \*\*\*\*
--- 1,5 ----
imported contents
add a line on trunk
add a line on trunk after trunktag
${PLUS} modify on branch
${PLUS} modify on branch after brtag"
dotest head-br1-setup "${testcvs} -q update -r br1" "[UP] file1"
dotest head-br1-update "${testcvs} -q update -r HEAD -p file1" \
"imported contents
add a line on trunk
add a line on trunk after trunktag"
dotest head-br1-diff "${testcvs} -q diff -c -r HEAD -r br1" ""
dotest head-brtag-setup "${testcvs} -q update -r brtag" "[UP] file1"
dotest head-brtag-update "${testcvs} -q update -r HEAD -p file1" \
"imported contents
add a line on trunk
add a line on trunk after trunktag"
dotest head-brtag-diff "${testcvs} -q diff -c -r HEAD -r br1" ""
dotest head-trunktag-setup "${testcvs} -q update -r trunktag" \
"[UP] file1"
dotest head-trunktag-check "cat file1" "imported contents
add a line on trunk"
dotest head-trunktag-update "${testcvs} -q update -r HEAD -p file1" \
"imported contents
add a line on trunk
add a line on trunk after trunktag"
dotest_fail head-trunktag-diff \
"${testcvs} -q diff -c -r HEAD -r br1" \
"Index: file1
===================================================================
RCS file: ${CVSROOT_DIRNAME}/first-dir/file1,v
retrieving revision 1\.3
retrieving revision 1\.3\.2\.2
diff -c -r1\.3 -r1\.3\.2\.2
\*\*\* file1 ${RFCDATE} 1\.3
--- file1 ${RFCDATE} 1\.3\.2\.2
\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*
\*\*\* 1,3 \*\*\*\*
--- 1,5 ----
imported contents
add a line on trunk
add a line on trunk after trunktag
${PLUS} modify on branch
${PLUS} modify on branch after brtag"
dotest_fail head-o0a "${testcvs} admin -o ::br1" \
"${PROG} admin: Administrating \.
RCS file: ${CVSROOT_DIRNAME}/first-dir/file1,v
${PROG} admin: cannot remove revision 1\.3\.2\.1 because it has tags
${PROG} admin: RCS file for .file1. not modified\.
RCS file: ${CVSROOT_DIRNAME}/first-dir/file2,v
done"
dotest head-o0b "${testcvs} tag -d brtag" \
"${PROG} tag: Untagging \.
D file1
D file2"
dotest head-o1 "${testcvs} admin -o ::br1" \
"${PROG} admin: Administrating \.
RCS file: ${CVSROOT_DIRNAME}/first-dir/file1,v
deleting revision 1\.3\.2\.1
done
RCS file: ${CVSROOT_DIRNAME}/first-dir/file2,v
done"
cd ../..
rm -r 1
rm -rf ${CVSROOT_DIRNAME}/first-dir
;;
tagdate)
mkdir 1; cd 1
save_TZ=$TZ
TZ=UTC; export TZ
dotest tagdate-1 "${testcvs} -q co -l ." ''
mkdir first-dir
dotest tagdate-2 "${testcvs} add first-dir" \
"Directory ${CVSROOT_DIRNAME}/first-dir added to the repository"
cd first-dir
echo trunk-1 >file1
dotest tagdate-3 "${testcvs} add file1" \
"${PROG} add: scheduling file .file1. for addition
${PROG} add: use .${PROG} commit. to add this file permanently"
dotest tagdate-4 "${testcvs} -q ci -m add" \
"RCS file: ${CVSROOT_DIRNAME}/first-dir/file1,v
done
Checking in file1;
${CVSROOT_DIRNAME}/first-dir/file1,v <-- file1
initial revision: 1\.1
done"
date_T1=`getrlogdate -r1.1 first-dir/file1`
dotest tagdate-5 "${testcvs} -q tag -b br1" "T file1"
dotest tagdate-6 "${testcvs} -q tag -b br2" "T file1"
echo trunk-2 >file1
dotest tagdate-7 "${testcvs} -q ci -m modify-on-trunk" \
"Checking in file1;
${CVSROOT_DIRNAME}/first-dir/file1,v <-- file1
new revision: 1\.2; previous revision: 1\.1
done"
date_T2=`getrlogdate -r1.2 first-dir/file1`
dotest tagdate-8 "${testcvs} -q update -p -r br1 -D now" "trunk-1"
dotest tagdate-9 "${testcvs} -q update -r br2" "[UP] file1"
echo br2-1 >file1
dotest tagdate-10 "${testcvs} -q ci -m modify-on-br2" \
"Checking in file1;
${CVSROOT_DIRNAME}/first-dir/file1,v <-- file1
new revision: 1\.1\.4\.1; previous revision: 1\.1
done"
date_T3=`getrlogdate -r1.1.4.1 first-dir/file1`
dotest tagdate-11 "${testcvs} -q update -p -r br1 -D now" "trunk-1"
dotest_fail tagdate-12 "${testcvs} -q update -j:yesterday" \
"${PROG} \[update aborted\]: argument to join may not contain a date specifier without a tag"
echo br2-2 >file1
dotest tagdate-13 "${testcvs} -q ci -m modify-2-on-br2" \
"Checking in file1;
${CVSROOT_DIRNAME}/first-dir/file1,v <-- file1
new revision: 1\.1\.4\.2; previous revision: 1\.1\.4\.1
done"
date_T4=`getrlogdate -r1.1.4.2 first-dir/file1`
cd ../..
mkdir 2; cd 2
dotest tagdate-14 "${testcvs} -q export -r br2 -D'$date_T3' first-dir" \
"[UP] first-dir/file1"
dotest tagdate-15 "cat first-dir/file1" "br2-1"
cd ../1/first-dir
dotest tagdate-16 "${testcvs} annotate -rbr2 -D'$date_T3'" \
"
Annotations for file1
\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*
1\.1\.4\.1 (${username} *[0-9a-zA-Z-]*): br2-1"
dotest tagdate-17 "${testcvs} annotate -rbr2 -Dnow" \
"
Annotations for file1
\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*
1\.1\.4\.2 (${username} *[0-9a-zA-Z-]*): br2-2"
echo br2-1 > file3
dotest tagdate-18 "${testcvs} add file3" \
"${PROG} add: scheduling file \`file3' for addition on branch \`br2'
${PROG} add: use .${PROG} commit. to add this file permanently"
dotest tagdate-19 "${testcvs} -q ci -m add file3" \
"RCS file: ${CVSROOT_DIRNAME}/first-dir/Attic/file3,v
done
Checking in file3;
${CVSROOT_DIRNAME}/first-dir/Attic/file3,v <-- file3
new revision: 1\.1\.2\.1; previous revision: 1\.1
done"
date_T5=`getrlogdate -r1.1 first-dir/file3`
date_T6=`getrlogdate -r1.1.2.1 first-dir/file3`
cd ../..
mkdir 3; cd 3
dotest tagdate-20 "${testcvs} -Q co first-dir" ''
cd first-dir
echo trunk-1 > file2
dotest tagdate-21 "${testcvs} add file2" \
"${PROG} add: scheduling file .file2. for addition
${PROG} add: use .${PROG} commit. to add this file permanently"
dotest tagdate-22 "${testcvs} -q ci -m add file2" \
"RCS file: ${CVSROOT_DIRNAME}/first-dir/file2,v
done
Checking in file2;
${CVSROOT_DIRNAME}/first-dir/file2,v <-- file2
initial revision: 1\.1
done"
date_T7=`getrlogdate -r1.1 first-dir/file2`
echo "trunk-2" >file2
dotest tagdate-23 "${testcvs} -q ci -m update file2" \
"Checking in file2;
${CVSROOT_DIRNAME}/first-dir/file2,v <-- file2
new revision: 1\.2; previous revision: 1\.1
done"
date_T8=`getrlogdate -r1.2 first-dir/file2`
cd ../../1/first-dir
echo br2-1 > file2
dotest tagdate-24 "${testcvs} add file2" \
"${PROG} add: scheduling file \`file2' for addition on branch \`br2'
${PROG} add: use .${PROG} commit. to add this file permanently"
dotest tagdate-25 "${testcvs} -q ci -m add file2" \
"Checking in file2;
${CVSROOT_DIRNAME}/first-dir/file2,v <-- file2
new revision: 1\.2\.2\.2; previous revision: 1\.2\.2\.1
done"
date_T9=`getrlogdate -r1.2.2.2 first-dir/file2`
cd ../..
mkdir 4; cd 4
(echo Dates for tagdate-26-* are:;\
echo " date_T1='$date_T1'";\
echo " date_T2='$date_T2'";\
echo " date_T3='$date_T3'";\
echo " date_T4='$date_T4'";\
echo " date_T5='$date_T5'";\
echo " date_T6='$date_T6'";\
echo " date_T7='$date_T7'";\
echo " date_T8='$date_T8'";\
echo " date_T9='$date_T9'") >>$LOGFILE
dotest tagdate-26-trunk-t1 \
"${testcvs} co -D'$date_T1' -d first-dir-trunk-t1 first-dir" \
"${PROG} checkout: Updating first-dir-trunk-t1
U first-dir-trunk-t1/file1"
dotest tagdate-26-br2-t1 \
"${testcvs} co -r br2 -D'$date_T1' -d first-dir-br2-t1 first-dir" \
"${PROG} checkout: Updating first-dir-br2-t1
U first-dir-br2-t1/file1"
dotest tagdate-26-trunk-t2 \
"${testcvs} co -D'$date_T2' -d first-dir-trunk-t2 first-dir" \
"${PROG} checkout: Updating first-dir-trunk-t2
U first-dir-trunk-t2/file1"
dotest tagdate-26-br2-t2 \
"${testcvs} co -r br2 -D'$date_T2' -d first-dir-br2-t2 first-dir" \
"${PROG} checkout: Updating first-dir-br2-t2
U first-dir-br2-t2/file1"
dotest tagdate-26-br2-t3 \
"${testcvs} co -r br2 -D'$date_T3' -d first-dir-br2-t3 first-dir" \
"${PROG} checkout: Updating first-dir-br2-t3
U first-dir-br2-t3/file1"
dotest tagdate-26-br2-t4 \
"${testcvs} co -r br2 -D'$date_T4' -d first-dir-br2-t4 first-dir" \
"${PROG} checkout: Updating first-dir-br2-t4
U first-dir-br2-t4/file1"
dotest tagdate-26-br2-t6 \
"${testcvs} co -r br2 -D'$date_T6' -d first-dir-br2-t6 first-dir" \
"${PROG} checkout: Updating first-dir-br2-t6
U first-dir-br2-t6/file1
U first-dir-br2-t6/file3"
dotest tagdate-26-trunk-t7 \
"${testcvs} co -D'$date_T7' -d first-dir-trunk-t7 first-dir" \
"${PROG} checkout: Updating first-dir-trunk-t7
U first-dir-trunk-t7/file1
U first-dir-trunk-t7/file2"
dotest tagdate-26-br2-t7 \
"${testcvs} co -r br2 -D'$date_T7' -d first-dir-br2-t7 first-dir" \
"${PROG} checkout: Updating first-dir-br2-t7
U first-dir-br2-t7/file1
U first-dir-br2-t7/file3"
dotest tagdate-26-trunk-t8 \
"${testcvs} co -D'$date_T8' -d first-dir-trunk-t8 first-dir" \
"${PROG} checkout: Updating first-dir-trunk-t8
U first-dir-trunk-t8/file1
U first-dir-trunk-t8/file2"
dotest tagdate-26-br2-t8 \
"${testcvs} co -r br2 -D'$date_T8' -d first-dir-br2-t8 first-dir" \
"${PROG} checkout: Updating first-dir-br2-t8
U first-dir-br2-t8/file1
U first-dir-br2-t8/file3"
dotest tagdate-26-br2-t9 \
"${testcvs} co -r br2 -D'$date_T9' -d first-dir-br2-t9 first-dir" \
"${PROG} checkout: Updating first-dir-br2-t9
U first-dir-br2-t9/file1
U first-dir-br2-t9/file2
U first-dir-br2-t9/file3"
dotest tagdate-27-trunk-t1 \
"${testcvs} status first-dir-trunk-t1" \
"${PROG} status: Examining first-dir-trunk-t1
===================================================================
File: file1 Status: Up-to-date
Working revision: 1\.1[^.]*
Repository revision: 1\.1 ${CVSROOT_DIRNAME}/first-dir/file1,v
Sticky Tag: (none)
Sticky Date: [0-9.]*
Sticky Options: (none)"
dotest tagdate-27-br2-t1 \
"${testcvs} status first-dir-br2-t1" \
"${PROG} status: Examining first-dir-br2-t1
===================================================================
File: file1 Status: Needs Patch
Working revision: 1\.1[^.]*
Repository revision: 1\.1\.4\.2 ${CVSROOT_DIRNAME}/first-dir/file1,v
Sticky Tag: br2 (branch: 1\.1\.4)
Sticky Date: (none)
Sticky Options: (none)"
dotest tagdate-27-trunk-t2 \
"${testcvs} status first-dir-trunk-t2" \
"${PROG} status: Examining first-dir-trunk-t2
===================================================================
File: file1 Status: Up-to-date
Working revision: 1\.2[^.]*
Repository revision: 1\.2 ${CVSROOT_DIRNAME}/first-dir/file1,v
Sticky Tag: (none)
Sticky Date: [0-9.]*
Sticky Options: (none)"
dotest tagdate-27-br2-t2 \
"${testcvs} status first-dir-br2-t2" \
"${PROG} status: Examining first-dir-br2-t2
===================================================================
File: file1 Status: Needs Patch
Working revision: 1\.1[^.]*
Repository revision: 1\.1\.4\.2 ${CVSROOT_DIRNAME}/first-dir/file1,v
Sticky Tag: br2 (branch: 1\.1\.4)
Sticky Date: (none)
Sticky Options: (none)"
dotest tagdate-27-br2-t3 \
"${testcvs} status first-dir-br2-t3" \
"${PROG} status: Examining first-dir-br2-t3
===================================================================
File: file1 Status: Needs Patch
Working revision: 1\.1\.4\.1[^.]*
Repository revision: 1\.1\.4\.2 ${CVSROOT_DIRNAME}/first-dir/file1,v
Sticky Tag: br2 (branch: 1\.1\.4)
Sticky Date: (none)
Sticky Options: (none)"
dotest tagdate-27-br2-t4 \
"${testcvs} status first-dir-br2-t4" \
"${PROG} status: Examining first-dir-br2-t4
===================================================================
File: file1 Status: Up-to-date
Working revision: 1\.1\.4\.2[^.]*
Repository revision: 1\.1\.4\.2 ${CVSROOT_DIRNAME}/first-dir/file1,v
Sticky Tag: br2 (branch: 1\.1\.4)
Sticky Date: (none)
Sticky Options: (none)"
dotest tagdate-27-br2-t6 \
"${testcvs} status first-dir-br2-t6" \
"${PROG} status: Examining first-dir-br2-t6
===================================================================
File: file1 Status: Up-to-date
Working revision: 1\.1\.4\.2[^.]*
Repository revision: 1\.1\.4\.2 ${CVSROOT_DIRNAME}/first-dir/file1,v
Sticky Tag: br2 (branch: 1\.1\.4)
Sticky Date: (none)
Sticky Options: (none)
===================================================================
File: file3 Status: Up-to-date
Working revision: 1\.1\.2\.1[^.]*
Repository revision: 1\.1\.2\.1 ${CVSROOT_DIRNAME}/first-dir/Attic/file3,v
Sticky Tag: br2 (branch: 1\.1\.2)
Sticky Date: (none)
Sticky Options: (none)"
dotest tagdate-27-trunk-t7 \
"${testcvs} status first-dir-trunk-t7" \
"${PROG} status: Examining first-dir-trunk-t7
===================================================================
File: file1 Status: Up-to-date
Working revision: 1\.2[^.]*
Repository revision: 1\.2 ${CVSROOT_DIRNAME}/first-dir/file1,v
Sticky Tag: (none)
Sticky Date: [0-9.]*
Sticky Options: (none)
===================================================================
File: file2 Status: Up-to-date
Working revision: 1\.1[^.]*
Repository revision: 1\.1 ${CVSROOT_DIRNAME}/first-dir/file2,v
Sticky Tag: (none)
Sticky Date: [0-9.]*
Sticky Options: (none)"
dotest tagdate-27-br2-t7 \
"${testcvs} status first-dir-br2-t7" \
"${PROG} status: Examining first-dir-br2-t7
===================================================================
File: file1 Status: Up-to-date
Working revision: 1\.1\.4\.2[^.]*
Repository revision: 1\.1\.4\.2 ${CVSROOT_DIRNAME}/first-dir/file1,v
Sticky Tag: br2 (branch: 1\.1\.4)
Sticky Date: (none)
Sticky Options: (none)
===================================================================
File: file3 Status: Up-to-date
Working revision: 1\.1\.2\.1[^.]*
Repository revision: 1\.1\.2\.1 ${CVSROOT_DIRNAME}/first-dir/Attic/file3,v
Sticky Tag: br2 (branch: 1\.1\.2)
Sticky Date: (none)
Sticky Options: (none)"
dotest tagdate-27-trunk-t8 \
"${testcvs} status first-dir-trunk-t8" \
"${PROG} status: Examining first-dir-trunk-t8
===================================================================
File: file1 Status: Up-to-date
Working revision: 1\.2[^.]*
Repository revision: 1\.2 ${CVSROOT_DIRNAME}/first-dir/file1,v
Sticky Tag: (none)
Sticky Date: [0-9.]*
Sticky Options: (none)
===================================================================
File: file2 Status: Up-to-date
Working revision: 1\.2[^.]*
Repository revision: 1\.2 ${CVSROOT_DIRNAME}/first-dir/file2,v
Sticky Tag: (none)
Sticky Date: [0-9.]*
Sticky Options: (none)"
dotest tagdate-27-br2-t8 \
"${testcvs} status first-dir-br2-t8" \
"${PROG} status: Examining first-dir-br2-t8
===================================================================
File: file1 Status: Up-to-date
Working revision: 1\.1\.4\.2[^.]*
Repository revision: 1\.1\.4\.2 ${CVSROOT_DIRNAME}/first-dir/file1,v
Sticky Tag: br2 (branch: 1\.1\.4)
Sticky Date: (none)
Sticky Options: (none)
===================================================================
File: file3 Status: Up-to-date
Working revision: 1\.1\.2\.1[^.]*
Repository revision: 1\.1\.2\.1 ${CVSROOT_DIRNAME}/first-dir/Attic/file3,v
Sticky Tag: br2 (branch: 1\.1\.2)
Sticky Date: (none)
Sticky Options: (none)"
dotest tagdate-27-br2-t9 \
"${testcvs} status first-dir-br2-t9" \
"${PROG} status: Examining first-dir-br2-t9
===================================================================
File: file1 Status: Up-to-date
Working revision: 1\.1\.4\.2[^.]*
Repository revision: 1\.1\.4\.2 ${CVSROOT_DIRNAME}/first-dir/file1,v
Sticky Tag: br2 (branch: 1\.1\.4)
Sticky Date: (none)
Sticky Options: (none)
===================================================================
File: file2 Status: Up-to-date
Working revision: 1\.2\.2\.2[^.]*
Repository revision: 1\.2\.2\.2 ${CVSROOT_DIRNAME}/first-dir/file2,v
Sticky Tag: br2 (branch: 1\.2\.2)
Sticky Date: (none)
Sticky Options: (none)
===================================================================
File: file3 Status: Up-to-date
Working revision: 1\.1\.2\.1[^.]*
Repository revision: 1\.1\.2\.1 ${CVSROOT_DIRNAME}/first-dir/Attic/file3,v
Sticky Tag: br2 (branch: 1\.1\.2)
Sticky Date: (none)
Sticky Options: (none)"
dotest tagdate-28-trunk-t1 'cat first-dir-trunk-t1/file1' 'trunk-1'
dotest tagdate-28-br2-t1 'cat first-dir-br2-t1/file1' 'trunk-1'
dotest tagdate-28-trunk-t2 'cat first-dir-trunk-t2/file1' 'trunk-2'
dotest tagdate-28-br2-t2 'cat first-dir-br2-t2/file1' 'trunk-1'
dotest tagdate-28-br2-t3 'cat first-dir-br2-t3/file1' 'br2-1'
dotest tagdate-28-br2-t4 'cat first-dir-br2-t4/file1' 'br2-2'
dotest tagdate-28-br2-t6a 'cat first-dir-br2-t6/file1' "br2-2"
dotest tagdate-28-br2-t6b 'cat first-dir-br2-t6/file3' "br2-1"
dotest tagdate-28-trunk-t7a 'cat first-dir-trunk-t7/file1' "trunk-2"
dotest tagdate-28-trunk-t7b 'cat first-dir-trunk-t7/file2' "trunk-1"
dotest tagdate-28-br2-t7a 'cat first-dir-br2-t7/file1' "br2-2"
dotest tagdate-28-br2-t7b 'cat first-dir-br2-t7/file3' "br2-1"
dotest tagdate-28-trunk-t8a 'cat first-dir-trunk-t8/file1' "trunk-2"
dotest tagdate-28-trunk-t8b 'cat first-dir-trunk-t8/file2' "trunk-2"
dotest tagdate-28-br2-t8a 'cat first-dir-br2-t8/file1' "br2-2"
dotest tagdate-28-br2-t8c 'cat first-dir-br2-t8/file3' "br2-1"
dotest tagdate-28-br2-t9a 'cat first-dir-br2-t9/file1' "br2-2"
dotest tagdate-28-br2-t9b 'cat first-dir-br2-t9/file2' "br2-1"
dotest tagdate-28-br2-t9c 'cat first-dir-br2-t9/file3' "br2-1"
cd ..
unset date_T1 date_T2 date_T3 date_T4 date_T5
unset date_T6 date_T7 date_T8 date_T9
TZ=$save_TZ
if $keep; then
echo Keeping ${TESTDIR} and exiting due to --keep
exit 0
fi
rm -r 1 2 3 4
rm -rf ${CVSROOT_DIRNAME}/first-dir
;;
multibranch2)
mkdir 1; cd 1
dotest multibranch2-1 "${testcvs} -q co -l ." ''
mkdir first-dir
dotest multibranch2-2 "${testcvs} add first-dir" \
"Directory ${CVSROOT_DIRNAME}/first-dir added to the repository"
cd first-dir
echo trunk-1 >file1
echo trunk-1 >file2
dotest multibranch2-3 "${testcvs} add file1 file2" \
"${PROG} add: scheduling file .file1. for addition
${PROG} add: scheduling file .file2. for addition
${PROG} add: use .${PROG} commit. to add these files permanently"
dotest multibranch2-4 "${testcvs} -q ci -m add" \
"RCS file: ${CVSROOT_DIRNAME}/first-dir/file1,v
done
Checking in file1;
${CVSROOT_DIRNAME}/first-dir/file1,v <-- file1
initial revision: 1\.1
done
RCS file: ${CVSROOT_DIRNAME}/first-dir/file2,v
done
Checking in file2;
${CVSROOT_DIRNAME}/first-dir/file2,v <-- file2
initial revision: 1\.1
done"
dotest multibranch2-5 "${testcvs} -q tag -b A" "T file1
T file2"
dotest multibranch2-6 "${testcvs} -q tag -b B" "T file1
T file2"
dotest multibranch2-7 "${testcvs} -q update -r B" ''
echo branch-B >file1
echo branch-B >file2
dotest multibranch2-8 "${testcvs} -q ci -m modify-on-B" \
"Checking in file1;
${CVSROOT_DIRNAME}/first-dir/file1,v <-- file1
new revision: 1\.1\.4\.1; previous revision: 1\.1
done
Checking in file2;
${CVSROOT_DIRNAME}/first-dir/file2,v <-- file2
new revision: 1\.1\.4\.1; previous revision: 1\.1
done"
dotest multibranch2-9 "${testcvs} -q update -r A" '[UP] file1
[UP] file2'
echo branch-A >file1
dotest multibranch2-10 "${testcvs} -q ci -m modify-on-A" \
"Checking in file1;
${CVSROOT_DIRNAME}/first-dir/file1,v <-- file1
new revision: 1\.1\.2\.1; previous revision: 1\.1
done"
dotest multibranch2-11 "${testcvs} -q log file1" \
"
RCS file: ${CVSROOT_DIRNAME}/first-dir/file1,v
Working file: file1
head: 1\.1
branch:
locks: strict
access list:
symbolic names:
B: 1\.1\.0\.4
A: 1\.1\.0\.2
keyword substitution: kv
total revisions: 3; selected revisions: 3
description:
----------------------------
revision 1\.1
date: [0-9/]* [0-9:]*; author: $username; state: Exp;
branches: 1\.1\.2; 1\.1\.4;
add
----------------------------
revision 1\.1\.4\.1
date: [0-9/]* [0-9:]*; author: $username; state: Exp; lines: ${PLUS}1 -1
modify-on-B
----------------------------
revision 1\.1\.2\.1
date: [0-9/]* [0-9:]*; author: $username; state: Exp; lines: ${PLUS}1 -1
modify-on-A
============================================================================="
dotest multibranch2-12 "${testcvs} -q log -r1.1 file1" \
"
RCS file: ${CVSROOT_DIRNAME}/first-dir/file1,v
Working file: file1
head: 1\.1
branch:
locks: strict
access list:
symbolic names:
B: 1\.1\.0\.4
A: 1\.1\.0\.2
keyword substitution: kv
total revisions: 3; selected revisions: 1
description:
----------------------------
revision 1\.1
date: [0-9/]* [0-9:]*; author: $username; state: Exp;
branches: 1\.1\.2; 1\.1\.4;
add
============================================================================="
dotest multibranch2-13 "${testcvs} -q update -r B" "[UP] file1
[UP] file2"
dotest multibranch2-14 "${testcvs} -q update -r A -j B file2" \
"[UP] file2
RCS file: ${CVSROOT_DIRNAME}/first-dir/file2,v
retrieving revision 1.1
retrieving revision 1.1.4.1
Merging differences between 1.1 and 1.1.4.1 into file2"
dotest multibranch2-15 "${testcvs} -q ci -m commit-on-A file2" \
"Checking in file2;
${CVSROOT_DIRNAME}/first-dir/file2,v <-- file2
new revision: 1\.1\.2\.1; previous revision: 1\.1
done"
cd ../..
rm -r 1
rm -rf ${CVSROOT_DIRNAME}/first-dir
;;
tag8k)
mkdir 1
cd 1
module=x
: > junk
dotest tag8k-1 "$testcvs -Q import -m . $module X Y" ''
dotest tag8k-2 "$testcvs -Q co $module" ''
cd $module
file=m
: > $file
dotest tag8k-3 "$testcvs add $file" \
"${PROG} add: scheduling file .$file. for addition
${PROG} add: use .${PROG} commit. to add this file permanently"
dotest tag8k-4 "$testcvs -Q ci -m . $file" \
"RCS file: ${CVSROOT_DIRNAME}/$module/$file,v
done
Checking in $file;
${CVSROOT_DIRNAME}/$module/$file,v <-- $file
initial revision: 1\.1
done"
echo a > $file
dotest tag8k-5 "$testcvs -Q ci -m . $file" \
"Checking in $file;
${CVSROOT_DIRNAME}/$module/$file,v <-- $file
new revision: 1\.2; previous revision: 1\.1
done"
t=TAG---------------------------------------------------------------------
t=$t$t
t=$t$t$t$t$t
dotest tag8k-6 "$testcvs -Q tag $t-0 $file" ''
dotest tag8k-7 "$testcvs -Q tag $t-1 $file" ''
dotest tag8k-8 "$testcvs -Q tag $t-2 $file" ''
dotest tag8k-9 "$testcvs -Q tag $t-3 $file" ''
dotest tag8k-10 "$testcvs -Q tag $t-4 $file" ''
dotest tag8k-11 "$testcvs -Q tag $t-5 $file" ''
dotest tag8k-12 "$testcvs -Q tag $t-6 $file" ''
dotest tag8k-13 "$testcvs -Q tag $t-7 $file" ''
dotest tag8k-14 "$testcvs -Q tag $t-8 $file" ''
dotest tag8k-15 "$testcvs -Q tag $t-9 $file" ''
dotest tag8k-16 "$testcvs -Q tag $t-a $file" ''
name=`sed -n 's/.*; author \([^;]*\);.*/\1/p' ${CVSROOT_DIRNAME}/$module/$file,v|sed 1q`
sed_pattern=`echo $name|sed s/././g`
suffix=`echo 1234567890123456|sed s/$sed_pattern//`
dotest tag8k-17 "$testcvs -Q tag "x8bytes-$suffix" $file" ''
echo a >> $file
dotest tag8k-18 "$testcvs -Q ci -m . $file" \
"Checking in $file;
${CVSROOT_DIRNAME}/$module/$file,v <-- $file
new revision: 1\.3; previous revision: 1\.2
done"
cd ../..
rm -r 1
rm -rf ${CVSROOT_DIRNAME}/$module
;;
admin)
mkdir 1; cd 1
dotest admin-1 "${testcvs} -q co -l ." ''
mkdir first-dir
dotest admin-2 "${testcvs} add first-dir" \
"Directory ${CVSROOT_DIRNAME}/first-dir added to the repository"
cd first-dir
dotest_fail admin-3 "${testcvs} -q admin -i file1" \
"${PROG} admin: the -i option to admin is not supported
${PROG} admin: run add or import to create an RCS file
${PROG} \[admin aborted\]: specify ${PROG} -H admin for usage information"
dotest_fail admin-4 "${testcvs} -q log file1" \
"${PROG} log: nothing known about file1"
dotest_fail admin-4a "${testcvs} -q admin file1" \
"${PROG} admin: nothing known about file1"
touch file1 file2
dotest admin-5 "${testcvs} add file1 file2" \
"${PROG} add: scheduling file .file1. for addition
${PROG} add: scheduling file .file2. for addition
${PROG} add: use .${PROG} commit. to add these files permanently"
dotest admin-6 "${testcvs} -q ci -m add" \
"RCS file: ${CVSROOT_DIRNAME}/first-dir/file1,v
done
Checking in file1;
${CVSROOT_DIRNAME}/first-dir/file1,v <-- file1
initial revision: 1\.1
done
RCS file: ${CVSROOT_DIRNAME}/first-dir/file2,v
done
Checking in file2;
${CVSROOT_DIRNAME}/first-dir/file2,v <-- file2
initial revision: 1\.1
done"
dotest admin-7 "${testcvs} -q tag -b br" "T file1
T file2"
dotest admin-8 "${testcvs} -q update -r br" ""
echo 'add a line on the branch' >> file1
echo 'add a file on the branch' >> file3
dotest admin-9a "${testcvs} -q add file3" \
"${PROG} add: use .${PROG} commit. to add this file permanently"
dotest admin-9b "${testcvs} -q ci -m modify-on-branch" \
"Checking in file1;
${CVSROOT_DIRNAME}/first-dir/file1,v <-- file1
new revision: 1\.1\.2\.1; previous revision: 1\.1
done
RCS file: ${CVSROOT_DIRNAME}/first-dir/Attic/file3,v
done
Checking in file3;
${CVSROOT_DIRNAME}/first-dir/Attic/file3,v <-- file3
new revision: 1\.1\.2\.1; previous revision: 1\.1
done"
dotest admin-10 "${testcvs} -q update -A" \
"U file1
${PROG} update: file3 is no longer in the repository"
dotest admin-10-1 "${testcvs} admin ." \
"${PROG} admin: Administrating .
RCS file: ${CVSROOT_DIRNAME}/first-dir/file1,v
done
RCS file: ${CVSROOT_DIRNAME}/first-dir/file2,v
done"
dotest admin-10-2 "${testcvs} -q admin file3" \
"RCS file: ${CVSROOT_DIRNAME}/first-dir/Attic/file3,v
done"
dotest_fail admin-10a "${testcvs} -q admin -b1.1.2" \
"${PROG} [a-z]*: while processing more than one file:
${PROG} \[[a-z]* aborted\]: attempt to specify a numeric revision"
dotest_fail admin-10b "${testcvs} -q admin -m1.1:bogus file1 file2" \
"${PROG} [a-z]*: while processing more than one file:
${PROG} \[[a-z]* aborted\]: attempt to specify a numeric revision"
dotest_fail admin-10c "${testcvs} -q admin -bBOGUS" \
"RCS file: ${CVSROOT_DIRNAME}/first-dir/file1,v
${PROG} admin: ${CVSROOT_DIRNAME}/first-dir/file1,v: Symbolic name BOGUS is undefined.
${PROG} admin: RCS file for .file1. not modified\.
RCS file: ${CVSROOT_DIRNAME}/first-dir/file2,v
${PROG} admin: ${CVSROOT_DIRNAME}/first-dir/file2,v: Symbolic name BOGUS is undefined.
${PROG} admin: RCS file for .file2. not modified\."
dotest admin-11 "${testcvs} -q admin -afoo,bar -abaz \
-b1.1.2 -cxx -U -sfoo file1" \
"RCS file: ${CVSROOT_DIRNAME}/first-dir/file1,v
done"
dotest admin-11a "${testcvs} log -N file1" "
RCS file: ${CVSROOT_DIRNAME}/first-dir/file1,v
Working file: file1
head: 1\.1
branch: 1\.1\.2
locks:
access list:
foo
bar
baz
keyword substitution: kv
total revisions: 2; selected revisions: 2
description:
----------------------------
revision 1\.1
date: [0-9/]* [0-9:]*; author: ${username}; state: Exp;
branches: 1\.1\.2;
add
----------------------------
revision 1\.1\.2\.1
date: [0-9/]* [0-9:]*; author: ${username}; state: foo; lines: ${PLUS}1 -0
modify-on-branch
============================================================================="
dotest admin-12 "${testcvs} -q admin -bbr file1" \
"RCS file: ${CVSROOT_DIRNAME}/first-dir/file1,v
done"
dotest admin-12a "${testcvs} log -N file1" "
RCS file: ${CVSROOT_DIRNAME}/first-dir/file1,v
Working file: file1
head: 1\.1
branch: 1\.1\.2
locks:
access list:
foo
bar
baz
keyword substitution: kv
total revisions: 2; selected revisions: 2
description:
----------------------------
revision 1\.1
date: [0-9/]* [0-9:]*; author: ${username}; state: Exp;
branches: 1\.1\.2;
add
----------------------------
revision 1\.1\.2\.1
date: [0-9/]* [0-9:]*; author: ${username}; state: foo; lines: ${PLUS}1 -0
modify-on-branch
============================================================================="
dotest admin-13 "cat ${CVSROOT_DIRNAME}/first-dir/file1,v" \
"head 1\.1;
branch 1\.1\.2;
access
foo
bar
baz;
symbols
br:1\.1\.0\.2;
locks;
comment @xx@;
1\.1
date [0-9][0-9]*\.[0-9][0-9]\.[0-9][0-9]\.[0-9][0-9]\.[0-9][0-9]\.[0-9][0-9]; author ${username}; state Exp;
branches
1\.1\.2\.1;
next ;
1\.1\.2\.1
date [0-9][0-9]*\.[0-9][0-9]\.[0-9][0-9]\.[0-9][0-9]\.[0-9][0-9]\.[0-9][0-9]; author ${username}; state foo;
branches;
next ;
desc
@@
1\.1
log
@add
@
text
@@
1\.1\.2\.1
log
@modify-on-branch
@
text
@a0 1
add a line on the branch
@"
dotest_fail admin-14-1 "${testcvs} -q admin \
-m1.1.1.1:changed-bogus-log-message file2" \
"RCS file: ${CVSROOT_DIRNAME}/first-dir/file2,v
cvs admin: ${CVSROOT_DIRNAME}/first-dir/file2,v: no such revision 1\.1\.1\.1
cvs admin: RCS file for .file2. not modified."
dotest admin-14-2 "${testcvs} -q log file2" "
RCS file: ${CVSROOT_DIRNAME}/first-dir/file2,v
Working file: file2
head: 1\.1
branch:
locks: strict
access list:
symbolic names:
br: 1\.1\.0\.2
keyword substitution: kv
total revisions: 1; selected revisions: 1
description:
----------------------------
revision 1\.1
date: [0-9/]* [0-9:]*; author: ${username}; state: Exp;
add
============================================================================="
dotest admin-14-3 "${testcvs} -q admin -aauth3 -aauth2,foo \
-soneone:1.1 -m1.1:changed-log-message -ntagone: file2" \
"RCS file: ${CVSROOT_DIRNAME}/first-dir/file2,v
done"
dotest admin-15 "${testcvs} -q log file2" "
RCS file: ${CVSROOT_DIRNAME}/first-dir/file2,v
Working file: file2
head: 1\.1
branch:
locks: strict
access list:
auth3
auth2
foo
symbolic names:
tagone: 1\.1
br: 1\.1\.0\.2
keyword substitution: kv
total revisions: 1; selected revisions: 1
description:
----------------------------
revision 1\.1
date: [0-9/]* [0-9:]*; author: ${username}; state: oneone;
changed-log-message
============================================================================="
dotest admin-16 "${testcvs} -q admin \
-A${CVSROOT_DIRNAME}/first-dir/file2,v -b -L -Nbr:1.1 file1" \
"RCS file: ${CVSROOT_DIRNAME}/first-dir/file1,v
done"
dotest admin-17 "${testcvs} -q log file1" "
RCS file: ${CVSROOT_DIRNAME}/first-dir/file1,v
Working file: file1
head: 1\.1
branch:
locks: strict
access list:
foo
bar
baz
auth3
auth2
symbolic names:
br: 1\.1
keyword substitution: kv
total revisions: 2; selected revisions: 2
description:
----------------------------
revision 1\.1
date: [0-9/]* [0-9:]*; author: ${username}; state: Exp;
branches: 1\.1\.2;
add
----------------------------
revision 1\.1\.2\.1
date: [0-9/]* [0-9:]*; author: ${username}; state: foo; lines: ${PLUS}1 -0
modify-on-branch
============================================================================="
dotest_fail admin-18 "${testcvs} -q admin -nbr:1.1.2 file1" \
"RCS file: ${CVSROOT_DIRNAME}/first-dir/file1,v
${PROG} admin: ${CVSROOT_DIRNAME}/first-dir/file1,v: symbolic name br already bound to 1\.1
${PROG} admin: RCS file for .file1. not modified\."
dotest admin-19 "${testcvs} -q admin -ebaz -ebar,auth3 -nbr file1" \
"RCS file: ${CVSROOT_DIRNAME}/first-dir/file1,v
done"
dotest admin-20 "${testcvs} -q log file1" "
RCS file: ${CVSROOT_DIRNAME}/first-dir/file1,v
Working file: file1
head: 1\.1
branch:
locks: strict
access list:
foo
auth2
symbolic names:
keyword substitution: kv
total revisions: 2; selected revisions: 2
description:
----------------------------
revision 1\.1
date: [0-9/]* [0-9:]*; author: ${username}; state: Exp;
branches: 1\.1\.2;
add
----------------------------
revision 1.1.2.1
date: [0-9/]* [0-9:]*; author: ${username}; state: foo; lines: ${PLUS}1 -0
modify-on-branch
============================================================================="
dotest_fail admin-19a-nonexist \
"${testcvs} -q admin -A${TESTDIR}/foo/bar file1" \
"RCS file: ${CVSROOT_DIRNAME}/first-dir/file1,v
${PROG} admin: Couldn't open rcs file .${TESTDIR}/foo/bar.: No such file or directory
${PROG} \[admin aborted\]: cannot continue"
if $remote; then :; else
dotest admin-19a-admin "${testcvs} -q admin -A../../cvsroot/first-dir/file2,v file1" \
"RCS file: ${CVSROOT_DIRNAME}/first-dir/file1,v
done"
dotest admin-19a-log "${testcvs} -q log -h -N file1" "
RCS file: ${CVSROOT_DIRNAME}/first-dir/file1,v
Working file: file1
head: 1\.1
branch:
locks: strict
access list:
foo
auth2
auth3
keyword substitution: kv
total revisions: 2
============================================================================="
fi
dotest admin-19a-2 "${testcvs} -q admin -e file1" \
"RCS file: ${CVSROOT_DIRNAME}/first-dir/file1,v
done"
dotest admin-19a-3 "${testcvs} -q log -h -N file1" "
RCS file: ${CVSROOT_DIRNAME}/first-dir/file1,v
Working file: file1
head: 1\.1
branch:
locks: strict
access list:
keyword substitution: kv
total revisions: 2
============================================================================="
dotest admin-19a-4 "${testcvs} -q admin -afoo,auth2 file1" \
"RCS file: ${CVSROOT_DIRNAME}/first-dir/file1,v
done"
echo 'add a line' >> file2
dotest admin-21 "${testcvs} -q ci -m modify file2" \
"Checking in file2;
${CVSROOT_DIRNAME}/first-dir/file2,v <-- file2
new revision: 1\.2; previous revision: 1\.1
done"
dotest admin-22 "${testcvs} -q admin -o1.1 file2" \
"RCS file: ${CVSROOT_DIRNAME}/first-dir/file2,v
deleting revision 1\.1
done"
echo first rev > aaa
dotest admin-22-o1 "${testcvs} add aaa" \
"${PROG} add: scheduling file .aaa. for addition
${PROG} add: use .${PROG} commit. to add this file permanently"
dotest admin-22-o2 "${testcvs} -q ci -m first aaa" \
"RCS file: ${CVSROOT_DIRNAME}/first-dir/aaa,v
done
Checking in aaa;
${CVSROOT_DIRNAME}/first-dir/aaa,v <-- aaa
initial revision: 1\.1
done"
echo second rev >> aaa
dotest admin-22-o3 "${testcvs} -q ci -m second aaa" \
"Checking in aaa;
${CVSROOT_DIRNAME}/first-dir/aaa,v <-- aaa
new revision: 1\.2; previous revision: 1\.1
done"
echo third rev >> aaa
dotest admin-22-o4 "${testcvs} -q ci -m third aaa" \
"Checking in aaa;
${CVSROOT_DIRNAME}/first-dir/aaa,v <-- aaa
new revision: 1\.3; previous revision: 1\.2
done"
echo fourth rev >> aaa
dotest admin-22-o5 "${testcvs} -q ci -m fourth aaa" \
"Checking in aaa;
${CVSROOT_DIRNAME}/first-dir/aaa,v <-- aaa
new revision: 1\.4; previous revision: 1\.3
done"
echo fifth rev >>aaa
dotest admin-22-o6 "${testcvs} -q ci -m fifth aaa" \
"Checking in aaa;
${CVSROOT_DIRNAME}/first-dir/aaa,v <-- aaa
new revision: 1\.5; previous revision: 1\.4
done"
echo sixth rev >> aaa
dotest admin-22-o7 "${testcvs} -q ci -m sixth aaa" \
"Checking in aaa;
${CVSROOT_DIRNAME}/first-dir/aaa,v <-- aaa
new revision: 1\.6; previous revision: 1\.5
done"
dotest admin-22-o8 "${testcvs} admin -l1.6 aaa" \
"RCS file: ${CVSROOT_DIRNAME}/first-dir/aaa,v
1\.6 locked
done"
dotest admin-22-o9 "${testcvs} log -r1.6 aaa" "
RCS file: ${CVSROOT_DIRNAME}/first-dir/aaa,v
Working file: aaa
head: 1\.6
branch:
locks: strict
${username}: 1\.6
access list:
symbolic names:
keyword substitution: kv
total revisions: 6; selected revisions: 1
description:
----------------------------
revision 1\.6 locked by: ${username};
date: [0-9/]* [0-9:]*; author: ${username}; state: Exp; lines: ${PLUS}1 -0
sixth
============================================================================="
dotest_fail admin-22-o10 "${testcvs} admin -o1.5: aaa" \
"RCS file: ${CVSROOT_DIRNAME}/first-dir/aaa,v
${PROG} admin: ${CVSROOT_DIRNAME}/first-dir/aaa,v: can't remove locked revision 1\.6
${PROG} admin: RCS file for .aaa. not modified\."
dotest admin-22-o11 "${testcvs} admin -u aaa" \
"RCS file: ${CVSROOT_DIRNAME}/first-dir/aaa,v
1\.6 unlocked
done"
dotest admin-22-o12 "${testcvs} admin -o1.5: aaa" \
"RCS file: ${CVSROOT_DIRNAME}/first-dir/aaa,v
deleting revision 1\.6
deleting revision 1\.5
done"
dotest admin-22-o13 "${testcvs} log aaa" "
RCS file: ${CVSROOT_DIRNAME}/first-dir/aaa,v
Working file: aaa
head: 1\.4
branch:
locks: strict
access list:
symbolic names:
keyword substitution: kv
total revisions: 4; selected revisions: 4
description:
----------------------------
revision 1\.4
date: [0-9/]* [0-9:]*; author: ${username}; state: Exp; lines: ${PLUS}1 -0
fourth
----------------------------
revision 1\.3
date: [0-9/]* [0-9:]*; author: ${username}; state: Exp; lines: ${PLUS}1 -0
third
----------------------------
revision 1\.2
date: [0-9/]* [0-9:]*; author: ${username}; state: Exp; lines: ${PLUS}1 -0
second
----------------------------
revision 1\.1
date: [0-9/]* [0-9:]*; author: ${username}; state: Exp;
first
============================================================================="
dotest admin-22-o14 "${testcvs} tag -b -r1.3 br1 aaa" "T aaa"
dotest admin-22-o15 "${testcvs} update -rbr1 aaa" "U aaa"
echo new branch rev >> aaa
dotest admin-22-o16 "${testcvs} ci -m new-branch aaa" \
"Checking in aaa;
${CVSROOT_DIRNAME}/first-dir/aaa,v <-- aaa
new revision: 1\.3\.2\.1; previous revision: 1\.3
done"
dotest_fail admin-22-o17 "${testcvs} admin -o1.2:1.4 aaa" \
"RCS file: ${CVSROOT_DIRNAME}/first-dir/aaa,v
deleting revision 1\.4
${PROG} admin: ${CVSROOT_DIRNAME}/first-dir/aaa,v: can't remove branch point 1\.3
${PROG} admin: RCS file for .aaa. not modified\."
dotest admin-22-o18 "${testcvs} update -p -r1.4 aaa" \
"===================================================================
Checking out aaa
RCS: ${CVSROOT_DIRNAME}/first-dir/aaa,v
VERS: 1\.4
\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*
first rev
second rev
third rev
fourth rev"
echo second branch rev >> aaa
dotest admin-22-o19 "${testcvs} ci -m branch-two aaa" \
"Checking in aaa;
${CVSROOT_DIRNAME}/first-dir/aaa,v <-- aaa
new revision: 1\.3\.2\.2; previous revision: 1\.3\.2\.1
done"
echo third branch rev >> aaa
dotest admin-22-o20 "${testcvs} ci -m branch-three aaa" \
"Checking in aaa;
${CVSROOT_DIRNAME}/first-dir/aaa,v <-- aaa
new revision: 1\.3\.2\.3; previous revision: 1\.3\.2\.2
done"
echo fourth branch rev >> aaa
dotest admin-22-o21 "${testcvs} ci -m branch-four aaa" \
"Checking in aaa;
${CVSROOT_DIRNAME}/first-dir/aaa,v <-- aaa
new revision: 1\.3\.2\.4; previous revision: 1\.3\.2\.3
done"
dotest admin-22-o22 "${testcvs} admin -o:1.3.2.3 aaa" \
"RCS file: ${CVSROOT_DIRNAME}/first-dir/aaa,v
deleting revision 1\.3\.2\.1
deleting revision 1\.3\.2\.2
deleting revision 1\.3\.2\.3
done"
dotest admin-22-o23 "${testcvs} log aaa" "
RCS file: ${CVSROOT_DIRNAME}/first-dir/aaa,v
Working file: aaa
head: 1\.4
branch:
locks: strict
access list:
symbolic names:
br1: 1\.3\.0\.2
keyword substitution: kv
total revisions: 5; selected revisions: 5
description:
----------------------------
revision 1\.4
date: [0-9/]* [0-9:]*; author: ${username}; state: Exp; lines: ${PLUS}1 -0
fourth
----------------------------
revision 1\.3
date: [0-9/]* [0-9:]*; author: ${username}; state: Exp; lines: ${PLUS}1 -0
branches: 1\.3\.2;
third
----------------------------
revision 1\.2
date: [0-9/]* [0-9:]*; author: ${username}; state: Exp; lines: ${PLUS}1 -0
second
----------------------------
revision 1\.1
date: [0-9/]* [0-9:]*; author: ${username}; state: Exp;
first
----------------------------
revision 1\.3\.2\.4
date: [0-9/]* [0-9:]*; author: ${username}; state: Exp; lines: ${PLUS}4 -0
branch-four
============================================================================="
dotest admin-22-o24 "${testcvs} -q update -p -r 1.3.2.4 aaa" \
"first rev
second rev
third rev
new branch rev
second branch rev
third branch rev
fourth branch rev"
dotest admin-23 "${testcvs} -q log file2" "
RCS file: ${CVSROOT_DIRNAME}/first-dir/file2,v
Working file: file2
head: 1\.2
branch:
locks: strict
access list:
auth3
auth2
foo
symbolic names:
tagone: 1\.1
br: 1\.1\.0\.2
keyword substitution: kv
total revisions: 1; selected revisions: 1
description:
----------------------------
revision 1\.2
date: [0-9/]* [0-9:]*; author: ${username}; state: Exp;
modify
============================================================================="
dotest admin-25 "cat ${CVSROOT_DIRNAME}/first-dir/file1,v" \
"head 1\.1;
access
foo
auth2;
symbols;
locks; strict;
comment @xx@;
1\.1
date [0-9][0-9]*\.[0-9][0-9]\.[0-9][0-9]\.[0-9][0-9]\.[0-9][0-9]\.[0-9][0-9]; author ${username}; state Exp;
branches
1\.1\.2\.1;
next ;
1\.1\.2\.1
date [0-9][0-9]*\.[0-9][0-9]\.[0-9][0-9]\.[0-9][0-9]\.[0-9][0-9]\.[0-9][0-9]; author ${username}; state foo;
branches;
next ;
desc
@@
1\.1
log
@add
@
text
@@
1\.1\.2\.1
log
@modify-on-branch
@
text
@a0 1
add a line on the branch
@"
dotest admin-26-1 "${testcvs} admin -ntagtwo:tagone file2" \
"RCS file: ${CVSROOT_DIRNAME}/first-dir/file2,v
done"
dotest admin-26-2 "${testcvs} admin -nbr1:br file2" \
"RCS file: ${CVSROOT_DIRNAME}/first-dir/file2,v
done"
dotest admin-26-3 "${testcvs} admin -ntagthree:1.1 file2" \
"RCS file: ${CVSROOT_DIRNAME}/first-dir/file2,v
done"
dotest admin-26-4 "${testcvs} admin -nbr2:1.1.2 file2" \
"RCS file: ${CVSROOT_DIRNAME}/first-dir/file2,v
done"
dotest admin-26-5 "${testcvs} admin -nbr4:1.1.0.2 file2" \
"RCS file: ${CVSROOT_DIRNAME}/first-dir/file2,v
done"
dotest admin-26-6 "${testcvs} status -v file2" \
"===================================================================
File: file2 Status: Up-to-date
Working revision: 1\.2.*
Repository revision: 1\.2 ${CVSROOT_DIRNAME}/first-dir/file2,v
Sticky Tag: (none)
Sticky Date: (none)
Sticky Options: (none)
Existing Tags:
br4 (branch: 1\.1\.2)
br2 (branch: 1\.1\.2)
tagthree (revision: 1\.1)
br1 (branch: 1\.1\.2)
tagtwo (revision: 1\.1)
tagone (revision: 1\.1)
br (branch: 1\.1\.2)"
echo "nuthr_line" >> file2
dotest admin-27-1 "${testcvs} commit -m nuthr_line file2" \
"Checking in file2;
${CVSROOT_DIRNAME}/first-dir/file2,v <-- file2
new revision: 1\.3; previous revision: 1\.2
done"
echo "yet_another" >> file2
dotest admin-27-2 "${testcvs} commit -m yet_another file2" \
"Checking in file2;
${CVSROOT_DIRNAME}/first-dir/file2,v <-- file2
new revision: 1\.4; previous revision: 1\.3
done"
dotest admin-27-3 "${testcvs} admin -ntagfour:1.1 file2" \
"RCS file: ${CVSROOT_DIRNAME}/first-dir/file2,v
done"
dotest_fail admin-27-4 "${testcvs} admin -ntagfour:1.3 file2" \
"RCS file: ${CVSROOT_DIRNAME}/first-dir/file2,v
${PROG} admin: ${CVSROOT_DIRNAME}/first-dir/file2,v: symbolic name tagfour already bound to 1\.1
${PROG} admin: RCS file for .file2. not modified\."
dotest admin-27-5 "${testcvs} admin -Ntagfour:1.3 file2" \
"RCS file: ${CVSROOT_DIRNAME}/first-dir/file2,v
done"
dotest_fail admin-28-1 "${testcvs} admin -ntagsix:tagfive file2" \
"RCS file: ${CVSROOT_DIRNAME}/first-dir/file2,v
${PROG} admin: ${CVSROOT_DIRNAME}/first-dir/file2,v: Symbolic name or revision tagfive is undefined\.
${PROG} admin: RCS file for .file2. not modified\."
dotest_fail admin-28-2 "${testcvs} admin -ntagseven:2.1 file2" \
"RCS file: ${CVSROOT_DIRNAME}/first-dir/file2,v
${PROG} \[admin aborted\]: revision .2\.1. does not exist"
dotest_fail admin-28-3 "${testcvs} admin -ntageight:2.1.2 file2" \
"RCS file: ${CVSROOT_DIRNAME}/first-dir/file2,v
${PROG} \[admin aborted\]: revision .2\.1\.2. does not exist"
dotest_fail admin-28-4 "${testcvs} admin -ntagnine:1.a.2 file2" \
"RCS file: ${CVSROOT_DIRNAME}/first-dir/file2,v
${PROG} \[admin aborted\]: tag .1\.a\.2. must start with a letter"
dotest admin-28-5.1 "${testcvs} -Q tag BO+GUS file1" ''
dotest_fail admin-28-5.2 "${testcvs} admin -ntagten:BO+GUS file2 file1" \
"RCS file: ${CVSROOT_DIRNAME}/first-dir/file2,v
${PROG} admin: ${CVSROOT_DIRNAME}/first-dir/file2,v: Symbolic name or revision BO${PLUS}GUS is undefined\.
${PROG} admin: RCS file for .file2. not modified\.
RCS file: ${CVSROOT_DIRNAME}/first-dir/file1,v
done"
dotest_fail admin-28-6 "${testcvs} admin -nq.werty:tagfour file2" \
"RCS file: ${CVSROOT_DIRNAME}/first-dir/file2,v
${PROG} \[admin aborted\]: tag .q\.werty. must not contain the characters ..*"
dotest admin-29 "cat ${CVSROOT_DIRNAME}/first-dir/file2,v" \
"head 1\.4;
access
auth3
auth2
foo;
symbols
tagfour:1\.3
br4:1\.1\.0\.2
br2:1\.1\.0\.2
tagthree:1\.1
br1:1\.1\.0\.2
tagtwo:1\.1
tagone:1\.1
br:1\.1\.0\.2;
locks; strict;
comment @# @;
1\.4
date [0-9][0-9]*\.[0-9][0-9]\.[0-9][0-9]\.[0-9][0-9]\.[0-9][0-9]\.[0-9][0-9]; author ${username}; state Exp;
branches;
next 1\.3;
1\.3
date [0-9][0-9]*\.[0-9][0-9]\.[0-9][0-9]\.[0-9][0-9]\.[0-9][0-9]\.[0-9][0-9]; author ${username}; state Exp;
branches;
next 1\.2;
1\.2
date [0-9][0-9]*\.[0-9][0-9]\.[0-9][0-9]\.[0-9][0-9]\.[0-9][0-9]\.[0-9][0-9]; author ${username}; state Exp;
branches;
next ;
desc
@@
1\.4
log
@yet_another
@
text
@add a line
nuthr_line
yet_another
@
1\.3
log
@nuthr_line
@
text
@d3 1
@
1\.2
log
@modify
@
text
@d2 1
@"
dotest_fail admin-30 "${testcvs} admin -mbr:another-log-message \
file2 aaa file3" \
"RCS file: ${CVSROOT_DIRNAME}/first-dir/file2,v
${PROG} admin: ${CVSROOT_DIRNAME}/first-dir/file2,v: no such revision br: 1\.1
${PROG} admin: RCS file for .file2. not modified.
RCS file: ${CVSROOT_DIRNAME}/first-dir/aaa,v
${PROG} admin: ${CVSROOT_DIRNAME}/first-dir/aaa,v: no such revision br
${PROG} admin: RCS file for .aaa. not modified.
RCS file: ${CVSROOT_DIRNAME}/first-dir/Attic/file3,v
done"
dotest admin-31 "${testcvs} log" \
"${PROG} log: Logging \.
RCS file: ${CVSROOT_DIRNAME}/first-dir/aaa,v
Working file: aaa
head: 1\.4
branch:
locks: strict
access list:
symbolic names:
br1: 1\.3\.0\.2
keyword substitution: kv
total revisions: 5; selected revisions: 5
description:
----------------------------
revision 1\.4
date: [0-9/]* [0-9:]*; author: ${username}; state: Exp; lines: ${PLUS}1 -0
fourth
----------------------------
revision 1\.3
date: [0-9/]* [0-9:]*; author: ${username}; state: Exp; lines: ${PLUS}1 -0
branches: 1\.3\.2;
third
----------------------------
revision 1\.2
date: [0-9/]* [0-9:]*; author: ${username}; state: Exp; lines: ${PLUS}1 -0
second
----------------------------
revision 1\.1
date: [0-9/]* [0-9:]*; author: ${username}; state: Exp;
first
----------------------------
revision 1\.3\.2\.4
date: [0-9/]* [0-9:]*; author: ${username}; state: Exp; lines: ${PLUS}4 -0
branch-four
=============================================================================
RCS file: ${CVSROOT_DIRNAME}/first-dir/file1,v
Working file: file1
head: 1\.1
branch:
locks: strict
access list:
foo
auth2
symbolic names:
tagten: 1\.1
BO${PLUS}GUS: 1\.1
keyword substitution: kv
total revisions: 2; selected revisions: 2
description:
----------------------------
revision 1\.1
date: [0-9/]* [0-9:]*; author: ${username}; state: Exp;
branches: 1\.1\.2;
add
----------------------------
revision 1\.1\.2\.1
date: [0-9/]* [0-9:]*; author: ${username}; state: foo; lines: ${PLUS}1 -0
modify-on-branch
=============================================================================
RCS file: ${CVSROOT_DIRNAME}/first-dir/file2,v
Working file: file2
head: 1\.4
branch:
locks: strict
access list:
auth3
auth2
foo
symbolic names:
tagfour: 1\.3
br4: 1\.1\.0\.2
br2: 1\.1\.0\.2
tagthree: 1\.1
br1: 1\.1\.0\.2
tagtwo: 1\.1
tagone: 1\.1
br: 1\.1\.0\.2
keyword substitution: kv
total revisions: 3; selected revisions: 3
description:
----------------------------
revision 1\.4
date: [0-9/]* [0-9:]*; author: ${username}; state: Exp; lines: ${PLUS}1 -0
yet_another
----------------------------
revision 1\.3
date: [0-9/]* [0-9:]*; author: ${username}; state: Exp; lines: ${PLUS}1 -0
nuthr_line
----------------------------
revision 1\.2
date: [0-9/]* [0-9:]*; author: ${username}; state: Exp;
modify
=============================================================================
RCS file: ${CVSROOT_DIRNAME}/first-dir/Attic/file3,v
Working file: file3
head: 1\.1
branch:
locks: strict
access list:
symbolic names:
br: 1\.1\.0\.2
keyword substitution: kv
total revisions: 2; selected revisions: 2
description:
----------------------------
revision 1\.1
date: [0-9/]* [0-9:]*; author: ${username}; state: dead;
branches: 1\.1\.2;
file file3 was initially added on branch br\.
----------------------------
revision 1\.1\.2\.1
date: [0-9/]* [0-9:]*; author: ${username}; state: Exp; lines: ${PLUS}1 -0
another-log-message
============================================================================="
cd ../..
if $keep; then
echo Keeping ${TESTDIR} and exiting due to --keep
exit 0
fi
rm -r 1
rm -rf ${CVSROOT_DIRNAME}/first-dir
;;
reserved)
mkdir 1; cd 1
dotest reserved-1 "${testcvs} -q co -l ." ''
mkdir first-dir
dotest reserved-2 "${testcvs} add first-dir" \
"Directory ${CVSROOT_DIRNAME}/first-dir added to the repository"
cd first-dir
touch file1
dotest reserved-3 "${testcvs} add file1" \
"${PROG} add: scheduling file .file1. for addition
${PROG} add: use .${PROG} commit. to add this file permanently"
dotest reserved-4 "${testcvs} -q ci -m add" \
"RCS file: ${CVSROOT_DIRNAME}/first-dir/file1,v
done
Checking in file1;
${CVSROOT_DIRNAME}/first-dir/file1,v <-- file1
initial revision: 1\.1
done"
dotest reserved-5 "${testcvs} -q admin -l file1" \
"RCS file: ${CVSROOT_DIRNAME}/first-dir/file1,v
1\.1 locked
done"
dotest reserved-6 "${testcvs} log -N file1" "
RCS file: ${CVSROOT_DIRNAME}/first-dir/file1,v
Working file: file1
head: 1\.1
branch:
locks: strict
${username}: 1\.1
access list:
keyword substitution: kv
total revisions: 1; selected revisions: 1
description:
----------------------------
revision 1\.1 locked by: ${username};
date: [0-9/]* [0-9:]*; author: ${username}; state: Exp;
add
============================================================================="
dotest reserved-7 "${testcvs} -q admin -u file1" \
"RCS file: ${CVSROOT_DIRNAME}/first-dir/file1,v
1\.1 unlocked
done"
dotest reserved-8 "${testcvs} log -N file1" "
RCS file: ${CVSROOT_DIRNAME}/first-dir/file1,v
Working file: file1
head: 1\.1
branch:
locks: strict
access list:
keyword substitution: kv
total revisions: 1; selected revisions: 1
description:
----------------------------
revision 1\.1
date: [0-9/]* [0-9:]*; author: ${username}; state: Exp;
add
============================================================================="
cat >${TESTDIR}/lockme <<EOF
#!${TESTSHELL}
line=\`grep <\$1/\$2,v 'locks ${author}:1\.[0-9];'\`
if test -z "\$line"; then
exit 0
else
user=\`echo \$line | sed -e 's/locks \\(${author}\\):[0-9.]*;.*/\\1/'\`
version=\`echo \$line | sed -e 's/locks ${author}:\\([0-9.]*\\);.*/\\1/'\`
echo "\$user has file a-lock locked for version \$version" >&2
exit 1
fi
EOF
if test -n "$remotehost"; then
$CVS_RSH $remotehost "chmod +x ${TESTDIR}/lockme"
else
chmod +x ${TESTDIR}/lockme
fi
echo stuff > a-lock
dotest reserved-9 "${testcvs} add a-lock" \
"${PROG} add: scheduling file .a-lock. for addition
${PROG} add: use .${PROG} commit. to add this file permanently"
dotest reserved-10 "${testcvs} -q ci -m new a-lock" \
"RCS file: ${CVSROOT_DIRNAME}/first-dir/a-lock,v
done
Checking in a-lock;
${CVSROOT_DIRNAME}/first-dir/a-lock,v <-- a-lock
initial revision: 1\.1
done"
cd ..
if ${testcvs} -q co CVSROOT >>${LOGFILE} ; then
pass reserved-11
else
fail reserved-11
fi
cd CVSROOT
echo "DEFAULT ${TESTDIR}/lockme" >>commitinfo
dotest reserved-12 "${testcvs} -q ci -m rcslock commitinfo" \
"Checking in commitinfo;
${CVSROOT_DIRNAME}/CVSROOT/commitinfo,v <-- commitinfo
new revision: 1\.2; previous revision: 1\.1
done
${PROG} commit: Rebuilding administrative file database"
cd ..; cd first-dir
sed -e 's/locks; strict;/locks fred:1.1; strict;/' ${CVSROOT_DIRNAME}/first-dir/a-lock,v > a-lock,v
if test -n "$remotehost"; then
$CVS_RSH $remotehost "chmod 644 ${CVSROOT_DIRNAME}/first-dir/a-lock,v"
else
chmod 644 ${CVSROOT_DIRNAME}/first-dir/a-lock,v
fi
dotest reserved-13 "mv a-lock,v ${CVSROOT_DIRNAME}/first-dir/a-lock,v"
if test -n "$remotehost"; then
$CVS_RSH $remotehost "chmod 444 ${CVSROOT_DIRNAME}/first-dir/a-lock,v"
else
chmod 444 ${CVSROOT_DIRNAME}/first-dir/a-lock,v
fi
echo more stuff >> a-lock
dotest_fail reserved-13b "${testcvs} ci -m '' a-lock" \
"fred has file a-lock locked for version 1\.1
${PROG} commit: Pre-commit check failed
${PROG} \[commit aborted\]: correct above errors first!"
dotest_fail reserved-13c "${testcvs} admin -l a-lock" \
"RCS file: ${CVSROOT_DIRNAME}/first-dir/a-lock,v
${PROG} \[admin aborted\]: Revision 1\.1 is already locked by fred"
dotest reserved-14 "${testcvs} admin -u1.1 a-lock" \
"RCS file: ${CVSROOT_DIRNAME}/first-dir/a-lock,v
${PROG} admin: ${CVSROOT_DIRNAME}/first-dir/a-lock,v: revision 1\.1 locked by fred; breaking lock
1\.1 unlocked
done"
dotest reserved-15 "${testcvs} -q ci -m success a-lock" \
"Checking in a-lock;
${CVSROOT_DIRNAME}/first-dir/a-lock,v <-- a-lock
new revision: 1\.2; previous revision: 1\.1
done"
sed -e 's/locks; strict;/locks fred:1.2; strict;/' ${CVSROOT_DIRNAME}/first-dir/a-lock,v > a-lock,v
chmod 644 ${CVSROOT_DIRNAME}/first-dir/a-lock,v
dotest reserved-16 \
"mv a-lock,v ${CVSROOT_DIRNAME}/first-dir/a-lock,v" ""
chmod 444 ${CVSROOT_DIRNAME}/first-dir/a-lock,v
dotest reserved-17 "${testcvs} -q tag -b br a-lock" "T a-lock"
dotest reserved-18 "${testcvs} -q update -r br a-lock" ""
echo edit it >>a-lock
dotest reserved-19 "${testcvs} -q ci -m modify a-lock" \
"Checking in a-lock;
${CVSROOT_DIRNAME}/first-dir/a-lock,v <-- a-lock
new revision: 1\.2\.2\.1; previous revision: 1\.2
done"
cd ../CVSROOT
echo ' dotest reserved-cleanup-1 "${testcvs} -q ci -m back commitinfo" \
"Checking in commitinfo;
${CVSROOT_DIRNAME}/CVSROOT/commitinfo,v <-- commitinfo
new revision: 1\.3; previous revision: 1\.2
done
${PROG} commit: Rebuilding administrative file database"
cd ..; rm -r CVSROOT; cd first-dir
cd ../..
rm -r 1
rm ${TESTDIR}/lockme
rm -rf ${CVSROOT_DIRNAME}/first-dir
;;
diffmerge1)
cd ${TESTDIR}
mkdir diffmerge1
cd diffmerge1
mkdir import
cd import
diffmerge_create_older_files
dotest diffmerge1_import \
"${testcvs} import -m import diffmerge1 tag1 tag2" \
"${DOTSTAR}No conflicts created by this import"
cd ..
${testcvs} rtag -b tag diffmerge1 >/dev/null 2>&1
${testcvs} checkout -r tag diffmerge1 >/dev/null 2>&1
mv diffmerge1 yours
${testcvs} checkout diffmerge1 >/dev/null 2>&1
mv diffmerge1 mine
cd yours
diffmerge_create_your_files
dotest diffmerge1_yours "${testcvs} -q ci -m yours" \
"Checking in testcase01;
${CVSROOT_DIRNAME}/diffmerge1/testcase01,v <-- testcase01
new revision: 1\.1\.1\.1\.2\.1; previous revision: 1\.1\.1\.1
done
Checking in testcase02;
${CVSROOT_DIRNAME}/diffmerge1/testcase02,v <-- testcase02
new revision: 1\.1\.1\.1\.2\.1; previous revision: 1\.1\.1\.1
done
Checking in testcase03;
${CVSROOT_DIRNAME}/diffmerge1/testcase03,v <-- testcase03
new revision: 1\.1\.1\.1\.2\.1; previous revision: 1\.1\.1\.1
done
Checking in testcase04;
${CVSROOT_DIRNAME}/diffmerge1/testcase04,v <-- testcase04
new revision: 1\.1\.1\.1\.2\.1; previous revision: 1\.1\.1\.1
done
Checking in testcase05;
${CVSROOT_DIRNAME}/diffmerge1/testcase05,v <-- testcase05
new revision: 1\.1\.1\.1\.2\.1; previous revision: 1\.1\.1\.1
done
Checking in testcase06;
${CVSROOT_DIRNAME}/diffmerge1/testcase06,v <-- testcase06
new revision: 1\.1\.1\.1\.2\.1; previous revision: 1\.1\.1\.1
done
Checking in testcase07;
${CVSROOT_DIRNAME}/diffmerge1/testcase07,v <-- testcase07
new revision: 1\.1\.1\.1\.2\.1; previous revision: 1\.1\.1\.1
done
Checking in testcase08;
${CVSROOT_DIRNAME}/diffmerge1/testcase08,v <-- testcase08
new revision: 1\.1\.1\.1\.2\.1; previous revision: 1\.1\.1\.1
done
Checking in testcase09;
${CVSROOT_DIRNAME}/diffmerge1/testcase09,v <-- testcase09
new revision: 1\.1\.1\.1\.2\.1; previous revision: 1\.1\.1\.1
done
Checking in testcase10;
${CVSROOT_DIRNAME}/diffmerge1/testcase10,v <-- testcase10
new revision: 1\.1\.1\.1\.2\.1; previous revision: 1\.1\.1\.1
done"
cd ../mine
diffmerge_create_my_files
dotest diffmerge1_mine "${testcvs} -q update -j tag" \
"M testcase01
RCS file: ${CVSROOT_DIRNAME}/diffmerge1/testcase01,v
retrieving revision 1\.1\.1\.1
retrieving revision 1\.1\.1\.1\.2\.1
Merging differences between 1\.1\.1\.1 and 1\.1\.1\.1\.2\.1 into testcase01
M testcase02
RCS file: ${CVSROOT_DIRNAME}/diffmerge1/testcase02,v
retrieving revision 1\.1\.1\.1
retrieving revision 1\.1\.1\.1\.2\.1
Merging differences between 1\.1\.1\.1 and 1\.1\.1\.1\.2\.1 into testcase02
M testcase03
RCS file: ${CVSROOT_DIRNAME}/diffmerge1/testcase03,v
retrieving revision 1\.1\.1\.1
retrieving revision 1\.1\.1\.1\.2\.1
Merging differences between 1\.1\.1\.1 and 1\.1\.1\.1\.2\.1 into testcase03
M testcase04
RCS file: ${CVSROOT_DIRNAME}/diffmerge1/testcase04,v
retrieving revision 1\.1\.1\.1
retrieving revision 1\.1\.1\.1\.2\.1
Merging differences between 1\.1\.1\.1 and 1\.1\.1\.1\.2\.1 into testcase04
RCS file: ${CVSROOT_DIRNAME}/diffmerge1/testcase05,v
retrieving revision 1\.1\.1\.1
retrieving revision 1\.1\.1\.1\.2\.1
Merging differences between 1\.1\.1\.1 and 1\.1\.1\.1\.2\.1 into testcase05
RCS file: ${CVSROOT_DIRNAME}/diffmerge1/testcase06,v
retrieving revision 1\.1\.1\.1
retrieving revision 1\.1\.1\.1\.2\.1
Merging differences between 1\.1\.1\.1 and 1\.1\.1\.1\.2\.1 into testcase06
M testcase07
RCS file: ${CVSROOT_DIRNAME}/diffmerge1/testcase07,v
retrieving revision 1\.1\.1\.1
retrieving revision 1\.1\.1\.1\.2\.1
Merging differences between 1\.1\.1\.1 and 1\.1\.1\.1\.2\.1 into testcase07
testcase07 already contains the differences between 1\.1\.1\.1 and 1\.1\.1\.1\.2\.1
M testcase08
RCS file: ${CVSROOT_DIRNAME}/diffmerge1/testcase08,v
retrieving revision 1\.1\.1\.1
retrieving revision 1\.1\.1\.1\.2\.1
Merging differences between 1\.1\.1\.1 and 1\.1\.1\.1\.2\.1 into testcase08
M testcase09
RCS file: ${CVSROOT_DIRNAME}/diffmerge1/testcase09,v
retrieving revision 1\.1\.1\.1
retrieving revision 1\.1\.1\.1\.2\.1
Merging differences between 1\.1\.1\.1 and 1\.1\.1\.1\.2\.1 into testcase09
M testcase10
RCS file: ${CVSROOT_DIRNAME}/diffmerge1/testcase10,v
retrieving revision 1\.1\.1\.1
retrieving revision 1\.1\.1\.1\.2\.1
Merging differences between 1\.1\.1\.1 and 1\.1\.1\.1\.2\.1 into testcase10"
cd ..
mkdir comp_me
cd comp_me
diffmerge_create_expected_files
cd ..
rm mine/.
dotest diffmerge1_cmp "directory_cmp comp_me mine"
cd ..
if $keep; then :; else
rm -rf diffmerge1 ${CVSROOT_DIRNAME}/diffmerge1
fi
;;
diffmerge2)
mkdir diffmerge2
echo "head 1.1;
access;
symbols
Review_V1p3:1.1.2.1
Review_V1p3C:1.1.2.1
Review_1p3A:1.1.2.1
Review_V1p3A:1.1.2.1
Review_Phase_2_Enhancements:1.1.0.2
Review_V1p2:1.1
Review_V1p2B:1.1
Review_V1p2A:1.1
Review_V1p1:1.1
Review_1p1:1.1;
locks; strict;
comment @ * @;
1.1
date 97.04.02.11.20.05; author colinl; state Exp;
branches
1.1.2.1;
next ;
1.1.2.1
date 97.06.09.10.00.07; author colinl; state Exp;
branches;
next ;
desc
@@
1.1
log
@Project: DEV1175
DCN:
Tested By: Colin Law
Reviewed By:
Reason for Change: Initial Revision of all files
Design Change Details:
Implications:
@
text
@/* \$""Header: L:/gpanels/dis/sgrid.h_v 1.1.1.0 24 Jan 1996 14:59:20 PAULT \$ */
/*
* \$""Log: L:/gpanels/dis/sgrid.h_v \$
*
* Rev 1.1.1.0 24 Jan 1996 14:59:20 PAULT
* Branched
*
* Rev 1.1 24 Jan 1996 12:09:52 PAULT
* Consolidated 4100 code merged to trunk
*
* Rev 1.0.2.0 01 Jun 1995 14:18:58 DAVEH
* Branched
*
* Rev 1.0 19 Apr 1995 16:32:48 COLINL
* Initial revision.
*/
/*****************************************************************************
FILE : SGRID.H
VERSION : 2.1
AUTHOR : Dave Hartley
SYSTEM : Borland C++
DESCRIPTION : The declaration of the scrolling grid class
*****************************************************************************/
#if !defined(__SGRID_H)
#define __SGRID_H
#if !defined(__SCROLL_H)
#include <scroll.h>
#endif
#if !defined(__GKI_H)
#include \"gki.h\"
#endif
#if defined PRINTING_SUPPORT
class Printer;
#endif
/*****************************************************************************
CLASS : ScrollingGrid
DESCRIPTION: This class inherits from a grid and a scrollable, and
can therefore use all the PUBLIC services provided by these
classes. A description of these can be found in
GRID.H and SCROLL.H.
A scrolling grid is a set of horizontal and vertical lines
that scroll and continually update to provide a complete grid
*****************************************************************************/
class ScrollingGrid : public Scrollable
{
public:
#if defined _WINDOWS
/*---------------------------------------------------------------------------
FUNCTION : CONSTRUCTOR
DESCRIPTION : sets up the details of the grid, ready for painting
ARGUMENTS : name : sgColour
- the colour of the grid
sgLineType
- the syle of line
sgHorizontalTotal
- the total number of horizontal grid lines
verticalSpacingMin
- the min distance between the vertical grid lines
on the scrolling axis
currentTimestamp
- timestamp value now
ticksPerSecond
- number of timestamp ticks per second
ticksPerPixel
- number of timestamp ticks per pixel required
RETURN : None
NOTES :
---------------------------------------------------------------------------*/
ScrollingGrid( GkiColour sgColour, GkiLineType sgLineType,
uint16 sgHorizontalTotal,
uint16 verticalSpacingMin, uint32 currentTimestamp,
uint16 ticksPerSecond, uint32 ticksPerPixel );
#else
/*---------------------------------------------------------------------------
FUNCTION : CONSTRUCTOR
DESCRIPTION : sets up the details of the grid, ready for painting
ARGUMENTS : name : sgColour
- the colour of the grid
sgLineType
- the syle of line
sgHorizontalTotal ( THE MAX NUMBER OF LINES IS 100 )
- the total number of horizontal grid lines
sgVerticalSpacing
- the distance between the vertical grid lines
on the scrolling axis
RETURN : None
NOTES : If the caller does not get the total grid lines value, synced
with the overall size of the viewport, the spacing between
grid lines will not be consistent.
---------------------------------------------------------------------------*/
ScrollingGrid( GkiColour sgColour, GkiLineType sgLineType
, uint16 sgHorizontalTotal, uint16 sgVerticalSpacing );
#endif
/*---------------------------------------------------------------------------
FUNCTION : DESTRUCTOR
DESCRIPTION : tidies it all up
ARGUMENTS : name :
RETURN : None
NOTES :
---------------------------------------------------------------------------*/
~ScrollingGrid( void );
/*---------------------------------------------------------------------------
FUNCTION : ATTACH
DESCRIPTION : This service overloads the base class service, as it does
additional work at the time of attachment.
ARGUMENTS : name : tDrawingArea
- the scrolled viewport to attach this trend to
RETURN : None
NOTES :
---------------------------------------------------------------------------*/
void attach( SViewport *tDrawingArea );
#if defined _WINDOWS
/*---------------------------------------------------------------------------
FUNCTION : calculateVerticalSpacing
DESCRIPTION : determines optimum spacing along time axis
ARGUMENTS :
RETURN : None
NOTES :
---------------------------------------------------------------------------*/
void calculateVerticalSpacing();
/*---------------------------------------------------------------------------
FUNCTION : gridSpacingTicks
DESCRIPTION : Provides the grid spacing in the time axis in ticks
ARGUMENTS :
RETURN : Number of ticks
NOTES :
---------------------------------------------------------------------------*/
uint32 gridSpacingTicks();
#endif
/*---------------------------------------------------------------------------
INLINE FUNCTION : HORIZONTALLINES
NOTES : Description at the end of the file
---------------------------------------------------------------------------*/
uint16 horizontalLines( void );
#if defined _WINDOWS
// In Windows the OnDraw() function replaces paint()
/*---------------------------------------------------------------------------
FUNCTION : ScrollingGrid OnDraw
DESCRIPTION : Paints the given area of the grid.
Pure virtual
ARGUMENTS : pDC pointer to the device context to use for display
Note that the device context operates in the coords
of the window owning the viewport
RETURN : None
NOTES :
---------------------------------------------------------------------------*/
virtual void OnDraw( CDC *pDC );
#else // not Windows
/*---------------------------------------------------------------------------
FUNCTION : PAINT
DESCRIPTION : This extends the standard grid paint method to paint the
viewport relative to its current position.
ARGUMENTS : name :
RETURN : None
NOTES :
---------------------------------------------------------------------------*/
void paint( void );
#endif
/*---------------------------------------------------------------------------
FUNCTION : P A I N T T E X T M A R K E R S
DESCRIPTION : this service allow the text markers to be painted seperatley
from the grid lines
ARGUMENTS : name :
RETURN : None
NOTES :
---------------------------------------------------------------------------*/
void paintTextMarkers();
#if defined PRINTING_SUPPORT
/*---------------------------------------------------------------------------
FUNCTION : P R I N T
DESCRIPTION : This print service prints a grid marker ( being either a
timestamp or a date, IF there is one at the plot position
given
ARGUMENTS : name :
displayPosition
- Where in the log to look to see if there is an
entry to print
- printerPtr
the printer to print to
RETURN : None
NOTES :
---------------------------------------------------------------------------*/
void print( uint16 currentPrintPos, Printer *printerPtr );
#endif
/*---------------------------------------------------------------------------
FUNCTION : S E T D R I V E D I R E C T I O N
DESCRIPTION : Sets direction for update and scrolling forwards or backwards
ARGUMENTS : direction - required direction
RETURN : None
NOTES :
---------------------------------------------------------------------------*/
void setDriveDirection( ScrollDirection direction );
/*---------------------------------------------------------------------------
FUNCTION : S E T U P
DESCRIPTION : service that will setup the grid prior to a paint
ARGUMENTS : name :
- newTimestamp
- newTimeBase
the number of ticks that represent a plot point on
the trendgraph.
RETURN : None
NOTES :
---------------------------------------------------------------------------*/
void setup( uint32 newTimestamp, uint32 newTimeBase );
#if defined PRINTING_SUPPORT
/*---------------------------------------------------------------------------
FUNCTION : S E T U P F O R P R I N T
DESCRIPTION : This service iis to be called prior to printing. It allows
the grid to prepare its markers ready for the print
commands
ARGUMENTS : name :
RETURN : None
NOTES :
---------------------------------------------------------------------------*/
void setupForPrint();
#endif
/*---------------------------------------------------------------------------
FUNCTION : UPDATE
DESCRIPTION : When this service is called it will calculate what needs to
be painted and fill in the display again.
ARGUMENTS : name : timeStamp
- the reference time of this update.
RETURN : None
NOTES :
---------------------------------------------------------------------------*/
void update( uint32 timeStamp );
/*---------------------------------------------------------------------------
FUNCTION : U P D A T E B U F F E R
DESCRIPTION : When a display update is not required, use this method. It
updates the internal data ready for a call to paint that
will then show the grid in the right position
ARGUMENTS : name :
RETURN : None
NOTES :
---------------------------------------------------------------------------*/
void updateBuffer( void );
private:
/*---------------------------------------------------------------------------
FUNCTION : M A K E G R I D M A R K E R
DESCRIPTION : service that perpares a string for display. The string will
either be a short date, or short time. this is determined
by the current setting of the dateMarker flag
ARGUMENTS : name : timestampVal
- the value to convert
storePtr
- the place to put the string
RETURN : None
NOTES :
---------------------------------------------------------------------------*/
void makeGridMarker( uint32 timestampVal, char *storePtr );
/*---------------------------------------------------------------------------
FUNCTION : P A I N T G R I D M A R K E R
DESCRIPTION : given a position will put the string on the display
ARGUMENTS : name :
yPos
- were it goes on the Y-axis
gridMarkerPtr
- what it is
RETURN : None
NOTES :
---------------------------------------------------------------------------*/
void paintGridMarker( uint16 yPos, char *gridMarkerPtr );
#if defined _WINDOWS
/*---------------------------------------------------------------------------
FUNCTION : PAINTHORIZONTALLINES
DESCRIPTION : responsible for painting the grids horizontal lines
ARGUMENTS : pRectToDraw pointer to rectangle that needs refreshing.
in viewport coords
pDC pointer to device context to use
RETURN : None
NOTES :
---------------------------------------------------------------------------*/
void paintHorizontalLines(RectCoords* pRectToDraw, CDC* pDC );
#else
/*---------------------------------------------------------------------------
FUNCTION : PAINTHORIZONTALLINES
DESCRIPTION : responsible for painting the grids horizontal lines
ARGUMENTS : name: xStart
- the starting X co-ordinate for the horizontal line
xEnd
- the ending X co-ordinate for the horizontal line
RETURN : None
NOTES : Remember lines are drawn from origin. The origin in a
horizontal viewport will be the top.
---------------------------------------------------------------------------*/
void paintHorizontalLines( uint16 xStart, uint16 xEnd );
#endif
#if defined _WINDOWS
/*---------------------------------------------------------------------------
FUNCTION : PAINTVERTICALLINES
DESCRIPTION : responsible for painting the grids vertical lines
ARGUMENTS : pRectToDraw pointer to rectangle that needs refreshing.
in viewport coords
offset offset from rhs that rightmost line would be
drawn if rectangle included whole viewport
pDC pointer to device context to use
RETURN : None
NOTES :
---------------------------------------------------------------------------*/
void paintVerticalLines( RectCoords* pRectToDraw, uint16 offset,
CDC* pDC );
#else
/*---------------------------------------------------------------------------
FUNCTION : PAINTVERTICALLINES
DESCRIPTION : responsible for painting the grids vertical lines
ARGUMENTS : name : yStart
- the starting Y co-ordinate for the vertical line
yEnd
- the ending Y co-ordinate for the vertical line
offset
- a starting point offset that determines at what X
position the first line will be drawn
RETURN : None
NOTES :
---------------------------------------------------------------------------*/
void paintVerticalLines( uint16 yStart, uint16 yEnd, uint16 offset );
#endif
#if defined _WINDOWS
/*---------------------------------------------------------------------------
FUNCTION : PAINTVERTICALLINE
DESCRIPTION : paints one line at the position specified, and length
ARGUMENTS : name : yStart
- the starting point on the y axis for the line
yEnd
- the end point on the y axis for the line
xPosition
- The horizontal offset from the start of the viewport
pDC pointer to device context to use
RETURN : None
NOTES : There is not an equivalent horizontal method as yet. This
is a seperate method because the service is useful to a
derivation of this class
---------------------------------------------------------------------------*/
void paintVerticalLine( uint16 yStart, uint16 yEnd
, uint16 xPosition, CDC *pDC );
#else
/*---------------------------------------------------------------------------
FUNCTION : PAINTVERTICALLINE
DESCRIPTION : paints one line at the position specified, and length
ARGUMENTS : name : yStart
- the starting point on the y axis for the line
yEnd
- the end point on the y axis for the line
xPosition
- The horizontal offset from the start of the viewport
RETURN : None
NOTES : There is not an equivalent horizontal method as yet. This
is a seperate method because the service is useful to a
derivation of this class
---------------------------------------------------------------------------*/
void paintVerticalLine( uint16 yStart, uint16 yEnd
, uint16 xPosition );
#endif
/*---------------------------------------------------------------------------
INLINE FUNCTION : VERTICALSPACING
NOTES : Description at the end of the file
---------------------------------------------------------------------------*/
uint16 verticalSpacing( void );
// Position in viewport that we are now writing to if going forwards
// Note that if this is greater than viewport length then we have
// just scrolled and value must be adjusted before use.
sint16 forwardsOutputPosition;
// Position in viewport that we are now writing to if going backwards
// Note that if this is less than zero then we have
// just scrolled and value must be adjusted before use.
sint16 backwardsOutputPosition;
// position in grid cycle of forwards output position.
// if zero then it is time to output a grid line
sint16 forwardsIntervalCount;
// position in grid cycle of forwards output position.
// if zero then it is time to output a grid line
sint16 backwardsIntervalCount;
uint32 lastUpdateTimestamp;
uint32 timeBase; // ticks per pixel
uint16 currentOutputPosition;
uint16 gridTimestampSpacing;
uint16 intervalCount;
uint16 horizontalTotal;
uint16 vSpacing;
#if defined PRINTING_SUPPORT
uint16 numberOfGridMarkersPrinted;
#endif
bool firstTime; // indicates first time through
bool dateMarker;
GkiLineType lineType;
GkiColour gridColour;
#if defined _WINDOWS
uint16 ticksPerSec; // number of time ticks per second
uint16 vSpacingMin; // minimum pixels per division along time axis
CPen *pPen; // the pen to use for drawing in windows
#endif
};
/*****************************************************************************
I N L I N E F U N C T I O N S
*****************************************************************************/
/*---------------------------------------------------------------------------
FUNCTION : HORIZONTALLINES
DESCRIPTION : supplies the number of horizontal lines in the grid
ARGUMENTS : name :
RETURN :
NOTES :
---------------------------------------------------------------------------*/
inline uint16 ScrollingGrid::horizontalLines( void )
{
return( horizontalTotal );
}
/*---------------------------------------------------------------------------
FUNCTION : VERTICALSPACING
DESCRIPTION : returns the distance between adjacent vertical lines
ARGUMENTS : name :
RETURN : None
NOTES :
---------------------------------------------------------------------------*/
inline uint16 ScrollingGrid::verticalSpacing( void )
{
return( vSpacing );
}
#endif
@
1.1.2.1
log
@DEV1194:DS4 Provision of major and minor grid lines
@
text
@d1 1
a1 1
/* \$""Header: /usr/local/repository/cmnsrc/review/src/sgrid.h,v 1.1 1997/04/02 11:20:05 colinl Exp \$ */
d3 1
a3 12
* \$""Log: sgrid.h,v \$
* Revision 1.1 1997/04/02 11:20:05 colinl
* Project: DEV1175
* DCN:
* Tested By: Colin Law
* Reviewed By:
* Reason for Change: Initial Revision of all files
*
* Design Change Details:
*
* Implications:
*
d58 6
a63 5
ARGUMENTS : name : majorColour colour for major grid lines
minorColour colour for minor grid lines
sgLineType line type for minor grid lines
yMajorGridLines number of major y lines on grid
yMinorGridLines number of major y lines on grid
d77 2
a78 3
ScrollingGrid( GkiColour majorColour, GkiColour minorColour,
GkiLineType sgLineType,
uint16 yMajorGridLines, uint16 yMinorGridLines,
a137 17
FUNCTION : DrawHorizontalGridLines
DESCRIPTION : Draws major or minor grid lines
ARGUMENTS : pDC device context
pPen pen to use
numLines total lines required
yLow, yHigh, xLow, xHigh rectangle to draw in
yMax max y value
RETURN : None
NOTES :
---------------------------------------------------------------------------*/
void DrawHorizontalGridLines( CDC* pDC, CPen* pPen,
uint16 numLines,
uint16 yLow, uint16 yHigh, uint16 xLow, uint16 xHigh,
uint16 yMax );
/*---------------------------------------------------------------------------
d148 6
d448 1
a448 2
uint16 m_yMajorGridLines;
uint16 m_yMinorGridLines;
d456 2
a457 3
GkiLineType lineType; // line type for minor grid lines
GkiColour m_majorColour;
GkiColour m_minorColour;
d462 1
a462 2
CPen *pMajorPen; // pen to use for drawing major grid lines
CPen *pMinorPen; // pen to use for drawing minor grid lines
d472 12
@" > diffmerge2/sgrid.h,v
mkdir ${CVSROOT_DIRNAME}/diffmerge2
cp diffmerge2/sgrid.h,v ${CVSROOT_DIRNAME}/diffmerge2/sgrid.h,v
rm -rf diffmerge2
dotest diffmerge2_co \
"${testcvs} co diffmerge2" "${DOTSTAR}U ${DOTSTAR}"
cd diffmerge2
dotest diffmerge2_update \
"${testcvs} update -j Review_Phase_2_Enhancements sgrid.h" \
"${DOTSTAR}erging ${DOTSTAR}"
dotest diffmerge2_diff \
"${testcvs} diff -r Review_V1p3 sgrid.h" ''
cd ..
rm -rf diffmerge2
rm -rf ${CVSROOT_DIRNAME}/diffmerge2
;;
release)
mkdir 1; cd 1
dotest release-1 "${testcvs} -q co -l ." ''
mkdir first-dir
dotest release-2 "${testcvs} add first-dir" \
"Directory ${CVSROOT_DIRNAME}/first-dir added to the repository"
cd first-dir
mkdir dir1
dotest release-3 "${testcvs} add dir1" \
"Directory ${CVSROOT_DIRNAME}/first-dir/dir1 added to the repository"
mkdir dir2
dotest release-4 "${testcvs} add dir2" \
"Directory ${CVSROOT_DIRNAME}/first-dir/dir2 added to the repository"
cd dir2
mkdir dir3
dotest release-5 "${testcvs} add dir3" \
"Directory ${CVSROOT_DIRNAME}/first-dir/dir2/dir3 added to the repository"
cd ../..
dotest release-6 "${testcvs} release -d first-dir/dir2/dir3 first-dir/dir1" \
"You have .0. altered files in this repository.
Are you sure you want to release (and delete) directory .first-dir/dir2/dir3.: \
You have .0. altered files in this repository.
Are you sure you want to release (and delete) directory .first-dir/dir1.: " <<EOF
yes
yes
EOF
dotest_fail release-7 "test -d first-dir/dir1" ''
dotest_fail release-8 "test -d first-dir/dir2/dir3" ''
dotest release-9 "${testcvs} update" \
"${PROG} update: Updating \.
${PROG} update: Updating first-dir
${PROG} update: Updating first-dir/dir2"
cd first-dir
mkdir dir1
dotest release-10 "${testcvs} add dir1" \
"Directory ${CVSROOT_DIRNAME}/first-dir/dir1 added to the repository"
cd dir2
mkdir dir3
dotest release-11 "${testcvs} add dir3" \
"Directory ${CVSROOT_DIRNAME}/first-dir/dir2/dir3 added to the repository"
cd ../..
dotest release-12 "${testcvs} release first-dir/dir2/dir3 first-dir/dir1" \
"You have .0. altered files in this repository.
Are you sure you want to release directory .first-dir/dir2/dir3.: .. .release. aborted by user choice.
You have .0. altered files in this repository.
Are you sure you want to release directory .first-dir/dir1.: " <<EOF
no
yes
EOF
dotest release-13 "${testcvs} release first-dir/dir2/dir3 first-dir/dir2" \
"You have .0. altered files in this repository.
Are you sure you want to release directory .first-dir/dir2/dir3.: \
You have .0. altered files in this repository.
Are you sure you want to release directory .first-dir/dir2.: " <<EOF
yes
yes
EOF
dotest release-14 "test -d first-dir/dir1" ''
dotest release-15 "test -d first-dir/dir2/dir3" ''
rm -rf first-dir/dir1 first-dir/dir2
dotest release-16 "${testcvs} update" \
"${PROG} update: Updating \.
${PROG} update: Updating first-dir"
cd first-dir
mkdir second-dir
dotest release-18 "$testcvs add second-dir" \
"Directory $CVSROOT_DIRNAME/first-dir/second-dir added to the repository"
cd second-dir
touch file1
dotest release-19 "$testcvs -Q add file1"
dotest release-20 '$testcvs -q ci -m add' \
"RCS file: $CVSROOT_DIRNAME/first-dir/second-dir/file1,v
done
Checking in file1;
$CVSROOT_DIRNAME/first-dir/second-dir/file1,v <-- file1
initial revision: 1\.1
done"
dotest release-21 "$testcvs edit file1"
cd ..
dotest release-22 "echo yes | $testcvs release -d second-dir" \
"You have \[0\] altered files in this repository.
Are you sure you want to release (and delete) directory \`second-dir': "
dotest release-23 "$testcvs -q update -d" "U second-dir/file1"
dotest release-24 "$testcvs edit"
cd ../..
rm -rf 1 $CVSROOT_DIRNAME/first-dir
;;
recase)
mkdir 1; cd 1
echo file >file
echo FiLe >FiLe
if cmp file FiLe >/dev/null; then
client_sensitive=false
else
client_sensitive=:
fi
if test -n "$remotehost"; then
$CVS_RSH $remotehost 'echo file >file'
$CVS_RSH $remotehost 'echo FiLe >FiLe'
if $CVS_RSH $remotehost 'cmp file FiLe >/dev/null'; then
server_sensitive=false
else
server_sensitive=:
fi
else
server_sensitive=$client_sensitive
fi
mkdir $CVSROOT_DIRNAME/first-dir
dotest recase-init-1 "$testcvs -Q co first-dir"
cd first-dir
echo this file has no content >file
dotest recase-init-2 "$testcvs -Q add file"
dotest recase-init-3 "$testcvs -Q ci -madd" \
"RCS file: $CVSROOT_DIRNAME/first-dir/file,v
done
Checking in file;
$CVSROOT_DIRNAME/first-dir/file,v <-- file
initial revision: 1\.1
done"
dotest recase-init-4 "$testcvs -Q tag first"
dotest recase-init-5 "$testcvs -Q rm -f file"
dotest recase-init-6 "$testcvs -Q ci -mrm" \
"Removing file;
$CVSROOT_DIRNAME/first-dir/file,v <-- file
new revision: delete; previous revision: 1\.1
done"
echo this file needs some content >FiLe
if $server_sensitive; then
dotest recase-1ss "$testcvs add FiLe" \
"$PROG add: scheduling file \`FiLe' for addition
$PROG add: use '$PROG commit' to add this file permanently"
dotest recase-2ss "$testcvs -q ci -mrecase" \
"RCS file: $CVSROOT_DIRNAME/first-dir/FiLe,v
done
Checking in FiLe;
$CVSROOT_DIRNAME/first-dir/FiLe,v <-- FiLe
initial revision: 1\.1
done"
else dotest recase-1si "$testcvs add FiLe" \
"$PROG add: Re-adding file \`FiLe' (in place of dead revision 1\.2)\.
$PROG add: use '$PROG commit' to add this file permanently"
dotest recase-2si "$testcvs -q ci -mrecase" \
"Checking in FiLe;
$CVSROOT_DIRNAME/first-dir/FiLe,v <-- FiLe
new revision: 1\.3; previous revision: 1\.2
done"
fi
cd ../..
mkdir 2; cd 2
dotest recase-3 "$testcvs -q co first-dir" \
"U first-dir/FiLe"
cd first-dir
if $remote; then
if $client_sensitive; then
file=file
fIlE=fIlE
else file=FiLe
fIlE=FiLe
fi
else file=file
fIlE=fIlE
fi
if $server_sensitive; then
if $client_sensitive; then
dotest recase-4sscs "$testcvs status file" \
"===================================================================
File: no file file Status: Up-to-date
Working revision: No entry for file
Repository revision: 1\.2 $CVSROOT_DIRNAME/first-dir/Attic/file,v"
dotest recase-5sscs "$testcvs log file" \
"
RCS file: $CVSROOT_DIRNAME/first-dir/Attic/file,v
Working file: file
head: 1\.2
branch:
locks: strict
access list:
symbolic names:
first: 1\.1
keyword substitution: kv
total revisions: 2; selected revisions: 2
description:
----------------------------
revision 1\.2
date: [0-9/]* [0-9:]*; author: $username; state: dead; lines: +0 -0
rm
----------------------------
revision 1\.1
date: [0-9/]* [0-9:]*; author: $username; state: Exp;
add
============================================================================="
dotest recase-6sscs "$testcvs status FiLe" \
"===================================================================
File: FiLe Status: Up-to-date
Working revision: 1\.1.*
Repository revision: 1\.1 $CVSROOT_DIRNAME/first-dir/FiLe,v
Sticky Tag: (none)
Sticky Date: (none)
Sticky Options: (none)"
dotest recase-7sscs "$testcvs log FiLe" \
"
RCS file: $CVSROOT_DIRNAME/first-dir/FiLe,v
Working file: FiLe
head: 1\.1
branch:
locks: strict
access list:
symbolic names:
keyword substitution: kv
total revisions: 1; selected revisions: 1
description:
----------------------------
revision 1\.1
date: [0-9/]* [0-9:]*; author: $username; state: Exp;
recase
============================================================================="
else dotest recase-4ssci "$testcvs status file" \
"===================================================================
File: FiLe Status: Up-to-date
Working revision: 1\.1.*
Repository revision: 1\.1 $CVSROOT_DIRNAME/first-dir/FiLe,v
Sticky Tag: (none)
Sticky Date: (none)
Sticky Options: (none)"
dotest recase-5ssci "$testcvs log file" \
"
RCS file: $CVSROOT_DIRNAME/first-dir/FiLe,v
Working file: FiLe
head: 1\.1
branch:
locks: strict
access list:
symbolic names:
keyword substitution: kv
total revisions: 1; selected revisions: 1
description:
----------------------------
revision 1\.1
date: [0-9/]* [0-9:]*; author: $username; state: Exp;
recase
============================================================================="
dotest recase-6ss "$testcvs status FiLe" \
"===================================================================
File: FiLe Status: Up-to-date
Working revision: 1\.1.*
Repository revision: 1\.1 $CVSROOT_DIRNAME/first-dir/FiLe,v
Sticky Tag: (none)
Sticky Date: (none)
Sticky Options: (none)"
dotest recase-7ss "$testcvs log FiLe" \
"
RCS file: $CVSROOT_DIRNAME/first-dir/FiLe,v
Working file: FiLe
head: 1\.1
branch:
locks: strict
access list:
symbolic names:
keyword substitution: kv
total revisions: 1; selected revisions: 1
description:
----------------------------
revision 1\.1
date: [0-9/]* [0-9:]*; author: $username; state: Exp;
recase
============================================================================="
fi
else dotest recase-4si "$testcvs status file" \
"===================================================================
File: $file Status: Up-to-date
Working revision: 1\.3.*
Repository revision: 1\.3 $CVSROOT_DIRNAME/first-dir/$file,v
Sticky Tag: (none)
Sticky Date: (none)
Sticky Options: (none)"
dotest recase-5si "$testcvs log file" \
"
RCS file: $CVSROOT_DIRNAME/first-dir/$file,v
Working file: $file
head: 1\.3
branch:
locks: strict
access list:
symbolic names:
first: 1\.1
keyword substitution: kv
total revisions: 3; selected revisions: 3
description:
----------------------------
revision 1\.3
date: [0-9/]* [0-9:]*; author: $username; state: Exp; lines: +1 -1
recase
----------------------------
revision 1\.2
date: [0-9/]* [0-9:]*; author: $username; state: dead; lines: +0 -0
rm
----------------------------
revision 1\.1
date: [0-9/]* [0-9:]*; author: $username; state: Exp;
add
============================================================================="
dotest recase-6si "$testcvs status FiLe" \
"===================================================================
File: FiLe Status: Up-to-date
Working revision: 1\.3.*
Repository revision: 1\.3 $CVSROOT_DIRNAME/first-dir/FiLe,v
Sticky Tag: (none)
Sticky Date: (none)
Sticky Options: (none)"
dotest recase-7si "$testcvs log FiLe" \
"
RCS file: $CVSROOT_DIRNAME/first-dir/FiLe,v
Working file: FiLe
head: 1\.3
branch:
locks: strict
access list:
symbolic names:
first: 1\.1
keyword substitution: kv
total revisions: 3; selected revisions: 3
description:
----------------------------
revision 1\.3
date: [0-9/]* [0-9:]*; author: $username; state: Exp; lines: +1 -1
recase
----------------------------
revision 1\.2
date: [0-9/]* [0-9:]*; author: $username; state: dead; lines: +0 -0
rm
----------------------------
revision 1\.1
date: [0-9/]* [0-9:]*; author: $username; state: Exp;
add
============================================================================="
fi
if $client_sensitive && $server_sensitive; then
dotest recase-8sscs "$testcvs status fIlE" \
"$PROG status: nothing known about fIlE
===================================================================
File: no file fIlE Status: Unknown
Working revision: No entry for fIlE
Repository revision: No revision control file"
else dotest recase-8anyi "$testcvs status fIlE" \
"===================================================================
File: $fIlE Status: Up-to-date
Working revision: 1\.[0-9]*.*
Repository revision: 1\.[0-9]* $CVSROOT_DIRNAME/first-dir/$fIlE,v
Sticky Tag: (none)
Sticky Date: (none)
Sticky Options: (none)"
fi
if $server_sensitive; then
dotest recase-9ss "$testcvs -q up -rfirst" \
"$PROG update: FiLe is no longer in the repository
U file"
if $client_sensitive; then
dotest recase-10sscs "$testcvs -q up -A" \
"U FiLe
$PROG update: file is no longer in the repository"
else dotest_fail recase-10ssci "$testcvs -q up -A" \
"$PROG update: move away \./FiLe; it is in the way
C FiLe
$PROG update: file is no longer in the repository"
cd ..
rm -r first-dir
dotest recase-11ssci "$testcvs -q co first-dir" \
"U first-dir/FiLe"
cd first-dir
fi
if test -n "$remotehost"; then
$CVS_RSH $remotehost "cp $CVSROOT_DIRNAME/first-dir/FiLe,v \
$CVSROOT_DIRNAME/first-dir/FILE,v"
else
cp $CVSROOT_DIRNAME/first-dir/FiLe,v \
$CVSROOT_DIRNAME/first-dir/FILE,v
fi
if $client_sensitive; then
dotest recase-12sscs "$testcvs -q up" "U FILE"
else dotest_fail recase-12ssci "$testcvs -q up" \
"$PROG update: move away \./FILE; it is in the way
C FILE"
fi
else dotest recase-9si "$testcvs -q up -rfirst" "U FiLe"
dotest recase-10si "$testcvs -q up -A" "U FiLe"
fi
if $server_sensitive; then
if $client_sensitive; then
dotest recase-13sscs "$testcvs status file" \
"===================================================================
File: no file file Status: Up-to-date
Working revision: No entry for file
Repository revision: 1\.2 $CVSROOT_DIRNAME/first-dir/Attic/file,v"
dotest recase-14sscs "$testcvs log file" \
"
RCS file: $CVSROOT_DIRNAME/first-dir/Attic/file,v
Working file: file
head: 1\.2
branch:
locks: strict
access list:
symbolic names:
first: 1\.1
keyword substitution: kv
total revisions: 2; selected revisions: 2
description:
----------------------------
revision 1\.2
date: [0-9/]* [0-9:]*; author: $username; state: dead; lines: +0 -0
rm
----------------------------
revision 1\.1
date: [0-9/]* [0-9:]*; author: $username; state: Exp;
add
============================================================================="
dotest recase-15sscs "$testcvs status FiLe" \
"===================================================================
File: FiLe Status: Up-to-date
Working revision: 1\.1.*
Repository revision: 1\.1 $CVSROOT_DIRNAME/first-dir/FiLe,v
Sticky Tag: (none)
Sticky Date: (none)
Sticky Options: (none)"
dotest recase-16sscs "$testcvs log FiLe" \
"
RCS file: $CVSROOT_DIRNAME/first-dir/FiLe,v
Working file: FiLe
head: 1\.1
branch:
locks: strict
access list:
symbolic names:
keyword substitution: kv
total revisions: 1; selected revisions: 1
description:
----------------------------
revision 1\.1
date: [0-9/]* [0-9:]*; author: $username; state: Exp;
recase
============================================================================="
dotest recase-17sscs "$testcvs status FILE" \
"===================================================================
File: FILE Status: Up-to-date
Working revision: 1.1.*
Repository revision: 1.1 ${CVSROOT_DIRNAME}/first-dir/FILE,v
Sticky Tag: (none)
Sticky Date: (none)
Sticky Options: (none)"
dotest recase-18sscs "$testcvs log FILE" \
"
RCS file: $CVSROOT_DIRNAME/first-dir/FILE,v
Working file: FILE
head: 1\.1
branch:
locks: strict
access list:
symbolic names:
keyword substitution: kv
total revisions: 1; selected revisions: 1
description:
----------------------------
revision 1\.1
date: [0-9/]* [0-9:]*; author: $username; state: Exp;
recase
============================================================================="
else dotest recase-13ssci "$testcvs status file" \
"===================================================================
File: FiLe Status: Up-to-date
Working revision: 1\.1.*
Repository revision: 1\.1 $CVSROOT_DIRNAME/first-dir/FiLe,v
Sticky Tag: (none)
Sticky Date: (none)
Sticky Options: (none)"
dotest recase-16ssci "$testcvs log FiLe" \
"
RCS file: $CVSROOT_DIRNAME/first-dir/FiLe,v
Working file: FiLe
head: 1\.1
branch:
locks: strict
access list:
symbolic names:
keyword substitution: kv
total revisions: 1; selected revisions: 1
description:
----------------------------
revision 1\.1
date: [0-9/]* [0-9:]*; author: $username; state: Exp;
recase
============================================================================="
dotest recase-17ssci "$testcvs status FILE" \
"===================================================================
File: FiLe Status: Up-to-date
Working revision: 1\.1.*
Repository revision: 1\.1 $CVSROOT_DIRNAME/first-dir/FiLe,v
Sticky Tag: (none)
Sticky Date: (none)
Sticky Options: (none)"
dotest recase-18ssci "$testcvs log FILE" \
"
RCS file: $CVSROOT_DIRNAME/first-dir/FiLe,v
Working file: FiLe
head: 1\.1
branch:
locks: strict
access list:
symbolic names:
keyword substitution: kv
total revisions: 1; selected revisions: 1
description:
----------------------------
revision 1\.1
date: [0-9/]* [0-9:]*; author: $username; state: Exp;
recase
============================================================================="
fi
else :
fi
if $client_sensitive && $server_sensitive; then
dotest recase-19sscs "$testcvs status fIlE" \
"$PROG status: nothing known about fIlE
===================================================================
File: no file fIlE Status: Unknown
Working revision: No entry for fIlE
Repository revision: No revision control file"
else dotest recase-19anyi "$testcvs status fIlE" \
"===================================================================
File: $fIlE Status: Up-to-date
Working revision: 1\.[0-9]*.*
Repository revision: 1\.[0-9]* $CVSROOT_DIRNAME/first-dir/$fIlE,v
Sticky Tag: (none)
Sticky Date: (none)
Sticky Options: (none)"
fi
cd ../..
mkdir 3; cd 3
if $server_sensitive; then
if $client_sensitive; then
dotest recase-20sscs "$testcvs -q co first-dir" \
"U first-dir/FILE
U first-dir/FiLe"
else dotest_fail recase-20ssci "$testcvs -q co first-dir" \
"U first-dir/FILE
$PROG checkout: move away first-dir/FiLe; it is in the way
C first-dir/FiLe"
fi
else :
fi
if $keep; then
echo Keeping ${TESTDIR} and exiting due to --keep
exit 0
fi
cd ..
rm -r 1 2 3
if $server_sensitive && test -n "$remotehost"; then
$CVS_RSH $remotehost "rm -f $CVSROOT_DIRNAME/first-dir/FILE,v"
fi
rm -rf $CVSROOT_DIRNAME/first-dir
;;
multiroot)
CVSROOT1_DIRNAME=${TESTDIR}/root1
CVSROOT2_DIRNAME=${TESTDIR}/root2
CVSROOT1=`newroot $CVSROOT1_DIRNAME`
CVSROOT2=`newroot $CVSROOT2_DIRNAME`
testcvs1="${testcvs} -d ${CVSROOT1}"
testcvs2="${testcvs} -d ${CVSROOT2}"
dotest multiroot-setup-1 "mkdir ${CVSROOT1_DIRNAME} ${CVSROOT2_DIRNAME}" ""
dotest multiroot-setup-2 "${testcvs1} init" ""
dotest multiroot-setup-3 "${testcvs2} init" ""
mkdir 1; cd 1
dotest multiroot-setup-4 "${testcvs1} co -l ." \
"${PROG} checkout: Updating ."
mkdir mod1-1 mod1-2
dotest multiroot-setup-5 "${testcvs1} add mod1-1 mod1-2" \
"Directory ${CVSROOT1_DIRNAME}/mod1-1 added to the repository
Directory ${CVSROOT1_DIRNAME}/mod1-2 added to the repository"
echo file1-1 > mod1-1/file1-1
echo file1-2 > mod1-2/file1-2
dotest multiroot-setup-6 "${testcvs1} add mod1-1/file1-1 mod1-2/file1-2" \
"${PROG} add: scheduling file .mod1-1/file1-1. for addition
${PROG} add: scheduling file .mod1-2/file1-2. for addition
${PROG} add: use .${PROG} commit. to add these files permanently"
dotest multiroot-setup-7 "${testcvs1} commit -m is" \
"${PROG} [a-z]*: Examining \.
${PROG} [a-z]*: Examining mod1-1
${PROG} [a-z]*: Examining mod1-2
RCS file: ${CVSROOT1_DIRNAME}/mod1-1/file1-1,v
done
Checking in mod1-1/file1-1;
${CVSROOT1_DIRNAME}/mod1-1/file1-1,v <-- file1-1
initial revision: 1.1
done
RCS file: ${CVSROOT1_DIRNAME}/mod1-2/file1-2,v
done
Checking in mod1-2/file1-2;
${CVSROOT1_DIRNAME}/mod1-2/file1-2,v <-- file1-2
initial revision: 1.1
done"
cd ..
rm -rf 1
mkdir 1; cd 1
dotest multiroot-setup-8 "${testcvs2} co -l ." \
"${PROG} checkout: Updating ."
mkdir mod2-1 mod2-2
dotest multiroot-setup-9 "${testcvs2} add mod2-1 mod2-2" \
"Directory ${CVSROOT2_DIRNAME}/mod2-1 added to the repository
Directory ${CVSROOT2_DIRNAME}/mod2-2 added to the repository"
echo file2-1 > mod2-1/file2-1
echo file2-2 > mod2-2/file2-2
dotest multiroot-setup-6 "${testcvs2} add mod2-1/file2-1 mod2-2/file2-2" \
"${PROG} add: scheduling file .mod2-1/file2-1. for addition
${PROG} add: scheduling file .mod2-2/file2-2. for addition
${PROG} add: use .${PROG} commit. to add these files permanently"
dotest multiroot-setup-10 "${testcvs2} commit -m anyone" \
"${PROG} [a-z]*: Examining \.
${PROG} [a-z]*: Examining mod2-1
${PROG} [a-z]*: Examining mod2-2
RCS file: ${CVSROOT2_DIRNAME}/mod2-1/file2-1,v
done
Checking in mod2-1/file2-1;
${CVSROOT2_DIRNAME}/mod2-1/file2-1,v <-- file2-1
initial revision: 1.1
done
RCS file: ${CVSROOT2_DIRNAME}/mod2-2/file2-2,v
done
Checking in mod2-2/file2-2;
${CVSROOT2_DIRNAME}/mod2-2/file2-2,v <-- file2-2
initial revision: 1.1
done"
cd ..
rm -rf 1
mkdir 1; cd 1
dotest multiroot-workaround "${testcvs1} -q co -l ." ""
dotest multiroot-setup-11 "${testcvs1} co mod1-1 mod1-2" \
"${PROG} checkout: Updating mod1-1
U mod1-1/file1-1
${PROG} checkout: Updating mod1-2
U mod1-2/file1-2"
dotest multiroot-setup-12 "${testcvs2} co mod2-1 mod2-2" \
"${PROG} checkout: Updating mod2-1
U mod2-1/file2-1
${PROG} checkout: Updating mod2-2
U mod2-2/file2-2"
cd mod1-2
dotest multiroot-setup-13 "${testcvs2} co mod2-2" \
"${PROG} checkout: Updating mod2-2
U mod2-2/file2-2"
cd ..
cd mod2-2
dotest multiroot-setup-14 "${testcvs1} co mod1-2" \
"${PROG} checkout: Updating mod1-2
U mod1-2/file1-2"
cd ..
dotest multiroot-cvsadm-1a "cat mod1-1/CVS/Root" "${CVSROOT1}"
dotest multiroot-cvsadm-1b "cat mod1-1/CVS/Repository" "mod1-1"
dotest multiroot-cvsadm-2a "cat mod2-1/CVS/Root" "${CVSROOT2}"
dotest multiroot-cvsadm-2b "cat mod2-1/CVS/Repository" "mod2-1"
dotest multiroot-cvsadm-3a "cat mod1-2/CVS/Root" "${CVSROOT1}"
dotest multiroot-cvsadm-3b "cat mod1-2/CVS/Repository" "mod1-2"
dotest multiroot-cvsadm-3c "cat mod1-2/mod2-2/CVS/Root" "${CVSROOT2}"
dotest multiroot-cvsadm-3d "cat mod1-2/mod2-2/CVS/Repository" "mod2-2"
dotest multiroot-cvsadm-4a "cat mod2-2/CVS/Root" "${CVSROOT2}"
dotest multiroot-cvsadm-4b "cat mod2-2/CVS/Repository" "mod2-2"
dotest multiroot-cvsadm-4c "cat mod2-2/mod1-2/CVS/Root" "${CVSROOT1}"
dotest multiroot-cvsadm-4d "cat mod2-2/mod1-2/CVS/Repository" "mod1-2"
dotest multiroot-update-1a "${testcvs1} update" \
"${PROG} update: Updating \.
${PROG} update: Updating mod1-1
${PROG} update: Updating mod1-2
${PROG} update: Updating mod1-2/mod2-2
${PROG} update: cannot open directory ${CVSROOT1_DIRNAME}/mod2-2: No such file or directory
${PROG} update: skipping directory mod1-2/mod2-2
${PROG} update: Updating mod2-1
${PROG} update: cannot open directory ${CVSROOT1_DIRNAME}/mod2-1: No such file or directory
${PROG} update: skipping directory mod2-1
${PROG} update: Updating mod2-2
${PROG} update: cannot open directory ${CVSROOT1_DIRNAME}/mod2-2: No such file or directory
${PROG} update: skipping directory mod2-2"
dotest multiroot-update-1b "${testcvs2} update" \
"${PROG} update: Updating \.
${PROG} update: Updating mod1-1
${PROG} update: cannot open directory ${CVSROOT2_DIRNAME}/mod1-1: No such file or directory
${PROG} update: skipping directory mod1-1
${PROG} update: Updating mod1-2
${PROG} update: cannot open directory ${CVSROOT2_DIRNAME}/mod1-2: No such file or directory
${PROG} update: skipping directory mod1-2
${PROG} update: Updating mod2-1
${PROG} update: Updating mod2-2
${PROG} update: Updating mod2-2/mod1-2
${PROG} update: cannot open directory ${CVSROOT2_DIRNAME}/mod1-2: No such file or directory
${PROG} update: skipping directory mod2-2/mod1-2"
echo bobby >> mod1-1/file1-1
echo brown >> mod1-2/file1-2
echo goes >> mod2-1/file2-1
echo down >> mod2-2/file2-2
dotest_fail multiroot-diff-1 "${testcvs} diff" \
"${PROG} diff: Diffing \.
${PROG} diff: Diffing mod1-1
Index: mod1-1/file1-1
===================================================================
RCS file: ${TESTDIR}/root1/mod1-1/file1-1,v
retrieving revision 1\.1
diff -r1\.1 file1-1
1a2
> bobby
${PROG} diff: Diffing mod1-2
Index: mod1-2/file1-2
===================================================================
RCS file: ${TESTDIR}/root1/mod1-2/file1-2,v
retrieving revision 1\.1
diff -r1\.1 file1-2
1a2
> brown
${PROG} diff: Diffing mod2-2/mod1-2
${PROG} diff: Diffing mod1-2/mod2-2
${PROG} diff: Diffing mod2-1
Index: mod2-1/file2-1
===================================================================
RCS file: ${TESTDIR}/root2/mod2-1/file2-1,v
retrieving revision 1\.1
diff -r1\.1 file2-1
1a2
> goes
${PROG} diff: Diffing mod2-2
Index: mod2-2/file2-2
===================================================================
RCS file: ${TESTDIR}/root2/mod2-2/file2-2,v
retrieving revision 1\.1
diff -r1\.1 file2-2
1a2
> down" \
"${PROG} diff: Diffing \.
${PROG} diff: Diffing mod1-1
Index: mod1-1/file1-1
===================================================================
RCS file: ${TESTDIR}/root1/mod1-1/file1-1,v
retrieving revision 1\.1
diff -r1\.1 file1-1
1a2
> bobby
${PROG} diff: Diffing mod1-2
Index: mod1-2/file1-2
===================================================================
RCS file: ${TESTDIR}/root1/mod1-2/file1-2,v
retrieving revision 1\.1
diff -r1\.1 file1-2
1a2
> brown
${PROG} diff: Diffing mod2-2
${PROG} diff: Diffing mod2-2/mod1-2
${PROG} diff: Diffing mod1-2
${PROG} diff: Diffing mod1-2/mod2-2
${PROG} diff: Diffing mod2-1
Index: mod2-1/file2-1
===================================================================
RCS file: ${TESTDIR}/root2/mod2-1/file2-1,v
retrieving revision 1\.1
diff -r1\.1 file2-1
1a2
> goes
${PROG} diff: Diffing mod2-2
Index: mod2-2/file2-2
===================================================================
RCS file: ${TESTDIR}/root2/mod2-2/file2-2,v
retrieving revision 1\.1
diff -r1\.1 file2-2
1a2
> down"
dotest multiroot-commit-1 "${testcvs} commit -m actually" \
"${PROG} [a-z]*: Examining \.
${PROG} [a-z]*: Examining mod1-1
${PROG} [a-z]*: Examining mod1-2
${PROG} [a-z]*: Examining mod2-2/mod1-2
Checking in mod1-1/file1-1;
${TESTDIR}/root1/mod1-1/file1-1,v <-- file1-1
new revision: 1.2; previous revision: 1.1
done
Checking in mod1-2/file1-2;
${TESTDIR}/root1/mod1-2/file1-2,v <-- file1-2
new revision: 1.2; previous revision: 1.1
done
${PROG} [a-z]*: Examining mod1-2/mod2-2
${PROG} [a-z]*: Examining mod2-1
${PROG} [a-z]*: Examining mod2-2
Checking in mod2-1/file2-1;
${TESTDIR}/root2/mod2-1/file2-1,v <-- file2-1
new revision: 1.2; previous revision: 1.1
done
Checking in mod2-2/file2-2;
${TESTDIR}/root2/mod2-2/file2-2,v <-- file2-2
new revision: 1.2; previous revision: 1.1
done"
dotest multiroot-update-2 "${testcvs} update" \
"${PROG} update: Updating \.
${PROG} [a-z]*: Updating mod1-1
${PROG} [a-z]*: Updating mod1-2
${PROG} [a-z]*: Updating mod2-2/mod1-2
U mod2-2/mod1-2/file1-2
${PROG} [a-z]*: Updating mod1-2/mod2-2
U mod1-2/mod2-2/file2-2
${PROG} update: Updating mod2-1
${PROG} update: Updating mod2-2" \
"${PROG} update: Updating \.
${PROG} update: Updating mod1-1
${PROG} update: Updating mod1-2
${PROG} update: Updating mod2-2
${PROG} update: Updating mod2-2/mod1-2
P mod2-2/mod1-2/file1-2
${PROG} update: Updating mod1-2
${PROG} update: Updating mod1-2/mod2-2
P mod1-2/mod2-2/file2-2
${PROG} update: Updating mod2-1
${PROG} update: Updating mod2-2"
dotest multiroot-tag-1 "${testcvs} tag cattle" \
"${PROG} tag: Tagging \.
${PROG} tag: Tagging mod1-1
T mod1-1/file1-1
${PROG} tag: Tagging mod1-2
T mod1-2/file1-2
${PROG} tag: Tagging mod2-2/mod1-2
${PROG} tag: Tagging mod1-2/mod2-2
T mod1-2/mod2-2/file2-2
${PROG} tag: Tagging mod2-1
T mod2-1/file2-1
${PROG} tag: Tagging mod2-2" \
"${PROG} tag: Tagging \.
${PROG} tag: Tagging mod1-1
T mod1-1/file1-1
${PROG} tag: Tagging mod1-2
T mod1-2/file1-2
${PROG} tag: Tagging mod2-2
${PROG} tag: Tagging mod2-2/mod1-2
${PROG} tag: Tagging mod1-2
${PROG} tag: Tagging mod1-2/mod2-2
T mod1-2/mod2-2/file2-2
${PROG} tag: Tagging mod2-1
T mod2-1/file2-1
${PROG} tag: Tagging mod2-2"
echo anotherfile1-1 > mod1-1/anotherfile1-1
echo anotherfile2-1 > mod2-1/anotherfile2-1
echo anotherfile1-2 > mod2-2/mod1-2/anotherfile1-2
echo anotherfile2-2 > mod1-2/mod2-2/anotherfile2-2
if $remote; then
cd mod1-1
dotest multiroot-add-1ar "${testcvs} add anotherfile1-1" \
"${PROG} add: scheduling file .anotherfile1-1. for addition
${PROG} add: use .${PROG} commit. to add this file permanently"
cd ../mod2-1
dotest multiroot-add-1br "${testcvs} add anotherfile2-1" \
"${PROG} add: scheduling file .anotherfile2-1. for addition
${PROG} add: use .${PROG} commit. to add this file permanently"
cd ../mod2-2/mod1-2
dotest multiroot-add-1cr "${testcvs} add anotherfile1-2" \
"${PROG} add: scheduling file .anotherfile1-2. for addition
${PROG} add: use .${PROG} commit. to add this file permanently"
cd ../../mod1-2/mod2-2
dotest multiroot-add-1dr "${testcvs} add anotherfile2-2" \
"${PROG} add: scheduling file .anotherfile2-2. for addition
${PROG} add: use .${PROG} commit. to add this file permanently"
cd ../..
else
dotest multiroot-add-1 "${testcvs} add mod1-1/anotherfile1-1 mod2-1/anotherfile2-1 mod2-2/mod1-2/anotherfile1-2 mod1-2/mod2-2/anotherfile2-2" \
"${PROG} add: scheduling file .mod1-1/anotherfile1-1. for addition
${PROG} add: scheduling file .mod2-1/anotherfile2-1. for addition
${PROG} add: scheduling file .mod2-2/mod1-2/anotherfile1-2. for addition
${PROG} add: scheduling file .mod1-2/mod2-2/anotherfile2-2. for addition
${PROG} add: use .${PROG} commit. to add these files permanently"
fi
dotest multiroot-status-1 "${testcvs} status -v" \
"${PROG} status: Examining \.
${PROG} status: Examining mod1-1
===================================================================
File: anotherfile1-1 Status: Locally Added
Working revision: New file!
Repository revision: No revision control file
Sticky Tag: (none)
Sticky Date: (none)
Sticky Options: (none)
===================================================================
File: file1-1 Status: Up-to-date
Working revision: 1\.2.*
Repository revision: 1\.2 ${CVSROOT1_DIRNAME}/mod1-1/file1-1,v
Sticky Tag: (none)
Sticky Date: (none)
Sticky Options: (none)
Existing Tags:
cattle (revision: 1\.2)
${PROG} status: Examining mod1-2
===================================================================
File: file1-2 Status: Up-to-date
Working revision: 1\.2.*
Repository revision: 1\.2 ${CVSROOT1_DIRNAME}/mod1-2/file1-2,v
Sticky Tag: (none)
Sticky Date: (none)
Sticky Options: (none)
Existing Tags:
cattle (revision: 1\.2)
${PROG} status: Examining mod2-2/mod1-2
===================================================================
File: anotherfile1-2 Status: Locally Added
Working revision: New file!
Repository revision: No revision control file
Sticky Tag: (none)
Sticky Date: (none)
Sticky Options: (none)
===================================================================
File: file1-2 Status: Up-to-date
Working revision: 1\.2.*
Repository revision: 1\.2 ${CVSROOT1_DIRNAME}/mod1-2/file1-2,v
Sticky Tag: (none)
Sticky Date: (none)
Sticky Options: (none)
Existing Tags:
cattle (revision: 1\.2)
${PROG} status: Examining mod1-2/mod2-2
===================================================================
File: anotherfile2-2 Status: Locally Added
Working revision: New file!
Repository revision: No revision control file
Sticky Tag: (none)
Sticky Date: (none)
Sticky Options: (none)
===================================================================
File: file2-2 Status: Up-to-date
Working revision: 1\.2.*
Repository revision: 1\.2 ${CVSROOT2_DIRNAME}/mod2-2/file2-2,v
Sticky Tag: (none)
Sticky Date: (none)
Sticky Options: (none)
Existing Tags:
cattle (revision: 1\.2)
${PROG} status: Examining mod2-1
===================================================================
File: anotherfile2-1 Status: Locally Added
Working revision: New file!
Repository revision: No revision control file
Sticky Tag: (none)
Sticky Date: (none)
Sticky Options: (none)
===================================================================
File: file2-1 Status: Up-to-date
Working revision: 1\.2.*
Repository revision: 1\.2 ${CVSROOT2_DIRNAME}/mod2-1/file2-1,v
Sticky Tag: (none)
Sticky Date: (none)
Sticky Options: (none)
Existing Tags:
cattle (revision: 1\.2)
${PROG} status: Examining mod2-2
===================================================================
File: file2-2 Status: Up-to-date
Working revision: 1\.2.*
Repository revision: 1\.2 ${CVSROOT2_DIRNAME}/mod2-2/file2-2,v
Sticky Tag: (none)
Sticky Date: (none)
Sticky Options: (none)
Existing Tags:
cattle (revision: 1\.2)" \
"${PROG} status: Examining \.
${PROG} status: Examining mod1-1
===================================================================
File: anotherfile1-1 Status: Locally Added
Working revision: New file!
Repository revision: No revision control file
Sticky Tag: (none)
Sticky Date: (none)
Sticky Options: (none)
===================================================================
File: file1-1 Status: Up-to-date
Working revision: 1\.2.*
Repository revision: 1\.2 ${CVSROOT1_DIRNAME}/mod1-1/file1-1,v
Sticky Tag: (none)
Sticky Date: (none)
Sticky Options: (none)
Existing Tags:
cattle (revision: 1\.2)
${PROG} status: Examining mod1-2
===================================================================
File: file1-2 Status: Up-to-date
Working revision: 1\.2.*
Repository revision: 1\.2 ${CVSROOT1_DIRNAME}/mod1-2/file1-2,v
Sticky Tag: (none)
Sticky Date: (none)
Sticky Options: (none)
Existing Tags:
cattle (revision: 1\.2)
${PROG} status: Examining mod2-2
${PROG} status: Examining mod2-2/mod1-2
===================================================================
File: anotherfile1-2 Status: Locally Added
Working revision: New file!
Repository revision: No revision control file
Sticky Tag: (none)
Sticky Date: (none)
Sticky Options: (none)
===================================================================
File: file1-2 Status: Up-to-date
Working revision: 1\.2.*
Repository revision: 1\.2 ${CVSROOT1_DIRNAME}/mod1-2/file1-2,v
Sticky Tag: (none)
Sticky Date: (none)
Sticky Options: (none)
Existing Tags:
cattle (revision: 1\.2)
${PROG} status: Examining mod1-2
${PROG} status: Examining mod1-2/mod2-2
===================================================================
File: anotherfile2-2 Status: Locally Added
Working revision: New file!
Repository revision: No revision control file
Sticky Tag: (none)
Sticky Date: (none)
Sticky Options: (none)
===================================================================
File: file2-2 Status: Up-to-date
Working revision: 1\.2.*
Repository revision: 1\.2 ${CVSROOT2_DIRNAME}/mod2-2/file2-2,v
Sticky Tag: (none)
Sticky Date: (none)
Sticky Options: (none)
Existing Tags:
cattle (revision: 1\.2)
${PROG} status: Examining mod2-1
===================================================================
File: anotherfile2-1 Status: Locally Added
Working revision: New file!
Repository revision: No revision control file
Sticky Tag: (none)
Sticky Date: (none)
Sticky Options: (none)
===================================================================
File: file2-1 Status: Up-to-date
Working revision: 1\.2.*
Repository revision: 1\.2 ${CVSROOT2_DIRNAME}/mod2-1/file2-1,v
Sticky Tag: (none)
Sticky Date: (none)
Sticky Options: (none)
Existing Tags:
cattle (revision: 1\.2)
${PROG} status: Examining mod2-2
===================================================================
File: file2-2 Status: Up-to-date
Working revision: 1\.2.*
Repository revision: 1\.2 ${CVSROOT2_DIRNAME}/mod2-2/file2-2,v
Sticky Tag: (none)
Sticky Date: (none)
Sticky Options: (none)
Existing Tags:
cattle (revision: 1\.2)"
dotest multiroot-commit-2 "${testcvs} commit -m reading" \
"${PROG} [a-z]*: Examining \.
${PROG} [a-z]*: Examining mod1-1
${PROG} [a-z]*: Examining mod1-2
${PROG} [a-z]*: Examining mod2-2/mod1-2
RCS file: ${CVSROOT1_DIRNAME}/mod1-1/anotherfile1-1,v
done
Checking in mod1-1/anotherfile1-1;
${CVSROOT1_DIRNAME}/mod1-1/anotherfile1-1,v <-- anotherfile1-1
initial revision: 1\.1
done
RCS file: ${CVSROOT1_DIRNAME}/mod1-2/anotherfile1-2,v
done
Checking in mod2-2/mod1-2/anotherfile1-2;
${CVSROOT1_DIRNAME}/mod1-2/anotherfile1-2,v <-- anotherfile1-2
initial revision: 1\.1
done
${PROG} [a-z]*: Examining mod1-2/mod2-2
${PROG} [a-z]*: Examining mod2-1
${PROG} [a-z]*: Examining mod2-2
RCS file: ${CVSROOT2_DIRNAME}/mod2-2/anotherfile2-2,v
done
Checking in mod1-2/mod2-2/anotherfile2-2;
${CVSROOT2_DIRNAME}/mod2-2/anotherfile2-2,v <-- anotherfile2-2
initial revision: 1\.1
done
RCS file: ${CVSROOT2_DIRNAME}/mod2-1/anotherfile2-1,v
done
Checking in mod2-1/anotherfile2-1;
${CVSROOT2_DIRNAME}/mod2-1/anotherfile2-1,v <-- anotherfile2-1
initial revision: 1\.1
done"
dotest multiroot-update-3 "${testcvs} update" \
"${PROG} update: Updating \.
${PROG} [a-z]*: Updating mod1-1
${PROG} [a-z]*: Updating mod1-2
U mod1-2/anotherfile1-2
${PROG} [a-z]*: Updating mod2-2/mod1-2
${PROG} [a-z]*: Updating mod1-2/mod2-2
${PROG} [a-z]*: Updating mod2-1
${PROG} [a-z]*: Updating mod2-2
U mod2-2/anotherfile2-2" \
"${PROG} update: Updating \.
${PROG} update: Updating mod1-1
${PROG} update: Updating mod1-2
U mod1-2/anotherfile1-2
${PROG} update: Updating mod2-2
${PROG} update: Updating mod2-2/mod1-2
${PROG} update: Updating mod1-2
${PROG} update: Updating mod1-2/mod2-2
${PROG} update: Updating mod2-1
${PROG} update: Updating mod2-2
U mod2-2/anotherfile2-2"
dotest multiroot-log-1 "${testcvs} log" \
"${PROG} log: Logging \.
${PROG} log: Logging mod1-1
RCS file: ${CVSROOT1_DIRNAME}/mod1-1/anotherfile1-1,v
Working file: mod1-1/anotherfile1-1
head: 1\.1
branch:
locks: strict
access list:
symbolic names:
keyword substitution: kv
total revisions: 1; selected revisions: 1
description:
----------------------------
revision 1\.1
date: [0-9/]* [0-9:]*; author: ${username}; state: Exp;
reading
=============================================================================
RCS file: ${CVSROOT1_DIRNAME}/mod1-1/file1-1,v
Working file: mod1-1/file1-1
head: 1\.2
branch:
locks: strict
access list:
symbolic names:
cattle: 1\.2
keyword substitution: kv
total revisions: 2; selected revisions: 2
description:
----------------------------
revision 1\.2
date: [0-9/]* [0-9:]*; author: ${username}; state: Exp; lines: ${PLUS}1 -0
actually
----------------------------
revision 1\.1
date: [0-9/]* [0-9:]*; author: ${username}; state: Exp;
is
=============================================================================
${PROG} log: Logging mod1-2
RCS file: ${CVSROOT1_DIRNAME}/mod1-2/anotherfile1-2,v
Working file: mod1-2/anotherfile1-2
head: 1\.1
branch:
locks: strict
access list:
symbolic names:
keyword substitution: kv
total revisions: 1; selected revisions: 1
description:
----------------------------
revision 1\.1
date: [0-9/]* [0-9:]*; author: ${username}; state: Exp;
reading
=============================================================================
RCS file: ${CVSROOT1_DIRNAME}/mod1-2/file1-2,v
Working file: mod1-2/file1-2
head: 1\.2
branch:
locks: strict
access list:
symbolic names:
cattle: 1\.2
keyword substitution: kv
total revisions: 2; selected revisions: 2
description:
----------------------------
revision 1\.2
date: [0-9/]* [0-9:]*; author: ${username}; state: Exp; lines: ${PLUS}1 -0
actually
----------------------------
revision 1\.1
date: [0-9/]* [0-9:]*; author: ${username}; state: Exp;
is
=============================================================================
${PROG} log: Logging mod2-2/mod1-2
RCS file: ${CVSROOT1_DIRNAME}/mod1-2/anotherfile1-2,v
Working file: mod2-2/mod1-2/anotherfile1-2
head: 1\.1
branch:
locks: strict
access list:
symbolic names:
keyword substitution: kv
total revisions: 1; selected revisions: 1
description:
----------------------------
revision 1\.1
date: [0-9/]* [0-9:]*; author: ${username}; state: Exp;
reading
=============================================================================
RCS file: ${CVSROOT1_DIRNAME}/mod1-2/file1-2,v
Working file: mod2-2/mod1-2/file1-2
head: 1\.2
branch:
locks: strict
access list:
symbolic names:
cattle: 1\.2
keyword substitution: kv
total revisions: 2; selected revisions: 2
description:
----------------------------
revision 1\.2
date: [0-9/]* [0-9:]*; author: ${username}; state: Exp; lines: ${PLUS}1 -0
actually
----------------------------
revision 1\.1
date: [0-9/]* [0-9:]*; author: ${username}; state: Exp;
is
=============================================================================
${PROG} log: Logging mod1-2/mod2-2
RCS file: ${CVSROOT2_DIRNAME}/mod2-2/anotherfile2-2,v
Working file: mod1-2/mod2-2/anotherfile2-2
head: 1\.1
branch:
locks: strict
access list:
symbolic names:
keyword substitution: kv
total revisions: 1; selected revisions: 1
description:
----------------------------
revision 1\.1
date: [0-9/]* [0-9:]*; author: ${username}; state: Exp;
reading
=============================================================================
RCS file: ${CVSROOT2_DIRNAME}/mod2-2/file2-2,v
Working file: mod1-2/mod2-2/file2-2
head: 1\.2
branch:
locks: strict
access list:
symbolic names:
cattle: 1\.2
keyword substitution: kv
total revisions: 2; selected revisions: 2
description:
----------------------------
revision 1\.2
date: [0-9/]* [0-9:]*; author: ${username}; state: Exp; lines: ${PLUS}1 -0
actually
----------------------------
revision 1\.1
date: [0-9/]* [0-9:]*; author: ${username}; state: Exp;
anyone
=============================================================================
${PROG} log: Logging mod2-1
RCS file: ${CVSROOT2_DIRNAME}/mod2-1/anotherfile2-1,v
Working file: mod2-1/anotherfile2-1
head: 1\.1
branch:
locks: strict
access list:
symbolic names:
keyword substitution: kv
total revisions: 1; selected revisions: 1
description:
----------------------------
revision 1\.1
date: [0-9/]* [0-9:]*; author: ${username}; state: Exp;
reading
=============================================================================
RCS file: ${CVSROOT2_DIRNAME}/mod2-1/file2-1,v
Working file: mod2-1/file2-1
head: 1\.2
branch:
locks: strict
access list:
symbolic names:
cattle: 1\.2
keyword substitution: kv
total revisions: 2; selected revisions: 2
description:
----------------------------
revision 1\.2
date: [0-9/]* [0-9:]*; author: ${username}; state: Exp; lines: ${PLUS}1 -0
actually
----------------------------
revision 1\.1
date: [0-9/]* [0-9:]*; author: ${username}; state: Exp;
anyone
=============================================================================
${PROG} log: Logging mod2-2
RCS file: ${CVSROOT2_DIRNAME}/mod2-2/anotherfile2-2,v
Working file: mod2-2/anotherfile2-2
head: 1\.1
branch:
locks: strict
access list:
symbolic names:
keyword substitution: kv
total revisions: 1; selected revisions: 1
description:
----------------------------
revision 1\.1
date: [0-9/]* [0-9:]*; author: ${username}; state: Exp;
reading
=============================================================================
RCS file: ${CVSROOT2_DIRNAME}/mod2-2/file2-2,v
Working file: mod2-2/file2-2
head: 1\.2
branch:
locks: strict
access list:
symbolic names:
cattle: 1\.2
keyword substitution: kv
total revisions: 2; selected revisions: 2
description:
----------------------------
revision 1\.2
date: [0-9/]* [0-9:]*; author: ${username}; state: Exp; lines: ${PLUS}1 -0
actually
----------------------------
revision 1\.1
date: [0-9/]* [0-9:]*; author: ${username}; state: Exp;
anyone
=============================================================================" \
"${PROG} log: Logging \.
${PROG} log: Logging mod1-1
RCS file: ${CVSROOT1_DIRNAME}/mod1-1/anotherfile1-1,v
Working file: mod1-1/anotherfile1-1
head: 1\.1
branch:
locks: strict
access list:
symbolic names:
keyword substitution: kv
total revisions: 1; selected revisions: 1
description:
----------------------------
revision 1\.1
date: [0-9/]* [0-9:]*; author: ${username}; state: Exp;
reading
=============================================================================
RCS file: ${CVSROOT1_DIRNAME}/mod1-1/file1-1,v
Working file: mod1-1/file1-1
head: 1\.2
branch:
locks: strict
access list:
symbolic names:
cattle: 1\.2
keyword substitution: kv
total revisions: 2; selected revisions: 2
description:
----------------------------
revision 1\.2
date: [0-9/]* [0-9:]*; author: ${username}; state: Exp; lines: ${PLUS}1 -0
actually
----------------------------
revision 1\.1
date: [0-9/]* [0-9:]*; author: ${username}; state: Exp;
is
=============================================================================
${PROG} log: Logging mod1-2
RCS file: ${CVSROOT1_DIRNAME}/mod1-2/anotherfile1-2,v
Working file: mod1-2/anotherfile1-2
head: 1\.1
branch:
locks: strict
access list:
symbolic names:
keyword substitution: kv
total revisions: 1; selected revisions: 1
description:
----------------------------
revision 1\.1
date: [0-9/]* [0-9:]*; author: ${username}; state: Exp;
reading
=============================================================================
RCS file: ${CVSROOT1_DIRNAME}/mod1-2/file1-2,v
Working file: mod1-2/file1-2
head: 1\.2
branch:
locks: strict
access list:
symbolic names:
cattle: 1\.2
keyword substitution: kv
total revisions: 2; selected revisions: 2
description:
----------------------------
revision 1\.2
date: [0-9/]* [0-9:]*; author: ${username}; state: Exp; lines: ${PLUS}1 -0
actually
----------------------------
revision 1\.1
date: [0-9/]* [0-9:]*; author: ${username}; state: Exp;
is
=============================================================================
${PROG} log: Logging mod2-2
${PROG} log: Logging mod2-2/mod1-2
RCS file: ${CVSROOT1_DIRNAME}/mod1-2/anotherfile1-2,v
Working file: mod2-2/mod1-2/anotherfile1-2
head: 1\.1
branch:
locks: strict
access list:
symbolic names:
keyword substitution: kv
total revisions: 1; selected revisions: 1
description:
----------------------------
revision 1\.1
date: [0-9/]* [0-9:]*; author: ${username}; state: Exp;
reading
=============================================================================
RCS file: ${CVSROOT1_DIRNAME}/mod1-2/file1-2,v
Working file: mod2-2/mod1-2/file1-2
head: 1\.2
branch:
locks: strict
access list:
symbolic names:
cattle: 1\.2
keyword substitution: kv
total revisions: 2; selected revisions: 2
description:
----------------------------
revision 1\.2
date: [0-9/]* [0-9:]*; author: ${username}; state: Exp; lines: ${PLUS}1 -0
actually
----------------------------
revision 1\.1
date: [0-9/]* [0-9:]*; author: ${username}; state: Exp;
is
=============================================================================
${PROG} log: Logging mod1-2
${PROG} log: Logging mod1-2/mod2-2
RCS file: ${CVSROOT2_DIRNAME}/mod2-2/anotherfile2-2,v
Working file: mod1-2/mod2-2/anotherfile2-2
head: 1\.1
branch:
locks: strict
access list:
symbolic names:
keyword substitution: kv
total revisions: 1; selected revisions: 1
description:
----------------------------
revision 1\.1
date: [0-9/]* [0-9:]*; author: ${username}; state: Exp;
reading
=============================================================================
RCS file: ${CVSROOT2_DIRNAME}/mod2-2/file2-2,v
Working file: mod1-2/mod2-2/file2-2
head: 1\.2
branch:
locks: strict
access list:
symbolic names:
cattle: 1\.2
keyword substitution: kv
total revisions: 2; selected revisions: 2
description:
----------------------------
revision 1\.2
date: [0-9/]* [0-9:]*; author: ${username}; state: Exp; lines: ${PLUS}1 -0
actually
----------------------------
revision 1\.1
date: [0-9/]* [0-9:]*; author: ${username}; state: Exp;
anyone
=============================================================================
${PROG} log: Logging mod2-1
RCS file: ${CVSROOT2_DIRNAME}/mod2-1/anotherfile2-1,v
Working file: mod2-1/anotherfile2-1
head: 1\.1
branch:
locks: strict
access list:
symbolic names:
keyword substitution: kv
total revisions: 1; selected revisions: 1
description:
----------------------------
revision 1\.1
date: [0-9/]* [0-9:]*; author: ${username}; state: Exp;
reading
=============================================================================
RCS file: ${CVSROOT2_DIRNAME}/mod2-1/file2-1,v
Working file: mod2-1/file2-1
head: 1\.2
branch:
locks: strict
access list:
symbolic names:
cattle: 1\.2
keyword substitution: kv
total revisions: 2; selected revisions: 2
description:
----------------------------
revision 1\.2
date: [0-9/]* [0-9:]*; author: ${username}; state: Exp; lines: ${PLUS}1 -0
actually
----------------------------
revision 1\.1
date: [0-9/]* [0-9:]*; author: ${username}; state: Exp;
anyone
=============================================================================
${PROG} log: Logging mod2-2
RCS file: ${CVSROOT2_DIRNAME}/mod2-2/anotherfile2-2,v
Working file: mod2-2/anotherfile2-2
head: 1\.1
branch:
locks: strict
access list:
symbolic names:
keyword substitution: kv
total revisions: 1; selected revisions: 1
description:
----------------------------
revision 1\.1
date: [0-9/]* [0-9:]*; author: ${username}; state: Exp;
reading
=============================================================================
RCS file: ${CVSROOT2_DIRNAME}/mod2-2/file2-2,v
Working file: mod2-2/file2-2
head: 1\.2
branch:
locks: strict
access list:
symbolic names:
cattle: 1\.2
keyword substitution: kv
total revisions: 2; selected revisions: 2
description:
----------------------------
revision 1\.2
date: [0-9/]* [0-9:]*; author: ${username}; state: Exp; lines: ${PLUS}1 -0
actually
----------------------------
revision 1\.1
date: [0-9/]* [0-9:]*; author: ${username}; state: Exp;
anyone
============================================================================="
if $keep; then
echo Keeping ${TESTDIR} and exiting due to --keep
exit 0
fi
cd ..
rm -r 1
rm -rf root1 root2
;;
multiroot2)
CVSROOT1_DIRNAME=${TESTDIR}/root1
CVSROOT2_DIRNAME=${TESTDIR}/root2
CVSROOT1=`newroot $CVSROOT1_DIRNAME`
CVSROOT2=`newroot $CVSROOT2_DIRNAME`
dotest multiroot2-1 "${testcvs} -d ${CVSROOT1} init" ""
dotest multiroot2-2 "${testcvs} -d ${CVSROOT2} init" ""
mkdir imp-dir; cd imp-dir
echo file1 >file1
mkdir sdir
echo sfile >sdir/sfile
mkdir sdir/ssdir
echo ssfile >sdir/ssdir/ssfile
dotest_sort multiroot2-3 \
"${testcvs} -d ${CVSROOT1} import -m import-to-root1 dir1 vend rel" "
N dir1/file1
N dir1/sdir/sfile
N dir1/sdir/ssdir/ssfile
No conflicts created by this import
${PROG} import: Importing ${TESTDIR}/root1/dir1/sdir
${PROG} import: Importing ${TESTDIR}/root1/dir1/sdir/ssdir"
cd sdir
dotest_sort multiroot2-4 \
"${testcvs} -d ${CVSROOT2} import -m import-to-root2 sdir vend2 rel2" "
N sdir/sfile
N sdir/ssdir/ssfile
No conflicts created by this import
${PROG} import: Importing ${TESTDIR}/root2/sdir/ssdir"
cd ../..
mkdir 1; cd 1
dotest multiroot2-5 "${testcvs} -d ${CVSROOT1} -q co -l ."
dotest multiroot2-5 "${testcvs} -d ${CVSROOT1} -q co dir1" \
"U dir1/file1
U dir1/sdir/sfile
U dir1/sdir/ssdir/ssfile"
cd dir1
dotest multiroot2-6 "${testcvs} -Q release -d sdir" ""
dotest multiroot2-7 "${testcvs} -d ${CVSROOT2} -q co sdir" \
"U sdir/sfile
U sdir/ssdir/ssfile"
cd ..
dotest multiroot2-8 "${testcvs} update" \
"${PROG} update: Updating \.
${PROG} update: Updating dir1
${PROG} update: Updating dir1/sdir
${PROG} update: Updating dir1/sdir/ssdir" \
"${PROG} update: Updating \.
${PROG} update: Updating dir1
${PROG} update: Updating dir1
${PROG} update: Updating dir1/sdir
${PROG} update: Updating dir1/sdir/ssdir"
if $remote; then :; else
dotest multiroot2-9a "${testcvs} -t update" \
" *-> main loop with CVSROOT=${TESTDIR}/root1
${PROG} update: Updating \.
*-> Reader_Lock(${TESTDIR}/root1)
*-> Lock_Cleanup()
${PROG} update: Updating dir1
*-> Reader_Lock(${TESTDIR}/root1/dir1)
*-> Lock_Cleanup()
*-> main loop with CVSROOT=${TESTDIR}/root2
${PROG} update: Updating dir1/sdir
*-> Reader_Lock(${TESTDIR}/root2/sdir)
*-> Lock_Cleanup()
${PROG} update: Updating dir1/sdir/ssdir
*-> Reader_Lock(${TESTDIR}/root2/sdir/ssdir)
*-> Lock_Cleanup()
*-> Lock_Cleanup()"
fi
dotest multiroot2-9 "${testcvs} -q tag tag1" \
"T dir1/file1
T dir1/sdir/sfile
T dir1/sdir/ssdir/ssfile"
echo "change it" >>dir1/file1
echo "change him too" >>dir1/sdir/sfile
dotest multiroot2-10 "${testcvs} -q ci -m modify" \
"Checking in dir1/file1;
${TESTDIR}/root1/dir1/file1,v <-- file1
new revision: 1\.2; previous revision: 1\.1
done
Checking in dir1/sdir/sfile;
${TESTDIR}/root2/sdir/sfile,v <-- sfile
new revision: 1\.2; previous revision: 1\.1
done"
dotest multiroot2-11 "${testcvs} -q tag tag2" \
"T dir1/file1
T dir1/sdir/sfile
T dir1/sdir/ssdir/ssfile"
dotest_fail multiroot2-12 \
"${testcvs} -q diff -u -r tag1 -r tag2" \
"Index: dir1/file1
===================================================================
RCS file: ${TESTDIR}/root1/dir1/file1,v
retrieving revision 1\.1\.1\.1
retrieving revision 1\.2
diff -u -r1\.1\.1\.1 -r1\.2
--- dir1/file1 ${RFCDATE} 1\.1\.1\.1
${PLUS}${PLUS}${PLUS} dir1/file1 ${RFCDATE} 1\.2
@@ -1 ${PLUS}1,2 @@
file1
${PLUS}change it
Index: dir1/sdir/sfile
===================================================================
RCS file: ${TESTDIR}/root2/sdir/sfile,v
retrieving revision 1\.1\.1\.1
retrieving revision 1\.2
diff -u -r1\.1\.1\.1 -r1\.2
--- dir1/sdir/sfile ${RFCDATE} 1\.1\.1\.1
${PLUS}${PLUS}${PLUS} dir1/sdir/sfile ${RFCDATE} 1\.2
@@ -1 ${PLUS}1,2 @@
sfile
${PLUS}change him too"
if $keep; then
echo Keeping ${TESTDIR} and exiting due to --keep
exit 0
fi
cd ..
rm -r imp-dir 1
rm -rf root1 root2
;;
multiroot3)
CVSROOT1=`newroot ${TESTDIR}/root1`
CVSROOT2=`newroot ${TESTDIR}/root2`
mkdir 1; cd 1
dotest multiroot3-1 "${testcvs} -d ${CVSROOT1} init" ""
dotest multiroot3-2 "${testcvs} -d ${CVSROOT1} -q co -l ." ""
mkdir dir1
dotest multiroot3-3 "${testcvs} add dir1" \
"Directory ${TESTDIR}/root1/dir1 added to the repository"
dotest multiroot3-4 "${testcvs} -d ${CVSROOT2} init" ""
rm -r CVS
dotest multiroot3-5 "${testcvs} -d ${CVSROOT2} -q co -l ." ""
mkdir dir2
dotest multiroot3-6 "${testcvs} -d ${CVSROOT1} -q co dir1" ""
if $remote; then
echo "D/dir1////" >CVS/Entries
echo "D/dir2////" >>CVS/Entries
fi
dotest multiroot3-7 "${testcvs} add dir2" \
"Directory ${TESTDIR}/root2/dir2 added to the repository"
touch dir1/file1 dir2/file2
if $remote; then
cd dir1
dotest multiroot3-8 "${testcvs} add file1" \
"${PROG} add: scheduling file .file1. for addition
${PROG} add: use .${PROG} commit. to add this file permanently"
cd ..
dotest multiroot3-8a "${testcvs} add dir2/file2" \
"${PROG} add: scheduling file .dir2/file2. for addition
${PROG} add: use .${PROG} commit. to add this file permanently"
else
dotest multiroot3-8 "${testcvs} add dir1/file1 dir2/file2" \
"${PROG} add: scheduling file .dir1/file1. for addition
${PROG} add: scheduling file .dir2/file2. for addition
${PROG} add: use .${PROG} commit. to add these files permanently"
fi
dotest multiroot3-9 "${testcvs} -q ci -m add-them" \
"RCS file: ${TESTDIR}/root2/dir2/file2,v
done
Checking in dir2/file2;
${TESTDIR}/root2/dir2/file2,v <-- file2
initial revision: 1\.1
done
RCS file: ${TESTDIR}/root1/dir1/file1,v
done
Checking in dir1/file1;
${TESTDIR}/root1/dir1/file1,v <-- file1
initial revision: 1\.1
done"
dotest_fail multiroot3-10 \
"${testcvs} -q -d ${CVSROOT1} diff dir1/file1 dir2/file2" \
"${PROG} diff: failed to create lock directory for .${TESTDIR}/root1/dir2' (${TESTDIR}/root1/dir2/#cvs.lock): No such file or directory
${PROG} diff: failed to obtain dir lock in repository .${TESTDIR}/root1/dir2'
${PROG} \[diff aborted\]: read lock failed - giving up"
dotest multiroot3-11 "${testcvs} -q diff dir1/file1 dir2/file2" ""
mkdir 1a
cd 1a
dotest_fail multiroot3-12 \
"$testcvs -d $CVSROOT1 -q co ../root2/dir2" \
"$PROG \[checkout aborted\]: up-level in module reference (\`..') invalid: \`\.\./root2/dir2'\." \
"$PROG \[server aborted\]: up-level in module reference (\`..') invalid: \`\.\./root2/dir2'\.
$PROG \[checkout aborted\]: end of file from server (consult above messages if any)"
dotest_fail multiroot3-13 \
"$testcvs -d $CVSROOT2 -q co ../root1/dir1" \
"$PROG \[checkout aborted\]: up-level in module reference (\`..') invalid: \`\.\./root1/dir1'\." \
"$PROG \[server aborted\]: up-level in module reference (\`..') invalid: \`\.\./root1/dir1'\.
$PROG \[checkout aborted\]: end of file from server (consult above messages if any)"
dotest_fail multiroot3-14 \
"$testcvs -d $CVSROOT1 -q co ./../root2/dir2" \
"$PROG \[checkout aborted\]: up-level in module reference (\`..') invalid: \`\./\.\./root2/dir2'\." \
"$PROG \[server aborted\]: up-level in module reference (\`..') invalid: \`\./\.\./root2/dir2'\.
$PROG \[checkout aborted\]: end of file from server (consult above messages if any)"
dotest_fail multiroot3-15 \
"$testcvs -d $CVSROOT2 -q co ./../root1/dir1" \
"$PROG \[checkout aborted\]: up-level in module reference (\`..') invalid: \`\./\.\./root1/dir1'\." \
"$PROG \[server aborted\]: up-level in module reference (\`..') invalid: \`\./\.\./root1/dir1'\.
$PROG \[checkout aborted\]: end of file from server (consult above messages if any)"
dotest_fail multiroot3-16 \
"$testcvs -d $CVSROOT1 -q co -p ../root2/dir2" \
"$PROG \[checkout aborted\]: up-level in module reference (\`..') invalid: \`\.\./root2/dir2'\." \
"$PROG \[server aborted\]: up-level in module reference (\`..') invalid: \`\.\./root2/dir2'\.
$PROG \[checkout aborted\]: end of file from server (consult above messages if any)"
dotest_fail multiroot3-17 \
"$testcvs -d $CVSROOT1 -q co -p ./../root1/dir1" \
"$PROG \[checkout aborted\]: up-level in module reference (\`..') invalid: \`\./\.\./root1/dir1'\." \
"$PROG \[server aborted\]: up-level in module reference (\`..') invalid: \`\./\.\./root1/dir1'\.
$PROG \[checkout aborted\]: end of file from server (consult above messages if any)"
if $keep; then
echo Keeping $TESTDIR and exiting due to --keep
exit 0
fi
cd ../..
rm -r 1
rm -rf ${TESTDIR}/root1 ${TESTDIR}/root2
unset CVSROOT1
unset CVSROOT2
;;
multiroot4)
CVSROOT1=`newroot ${TESTDIR}/root1`
CVSROOT2=`newroot ${TESTDIR}/root2`
mkdir 1; cd 1
dotest multiroot4-1 "${testcvs} -d ${CVSROOT1} init" ""
dotest multiroot4-2 "${testcvs} -d ${CVSROOT1} -q co -l ." ""
mkdir dircom
dotest multiroot4-3 "${testcvs} add dircom" \
"Directory ${TESTDIR}/root1/dircom added to the repository"
cd dircom
touch file1
dotest multiroot4-4 "${testcvs} add file1" \
"${PROG} add: scheduling file .file1. for addition
${PROG} add: use .${PROG} commit. to add this file permanently"
dotest multiroot4-5 "${testcvs} -q ci -m add" \
"RCS file: ${TESTDIR}/root1/dircom/file1,v
done
Checking in file1;
${TESTDIR}/root1/dircom/file1,v <-- file1
initial revision: 1\.1
done"
cd ../..
mkdir 2; cd 2
dotest multiroot4-6 "${testcvs} -d ${CVSROOT2} init" ""
dotest multiroot4-7 "${testcvs} -d ${CVSROOT2} -q co -l ." ""
mkdir dircom
dotest multiroot4-8 "${testcvs} add dircom" \
"Directory ${TESTDIR}/root2/dircom added to the repository"
cd dircom
touch file2
dotest multiroot4-9 "${testcvs} add file2" \
"${PROG} add: scheduling file .file2. for addition
${PROG} add: use .${PROG} commit. to add this file permanently"
dotest multiroot4-10 "${testcvs} -q ci -m add" \
"RCS file: ${TESTDIR}/root2/dircom/file2,v
done
Checking in file2;
${TESTDIR}/root2/dircom/file2,v <-- file2
initial revision: 1\.1
done"
cd ../..
cd 1/dircom
mkdir sdir2
dotest multiroot4-11 "${testcvs} -d ${CVSROOT2} add sdir2" \
"Directory ${TESTDIR}/root2/dircom/sdir2 added to the repository"
dotest multiroot4-12 "${testcvs} -q update" ""
cd ..
dotest multiroot4-13 "${testcvs} -q update dircom" ""
cd ..
rm -r 1 2
rm -rf ${TESTDIR}/root1 ${TESTDIR}/root2
unset CVSROOT1
unset CVSROOT2
;;
rmroot)
mkdir 1; cd 1
dotest rmroot-setup-1 "${testcvs} -q co -l ." ''
mkdir first-dir
dotest rmroot-setup-2 "${testcvs} add first-dir" \
"Directory ${CVSROOT_DIRNAME}/first-dir added to the repository"
cd first-dir
touch file1 file2
dotest rmroot-setup-3 "${testcvs} add file1 file2" \
"${PROG} add: scheduling file .file1. for addition
${PROG} add: scheduling file .file2. for addition
${PROG} add: use .${PROG} commit. to add these files permanently"
dotest rmroot-setup-4 "${testcvs} -q commit -minit" \
"RCS file: ${CVSROOT_DIRNAME}/first-dir/file1,v
done
Checking in file1;
${CVSROOT_DIRNAME}/first-dir/file1,v <-- file1
initial revision: 1\.1
done
RCS file: ${CVSROOT_DIRNAME}/first-dir/file2,v
done
Checking in file2;
${CVSROOT_DIRNAME}/first-dir/file2,v <-- file2
initial revision: 1\.1
done"
rm CVS/Root
dotest rmroot-1 "${testcvs} -q update" ''
cd ../..
rm -rf 1
;;
reposmv)
CVSROOT1=`newroot ${TESTDIR}/root1`
CVSROOT_MOVED=`newroot ${TESTDIR}/root-moved`
dotest reposmv-setup-1 "${testcvs} -d ${CVSROOT1} init" ""
mkdir imp-dir; cd imp-dir
echo file1 >file1
dotest reposmv-setup-2 \
"${testcvs} -d ${CVSROOT1} import -m add dir1 vendor release" \
"N dir1/file1
No conflicts created by this import"
cd ..
mkdir 1; cd 1
dotest reposmv-1 "${testcvs} -d ${CVSROOT1} -Q co dir1" ""
mv ${TESTDIR}/root1 ${TESTDIR}/root-moved
cd dir1
dotest reposmv-1a "cat CVS/Repository" \
"${TESTDIR}/root1/dir1" "dir1"
echo dir1 >CVS/Repository
if $remote; then
dotest_fail reposmv-2r "${testcvs} update" \
"Cannot access ${TESTDIR}/root1/CVSROOT
No such file or directory"
else
dotest reposmv-2 "${testcvs} update" "${DOTSTAR}
${PROG} update: ignoring CVS/Root because it specifies a non-existent repository ${TESTDIR}/root1
${PROG} update: cannot open directory ${CVSROOT_DIRNAME}/dir1: No such file or directory
${PROG} update: skipping directory "
fi
if $remote; then
CVSROOT_save=${CVSROOT}
CVSROOT=:fork:${TESTDIR}/root-moved; export CVSROOT
dotest_fail reposmv-3r "${testcvs} update" \
"Cannot access ${TESTDIR}/root1/CVSROOT
No such file or directory"
CVSROOT=${CVSROOT_save}; export CVSROOT
else
CVSROOT_save=${CVSROOT}
CVSROOT=${TESTDIR}/root-moved; export CVSROOT
dotest reposmv-3 "${testcvs} update" \
"${DOTSTAR}
${PROG} update: ignoring CVS/Root because it specifies a non-existent repository ${TESTDIR}/root1
${PROG} update: Updating \.
${DOTSTAR}"
CVSROOT=${CVSROOT_save}; export CVSROOT
fi
if $remote; then
CVSROOT_save=${CVSROOT}
CVSROOT=:fork:${TESTDIR}/root-none; export CVSROOT
dotest_fail reposmv-4 "${testcvs} update" \
"Cannot access ${TESTDIR}/root1/CVSROOT
No such file or directory"
CVSROOT=${CVSROOT_save}; export CVSROOT
else
CVSROOT_save=${CVSROOT}
CVSROOT=${TESTDIR}/root-none; export CVSROOT
dotest_fail reposmv-4 "${testcvs} update" \
"${PROG} update: in directory \.:
${PROG} update: ignoring CVS/Root because it specifies a non-existent repository ${TESTDIR}/root1
${PROG} \[update aborted\]: ${TESTDIR}/root-none/CVSROOT: No such file or directory"
CVSROOT=${CVSROOT_save}; export CVSROOT
fi
dotest reposmv-5 "${testcvs} -d ${CVSROOT_MOVED} update" \
"${PROG} update: Updating \."
cd ../..
rm -r imp-dir 1
rm -rf root1 root2
unset CVSROOT1
;;
pserver)
if $remote; then
mkdir 1; cd 1
dotest pserver-1 "${testcvs} -Q co CVSROOT" ""
cd CVSROOT
echo "SystemAuth=no" >config
dotest pserver-2 "${testcvs} -q ci -m config-it" \
"Checking in config;
${CVSROOT_DIRNAME}/CVSROOT/config,v <-- config
new revision: 1\.[0-9]*; previous revision: 1\.[0-9]*
done
${PROG} commit: Rebuilding administrative file database"
cat >${CVSROOT_DIRNAME}/CVSROOT/passwd <<EOF
testme:q6WV9d2t848B2:$username
dontroot:q6WV9d2t848B2:root
anonymous::$username
$username:
willfail: :whocares
EOF
dotest_fail pserver-3 "${testcvs} pserver" \
"error 0 Server configuration missing --allow-root in inetd.conf" <<EOF
BEGIN AUTH REQUEST
${CVSROOT_DIRNAME}
testme
Ay::'d
END AUTH REQUEST
EOF
${AWK} 'BEGIN { printf "0123456789abcdef" }' </dev/null >garbageseg
echo "BEGIN AUTH REQUEST" >garbageinput
i=0
while test $i -lt 64; do
cat <garbageseg >>garbageseg2
i=`expr $i + 1`
done
i=0
while test $i -lt 64; do
cat <garbageseg2 >>garbageinput
i=`expr $i + 1`
done
dotest_fail pserver-auth-no-dos \
"${testcvs} --allow-root=${CVSROOT_DIRNAME} pserver" \
"${PROG} \\[pserver aborted\\]: Maximum line length exceeded during authentication\." <garbageinput
unset i
rm garbageseg garbageseg2 garbageinput
dotest pserver-4 "${testcvs} --allow-root=${CVSROOT_DIRNAME} pserver" \
"${DOTSTAR} LOVE YOU
ok" <<EOF
BEGIN AUTH REQUEST
${CVSROOT_DIRNAME}
testme
Ay::'d
END AUTH REQUEST
Root ${CVSROOT_DIRNAME}
noop
EOF
dotest_fail pserver-4.2 \
"${testcvs} --allow-root=${CVSROOT_DIRNAME} pserver" \
"error 0: root not allowed" <<EOF
BEGIN AUTH REQUEST
${CVSROOT_DIRNAME}
dontroot
Ay::'d
END AUTH REQUEST
EOF
dotest pserver-5 "${testcvs} --allow-root=${CVSROOT_DIRNAME} pserver" \
"${DOTSTAR} LOVE YOU
E Protocol error: Root says \"${TESTDIR}/1\" but pserver says \"${CVSROOT_DIRNAME}\"
error " <<EOF
BEGIN AUTH REQUEST
${CVSROOT_DIRNAME}
testme
Ay::'d
END AUTH REQUEST
Root ${TESTDIR}/1
noop
EOF
dotest pserver-5a "${testcvs} --allow-root=${CVSROOT_DIRNAME} pserver" \
"${DOTSTAR} LOVE YOU
E Protocol error: init says \"${TESTDIR}/2\" but pserver says \"${CVSROOT_DIRNAME}\"
error " <<EOF
BEGIN AUTH REQUEST
${CVSROOT_DIRNAME}
testme
Ay::'d
END AUTH REQUEST
init ${TESTDIR}/2
EOF
dotest_fail pserver-5b "test -d ${TESTDIR}/2" ''
dotest pserver-5c "${testcvs} --allow-root=${CVSROOT_DIRNAME} pserver" \
"${DOTSTAR} LOVE YOU
E init xxx must be an absolute pathname
error " <<EOF
BEGIN AUTH REQUEST
${CVSROOT_DIRNAME}
testme
Ay::'d
END AUTH REQUEST
init xxx
EOF
dotest_fail pserver-5d "test -d xxx" ''
dotest_fail pserver-6 "${testcvs} --allow-root=${CVSROOT_DIRNAME} pserver" \
"I HATE YOU" <<EOF
BEGIN AUTH REQUEST
${CVSROOT_DIRNAME}
testme
Ay::'d^b?hd
END AUTH REQUEST
EOF
dotest_fail pserver-7 "${testcvs} --allow-root=${CVSROOT_DIRNAME} pserver" \
"I HATE YOU" <<EOF
BEGIN VERIFICATION REQUEST
${CVSROOT_DIRNAME}
testme
Ay::'d^b?hd
END VERIFICATION REQUEST
EOF
dotest pserver-8 "${testcvs} --allow-root=${CVSROOT_DIRNAME} pserver" \
"${DOTSTAR} LOVE YOU" <<EOF
BEGIN VERIFICATION REQUEST
${CVSROOT_DIRNAME}
testme
Ay::'d
END VERIFICATION REQUEST
EOF
dotest pserver-9 "${testcvs} --allow-root=${CVSROOT_DIRNAME} pserver" \
"${DOTSTAR} LOVE YOU" <<EOF
BEGIN AUTH REQUEST
${CVSROOT_DIRNAME}
anonymous
A
END AUTH REQUEST
EOF
dotest pserver-10 "${testcvs} --allow-root=${CVSROOT_DIRNAME} pserver" \
"${DOTSTAR} LOVE YOU" <<EOF
BEGIN AUTH REQUEST
${CVSROOT_DIRNAME}
anonymous
Aanythingwouldworkhereittrulydoesnotmatter
END AUTH REQUEST
EOF
dotest pserver-11 "${testcvs} --allow-root=${CVSROOT_DIRNAME} pserver" \
"${DOTSTAR} LOVE YOU" <<EOF
BEGIN AUTH REQUEST
${CVSROOT_DIRNAME}
${username}
A
END AUTH REQUEST
EOF
dotest pserver-12 "${testcvs} --allow-root=${CVSROOT_DIRNAME} pserver" \
"${DOTSTAR} LOVE YOU" <<EOF
BEGIN AUTH REQUEST
${CVSROOT_DIRNAME}
${username}
Anypasswordwouldworkwhynotthisonethen
END AUTH REQUEST
EOF
dotest_fail pserver-13 "${testcvs} --allow-root=${CVSROOT_DIRNAME} pserver" \
"${DOTSTAR} HATE YOU" <<EOF
BEGIN AUTH REQUEST
${CVSROOT_DIRNAME}
willfail
Amquiteunabletocomeupwithinterestingpasswordsanymore
END AUTH REQUEST
EOF
cat >${CVSROOT_DIRNAME}/CVSROOT/readers <<EOF
anonymous
EOF
dotest pserver-14 "${testcvs} --allow-root=${CVSROOT_DIRNAME} pserver" \
"${DOTSTAR} LOVE YOU
M Concurrent Versions System (CVS) .*
ok" <<EOF
BEGIN AUTH REQUEST
${CVSROOT_DIRNAME}
anonymous
Ay::'d
END AUTH REQUEST
Root ${CVSROOT_DIRNAME}
version
EOF
dotest pserver-15 "${testcvs} --allow-root=${CVSROOT_DIRNAME} pserver" \
"${DOTSTAR} LOVE YOU
E ${PROG} \\[server aborted\\]: .init. requires write access to the repository
error " <<EOF
BEGIN AUTH REQUEST
${CVSROOT_DIRNAME}
anonymous
Ay::'d
END AUTH REQUEST
init ${CVSROOT_DIRNAME}
EOF
dotest pserver-16 "${testcvs} --allow-root=${CVSROOT_DIRNAME} pserver" \
"${DOTSTAR} LOVE YOU
M Concurrent Versions System (CVS) .*
ok" <<EOF
BEGIN AUTH REQUEST
${CVSROOT_DIRNAME}
testme
Ay::'d
END AUTH REQUEST
Root ${CVSROOT_DIRNAME}
version
EOF
dotest pserver-17 "${testcvs} --allow-root=${CVSROOT_DIRNAME} pserver" \
"${DOTSTAR} LOVE YOU
ok" <<EOF
BEGIN AUTH REQUEST
${CVSROOT_DIRNAME}
testme
Ay::'d
END AUTH REQUEST
init ${CVSROOT_DIRNAME}
EOF
dotest pserver-18 "${testcvs} --allow-root=${CVSROOT_DIRNAME} pserver" \
"${DOTSTAR} LOVE YOU
M Concurrent Versions System (CVS) .*
ok" <<EOF
BEGIN AUTH REQUEST
${CVSROOT_DIRNAME}
${username}
Ay::'d
END AUTH REQUEST
Root ${CVSROOT_DIRNAME}
version
EOF
dotest pserver-19 "${testcvs} --allow-root=${CVSROOT_DIRNAME} pserver" \
"${DOTSTAR} LOVE YOU
ok" <<EOF
BEGIN AUTH REQUEST
${CVSROOT_DIRNAME}
${username}
Anything
END AUTH REQUEST
init ${CVSROOT_DIRNAME}
EOF
cat >${CVSROOT_DIRNAME}/CVSROOT/writers <<EOF
testme
EOF
dotest pserver-20 "${testcvs} --allow-root=${CVSROOT_DIRNAME} pserver" \
"${DOTSTAR} LOVE YOU
M Concurrent Versions System (CVS) .*
ok" <<EOF
BEGIN AUTH REQUEST
${CVSROOT_DIRNAME}
anonymous
Ay::'d
END AUTH REQUEST
Root ${CVSROOT_DIRNAME}
version
EOF
dotest pserver-21 "${testcvs} --allow-root=${CVSROOT_DIRNAME} pserver" \
"${DOTSTAR} LOVE YOU
E ${PROG} \\[server aborted\\]: .init. requires write access to the repository
error " <<EOF
BEGIN AUTH REQUEST
${CVSROOT_DIRNAME}
anonymous
Ay::'d
END AUTH REQUEST
init ${CVSROOT_DIRNAME}
EOF
dotest pserver-22 "${testcvs} --allow-root=${CVSROOT_DIRNAME} pserver" \
"${DOTSTAR} LOVE YOU
M Concurrent Versions System (CVS) .*
ok" <<EOF
BEGIN AUTH REQUEST
${CVSROOT_DIRNAME}
testme
Ay::'d
END AUTH REQUEST
Root ${CVSROOT_DIRNAME}
version
EOF
dotest pserver-23 "${testcvs} --allow-root=${CVSROOT_DIRNAME} pserver" \
"${DOTSTAR} LOVE YOU
ok" <<EOF
BEGIN AUTH REQUEST
${CVSROOT_DIRNAME}
testme
Ay::'d
END AUTH REQUEST
init ${CVSROOT_DIRNAME}
EOF
dotest pserver-24 "${testcvs} --allow-root=${CVSROOT_DIRNAME} pserver" \
"${DOTSTAR} LOVE YOU
M Concurrent Versions System (CVS) .*
ok" <<EOF
BEGIN AUTH REQUEST
${CVSROOT_DIRNAME}
${username}
Ay::'d
END AUTH REQUEST
Root ${CVSROOT_DIRNAME}
version
EOF
dotest pserver-25 "${testcvs} --allow-root=${CVSROOT_DIRNAME} pserver" \
"${DOTSTAR} LOVE YOU
E ${PROG} \\[server aborted\\]: .init. requires write access to the repository
error " <<EOF
BEGIN AUTH REQUEST
${CVSROOT_DIRNAME}
${username}
Anything
END AUTH REQUEST
init ${CVSROOT_DIRNAME}
EOF
rm ${CVSROOT_DIRNAME}/CVSROOT/readers
dotest pserver-26 "${testcvs} --allow-root=${CVSROOT_DIRNAME} pserver" \
"${DOTSTAR} LOVE YOU
M Concurrent Versions System (CVS) .*
ok" <<EOF
BEGIN AUTH REQUEST
${CVSROOT_DIRNAME}
anonymous
Ay::'d
END AUTH REQUEST
Root ${CVSROOT_DIRNAME}
version
EOF
dotest pserver-27 "${testcvs} --allow-root=${CVSROOT_DIRNAME} pserver" \
"${DOTSTAR} LOVE YOU
E ${PROG} \\[server aborted\\]: .init. requires write access to the repository
error " <<EOF
BEGIN AUTH REQUEST
${CVSROOT_DIRNAME}
anonymous
Ay::'d
END AUTH REQUEST
init ${CVSROOT_DIRNAME}
EOF
dotest pserver-28 "${testcvs} --allow-root=${CVSROOT_DIRNAME} pserver" \
"${DOTSTAR} LOVE YOU
M Concurrent Versions System (CVS) .*
ok" <<EOF
BEGIN AUTH REQUEST
${CVSROOT_DIRNAME}
testme
Ay::'d
END AUTH REQUEST
Root ${CVSROOT_DIRNAME}
version
EOF
dotest pserver-29 "${testcvs} --allow-root=${CVSROOT_DIRNAME} pserver" \
"${DOTSTAR} LOVE YOU
ok" <<EOF
BEGIN AUTH REQUEST
${CVSROOT_DIRNAME}
testme
Ay::'d
END AUTH REQUEST
init ${CVSROOT_DIRNAME}
EOF
dotest pserver-30 "${testcvs} --allow-root=${CVSROOT_DIRNAME} pserver" \
"${DOTSTAR} LOVE YOU
M Concurrent Versions System (CVS) .*
ok" <<EOF
BEGIN AUTH REQUEST
${CVSROOT_DIRNAME}
${username}
Ay::'d
END AUTH REQUEST
Root ${CVSROOT_DIRNAME}
version
EOF
dotest pserver-31 "${testcvs} --allow-root=${CVSROOT_DIRNAME} pserver" \
"${DOTSTAR} LOVE YOU
E ${PROG} \\[server aborted\\]: .init. requires write access to the repository
error " <<EOF
BEGIN AUTH REQUEST
${CVSROOT_DIRNAME}
${username}
Anything
END AUTH REQUEST
init ${CVSROOT_DIRNAME}
EOF
dotest_fail pserver-bufinit "${testcvs} pserver" \
"${PROG} \[pserver aborted\]: bad auth protocol start: EOF" </dev/null
echo "# comments only" >config
dotest pserver-cleanup-1 "${testcvs} -q ci -m config-it" \
"Checking in config;
${CVSROOT_DIRNAME}/CVSROOT/config,v <-- config
new revision: 1\.[0-9]*; previous revision: 1\.[0-9]*
done
${PROG} commit: Rebuilding administrative file database"
cd ../..
rm -r 1
rm ${CVSROOT_DIRNAME}/CVSROOT/passwd ${CVSROOT_DIRNAME}/CVSROOT/writers
fi ;;
server)
if $remote; then
dotest server-1 "${testcvs} server" \
"E Protocol error: Root request missing
error " <<EOF
Directory bogus
mumble/bar
update
EOF
dotest server-2 "${testcvs} server" "ok" <<EOF
Set OTHER=variable
Set MYENV=env-value
init ${TESTDIR}/crerepos
EOF
dotest server-3 "test -d ${TESTDIR}/crerepos/CVSROOT" ""
${AWK} 'BEGIN { \
printf "%c%c%c%c%c%c.6%c%c+I-.%c%c%c%c5%c;%c%c%c%c", \
31, 139, 8, 64, 5, 7, 64, 3, 225, 2, 64, 198, 185, 5, 64, 64, 64}' \
</dev/null | ${TR} '\100' '\000' >gzipped.dat
cat <<EOF >session.dat
Root ${TESTDIR}/crerepos
UseUnchanged
gzip-file-contents 3
Argument -m
Argument msg
Argumentx
Argument dir1
Argument tag1
Argument tag2
Directory .
${TESTDIR}/crerepos
Modified file1
u=rw,g=r,o=r
z25
EOF
cat gzipped.dat >>session.dat
echo import >>session.dat
dotest server-4 "${testcvs} server" \
"M N dir1/file1
M
M No conflicts created by this import
M
ok" <session.dat
dotest server-5 \
"${testcvs} -q -d ${TESTDIR}/crerepos co -p dir1/file1" "test"
dotest server-6 "${testcvs} server" \
"Notified \./
${TESTDIR}/crerepos/dir1/file1
ok" <<EOF
Root ${TESTDIR}/crerepos
Directory .
${TESTDIR}/crerepos/dir1
Notify file1
E Fri May 7 13:21:09 1999 GMT myhost some-work-dir EUC
noop
EOF
dotest server-7 "${testcvs} server" \
"Notified \./
${TESTDIR}/crerepos/dir1/file1
ok
Notified \./
${TESTDIR}/crerepos/dir1/file1
ok" <<EOF
Root ${TESTDIR}/crerepos
Directory .
${TESTDIR}/crerepos/dir1
Notify file1
E Fri May 7 13:21:09 1999 GMT myhost some-work-dir EUC
noop
Notify file1
E The 57th day of Discord in the YOLD 3165 myhost some-work-dir EUC
noop
EOF
dotest server-8 "${testcvs} server" \
"E ${PROG} server: invalid character in editor value
Notified \./
${TESTDIR}/crerepos/dir1/file1
ok" <<EOF
Root ${TESTDIR}/crerepos
Directory .
${TESTDIR}/crerepos/dir1
Notify file1
E Setting Orange, the 52th day of Discord in the YOLD 3165 myhost some-work-dir EUC
noop
EOF
dotest server-9 "${testcvs} server" \
"E Protocol error; misformed Notify request
error " <<EOF
Root ${TESTDIR}/crerepos
Directory .
${TESTDIR}/crerepos/dir1
Notify file1
E Setting Orange+57th day of Discord myhost some-work-dir EUC
noop
EOF
dotest server-10 "${testcvs} server" "ok" <<EOF
Root ${TESTDIR}/crerepos
Directory .
${TESTDIR}/crerepos/dir1
watchers
EOF
dotest server-11 "${testcvs} server" \
"M file1 ${username} tedit tunedit tcommit
ok" <<EOF
Root ${TESTDIR}/crerepos
Directory .
${TESTDIR}/crerepos/dir1
Entry /file1/1.1////
watchers
EOF
dotest server-12 "${testcvs} server" \
"M file1 ${username} The 57th day of Discord in the YOLD 3165 myhost some-work-dir
ok" <<EOF
Root ${TESTDIR}/crerepos
Directory .
${TESTDIR}/crerepos/dir1
Entry /file1/1.1////
editors
EOF
dotest server-13 "${testcvs} server" \
"Notified \./
${TESTDIR}/crerepos/dir1/file1
ok" <<EOF
Root ${TESTDIR}/crerepos
Directory .
${TESTDIR}/crerepos/dir1
Notify file1
U 7 May 1999 15:00 GMT myhost some-work-dir EUC
noop
EOF
dotest server-14 "${testcvs} server" "ok" <<EOF
Root ${TESTDIR}/crerepos
Directory .
${TESTDIR}/crerepos/dir1
watchers
EOF
dotest server-15 "${testcvs} server" "ok" <<EOF
Root ${TESTDIR}/crerepos
Directory .
${TESTDIR}/crerepos/dir1
editors
EOF
dotest server-16 "${testcvs} server" \
"E cvs server: WARNING: global \`-l' option ignored\.
ok" <<EOF
Global_option -l
noop
EOF
dotest server-17 "$testcvs server" \
"E protocol error: Malformed Entry
error " <<EOF
Root $TESTDIR/crerepos
Directory .
$TESTDIR/crerepos/dir1
Entry X/file1/1.1////
noop
EOF
dotest server-18 "$testcvs server" \
"E protocol error: Malformed Entry
error " <<EOF
Root $TESTDIR/crerepos
Directory .
$TESTDIR/crerepos/dir1
Entry /CC/CC/CC
noop
EOF
if $keep; then
echo Keeping ${TESTDIR} and exiting due to --keep
exit 0
fi
rm -rf ${TESTDIR}/crerepos
rm gzipped.dat session.dat
fi ;;
server2)
if $remote; then
dotest server2-1 "${testcvs} server" \
"E protocol error: directory '${CVSROOT_DIRNAME}/\.\./dir1' not within root '${CVSROOT_DIRNAME}'
error " <<EOF
Root ${CVSROOT_DIRNAME}
Directory .
${CVSROOT_DIRNAME}/../dir1
noop
EOF
dotest server2-2 "${testcvs} server" \
"E protocol error: directory '${CVSROOT_DIRNAME}dir1' not within root '${CVSROOT_DIRNAME}'
error " <<EOF
Root ${CVSROOT_DIRNAME}
Directory .
${CVSROOT_DIRNAME}dir1
noop
EOF
dotest 2-3 "${testcvs} server" \
"E protocol error: directory '${TESTDIR}' not within root '${CVSROOT_DIRNAME}'
error " <<EOF
Root ${CVSROOT_DIRNAME}
Directory .
${TESTDIR}
noop
EOF
dotest server2-4 "${testcvs} server" \
"E protocol error: directory 'foo/bar' not within current directory
error " <<EOF
Root ${CVSROOT_DIRNAME}
Directory .
${CVSROOT_DIRNAME}
Unchanged foo/bar
noop
EOF
fi
;;
client)
if $remote; then
cat >${TESTDIR}/serveme <<EOF
#!${TESTSHELL}
echo "Valid-requests Root Valid-responses valid-requests Directory Entry Modified Unchanged Argument Argumentx ci co update"
echo "ok"
echo "M special message"
echo "Created first-dir/"
echo "${CVSROOT_DIRNAME}/first-dir/file1"
echo "/file1/1.1///"
echo "u=rw,g=rw,o=rw"
echo "4"
echo "xyz"
echo "ok"
cat >/dev/null
EOF
if test -n "$remotehost"; then
$CVS_RSH $remotehost "chmod +x ${TESTDIR}/serveme"
else
chmod +x ${TESTDIR}/serveme
fi
save_CVS_SERVER=$CVS_SERVER
CVS_SERVER=${TESTDIR}/serveme; export CVS_SERVER
mkdir 1; cd 1
dotest_fail client-1 "${testcvs} -q co first-dir" \
"${PROG} \[checkout aborted\]: This server does not support the global -q option${DOTSTAR}"
dotest client-2 "${testcvs} co first-dir" "special message"
cat >${TESTDIR}/serveme <<EOF
#!${TESTSHELL}
echo "Valid-requests Root Valid-responses valid-requests Directory Entry Modified Unchanged Argument Argumentx ci co update"
echo "ok"
echo "M merge-it"
echo "Copy-file ./"
echo "${CVSROOT_DIRNAME}/first-dir/file1"
echo "${TESTDIR}/bogus/.#file1.1.1"
echo "Merged ./"
echo "${CVSROOT_DIRNAME}/first-dir/file1"
echo "/file1/1.2///"
echo "u=rw,g=rw,o=rw"
echo "4"
echo "abd"
echo "ok"
cat >/dev/null
EOF
cd first-dir
mkdir ${TESTDIR}/bogus
dotest_fail client-3 "${testcvs} update" "merge-it
${PROG} \[update aborted\]: protocol error: Copy-file tried to specify director${DOTSTAR}"
cat >${TESTDIR}/serveme <<EOF
#!${TESTSHELL}
echo "Valid-requests Root Valid-responses valid-requests Directory Entry Modified Unchanged Argument Argumentx ci co update"
echo "ok"
echo "M merge-it"
echo "Copy-file ./"
echo "${CVSROOT_DIRNAME}/first-dir/file1"
echo ".#file1.1.1"
echo "Merged ./"
echo "${CVSROOT_DIRNAME}/first-dir/file1"
echo "/file1/1.2///"
echo "u=rw,g=rw,o=rw"
echo "4"
echo "abc"
echo "ok"
cat >/dev/null
EOF
dotest client-4 "${testcvs} update" "merge-it"
dotest client-5 "cat .#file1.1.1" "xyz"
dotest client-6 "cat CVS/Entries" "/file1/1.2/[A-Za-z0-9 :]*//
D"
dotest client-7 "cat file1" "abc"
cat >${TESTDIR}/serveme <<EOF
#!${TESTSHELL}
echo "Valid-requests Root Valid-responses valid-requests Directory Entry Modified Unchanged Argument Argumentx ci co update"
echo "ok"
echo "M OK, whatever"
echo "ok"
cat >${TESTDIR}/client.tmp
EOF
chmod u=rw,go= file1
dotest client-8 "${testcvs} update -D 99-10-04" "OK, whatever"
dotest client-9 "cat ${TESTDIR}/client.tmp" \
"Root ${CVSROOT_DIRNAME}
Valid-responses [-a-zA-Z ]*
valid-requests
Argument -D
Argument [34] Oct 1999 [0-9][0-9]:00:00 -0000
Argument --
Directory \.
${CVSROOT_DIRNAME}/first-dir
Entry /file1/1\.2///
Modified file1
u=rw,g=,o=
4
abc
update" \
"Root ${CVSROOT_DIRNAME}
Valid-responses [-a-zA-Z ]*
valid-requests
Argument -D
Argument [34] Oct 1999 [0-9][0-9]:00:00 -0000
Argument --
Directory \.
${CVSROOT_DIRNAME}/first-dir
Entry /file1/1\.2///
Modified file1
u=rw,g=r,o=r
4
abc
update"
cat >$HOME/.bashrc <<EOF
#!$TESTSHELL
EOF
cat >$TESTDIR/serveme <<EOF
#!$TESTSHELL
echo "Valid-requests Root Valid-responses valid-requests Directory Entry Modified Unchanged Argument Argumentx ci co update"
echo "ok"
echo "Rcs-diff $HOME/"
echo "$HOME/.bashrc"
echo "/.bashrc/73.50///"
echo "u=rw,g=rw,o=rw"
echo "20"
echo "a1 1"
echo "echo 'gotcha!'"
echo "ok"
cat >/dev/null
EOF
sleep 1
dotest_fail client-10 "$testcvs update" \
"$PROG update: Server attempted to update a file via an invalid pathname:
$PROG \[update aborted\]: \`$HOME/.bashrc'\."
cat >$TESTDIR/serveme <<EOF
#!$TESTSHELL
echo "Valid-requests Root Valid-responses valid-requests Directory Entry Modified Unchanged Argument Argumentx ci co update"
echo "ok"
echo "Rcs-diff ./"
echo "$HOME/.bashrc"
echo "/.bashrc/73.50///"
echo "u=rw,g=rw,o=rw"
echo "20"
echo "a1 1"
echo "echo 'gotcha!'"
echo "ok"
cat >/dev/null
EOF
sleep 1
dotest_fail client-11 "$testcvs update" \
"$PROG \[update aborted\]: patch original file \./\.bashrc does not exist"
cat >$TESTDIR/serveme <<EOF
#!$TESTSHELL
echo "Valid-requests Root Valid-responses valid-requests Directory Entry Modified Unchanged Argument Argumentx ci co update"
echo "ok"
echo "Rcs-diff ../../home/"
echo "../../.bashrc"
echo "/.bashrc/73.50///"
echo "u=rw,g=rw,o=rw"
echo "20"
echo "a1 1"
echo "echo 'gotcha!'"
echo "ok"
cat >/dev/null
EOF
sleep 1
dotest_fail client-12 "$testcvs update" \
"$PROG update: Server attempted to update a file via an invalid pathname:
$PROG \[update aborted\]: \`\.\./\.\./home/.bashrc'\."
cat >$TESTDIR/serveme <<EOF
#!$TESTSHELL
echo "Valid-requests Root Valid-responses valid-requests Directory Entry Modified Unchanged Argument Argumentx ci co update"
echo "ok"
echo "Created $HOME/"
echo "$HOME/.bashrc"
echo "/.bashrc/73.50///"
echo "u=rw,g=rw,o=rw"
echo "26"
echo "#! /bin/sh"
echo "echo 'gotcha!'"
echo "ok"
cat >/dev/null
EOF
sleep 1
dotest_fail client-13 "$testcvs update" \
"$PROG update: Server attempted to update a file via an invalid pathname:
$PROG \[update aborted\]: \`$HOME/.bashrc'\."
cat >$TESTDIR/serveme <<EOF
#!$TESTSHELL
echo "Valid-requests Root Valid-responses valid-requests Directory Entry Modified Unchanged Argument Argumentx ci co update"
echo "ok"
echo "Update-existing ../../home/"
echo "../../home/.bashrc"
echo "/.bashrc/73.50///"
echo "u=rw,g=rw,o=rw"
echo "26"
echo "#! /bin/sh"
echo "echo 'gotcha!'"
echo "ok"
cat >/dev/null
EOF
sleep 1
dotest_fail client-14 "$testcvs update" \
"$PROG update: Server attempted to update a file via an invalid pathname:
$PROG \[update aborted\]: \`\.\./\.\./home/.bashrc'\."
cat >$TESTDIR/serveme <<EOF
#!$TESTSHELL
echo "Valid-requests Root Valid-responses valid-requests Directory Entry Modified Unchanged Argument Argumentx ci co update"
echo "ok"
echo "Merged $HOME/"
echo "$HOME/.bashrc"
echo "/.bashrc/73.50///"
echo "u=rw,g=rw,o=rw"
echo "26"
echo "#! /bin/sh"
echo "echo 'gotcha!'"
echo "ok"
cat >/dev/null
EOF
sleep 1
dotest_fail client-15 "$testcvs update" \
"$PROG update: Server attempted to update a file via an invalid pathname:
$PROG \[update aborted\]: \`$HOME/.bashrc'\."
cat >$TESTDIR/serveme <<EOF
#!$TESTSHELL
echo "Valid-requests Root Valid-responses valid-requests Directory Entry Modified Unchanged Argument Argumentx ci co update"
echo "ok"
echo "Updated ../../home/"
echo "../../home/.bashrc"
echo "/.bashrc/73.50///"
echo "u=rw,g=rw,o=rw"
echo "26"
echo "#! /bin/sh"
echo "echo 'gotcha!'"
echo "ok"
cat >/dev/null
EOF
sleep 1
dotest_fail client-16 "$testcvs update" \
"$PROG update: Server attempted to update a file via an invalid pathname:
$PROG \[update aborted\]: \`\.\./\.\./home/.bashrc'\."
cat >$TESTDIR/serveme <<EOF
#!$TESTSHELL
echo "Valid-requests Root Valid-responses valid-requests Directory Entry Modified Unchanged Argument Argumentx ci co update"
echo "ok"
echo "Created ."
echo "./innocuous"
echo "/innocuous/73.50///"
echo "u=rw,g=rw,o=rw"
echo "26"
echo "#! /bin/sh"
echo "echo 'gotcha!'"
echo "Copy-file ."
echo "./innocuous"
echo "$HOME/innocuous"
echo "ok"
cat >/dev/null
EOF
sleep 1
dotest_fail client-18 "$testcvs update" \
"$PROG \[update aborted\]: protocol error: Copy-file tried to specify directory"
dotest client-19 "cat $HOME/.bashrc" \
"#!$TESTSHELL
# This is where login scripts would usually be
# stored\."
if $keep; then
echo Keeping ${TESTDIR} and exiting due to --keep
exit 0
fi
cd ../..
rm -r 1
rmdir ${TESTDIR}/bogus
rm $TESTDIR/serveme $HOME/.bashrc
CVS_SERVER=${save_CVS_SERVER}; export CVS_SERVER
fi ;;
dottedroot)
CVSROOT_save=${CVSROOT}
CVSROOT_DIRNAME_save=${CVSROOT_DIRNAME}
CVSROOT_DIRNAME=${TESTDIR}/cvs.root
CVSROOT=`newroot ${CVSROOT_DIRNAME}`
dotest dottedroot-init-1 "${testcvs} init" ""
mkdir dir1
mkdir dir1/dir2
echo version1 >dir1/dir2/file1
cd dir1
dotest dottedroot-1 "${testcvs} import -m '' module1 AUTHOR INITIAL" \
"${PROG} [a-z]*: Importing ${CVSROOT_DIRNAME}/module1/dir2
N module1/dir2/file1
No conflicts created by this import"
cd ..
dotest dottedroot-2 "${testcvs} co -rINITIAL module1" \
"${PROG} [a-z]*: Updating module1
${PROG} [a-z]*: Updating module1/dir2
U module1/dir2/file1"
if $keep; then
echo Keeping ${TESTDIR} and exiting due to --keep
exit 0
fi
rm -rf ${CVSROOT_DIRNAME}
rm -r dir1 module1
CVSROOT_DIRNAME=${CVSROOT_DIRNAME_save}
CVSROOT=${CVSROOT_save}
;;
fork)
if $remote; then
mkdir fork; cd fork
save_CVS_SERVER=$CVS_SERVER
unset CVS_SERVER
echo "echo junk" >cvs
chmod a+x cvs
save_PATH=$PATH; PATH=.:$PATH
dotest fork-1 "$testcvs -d:fork:$CVSROOT_DIRNAME version" \
'Client: \(.*\)
Server: \1'
CVS_SERVER=${save_CVS_SERVER}; export CVS_SERVER
unset save_CVS_SERVER
PATH=$save_PATH; unset save_PATH
cd ..
if $keep; then
echo Keeping ${TESTDIR} and exiting due to --keep
exit 0
fi
fi
;;
commit-add-missing)
mkdir 1; cd 1
module=c-a-m
echo > unused-file
dotest commit-add-missing-1 \
"$testcvs -Q import -m. $module X Y" ''
file=F
dotest commit-add-missing-2 "$testcvs -Q co $module" ''
cd $module
dotest commit-add-missing-3 "$testcvs -Q tag -b B" ''
echo v1 > $file
dotest commit-add-missing-4 "$testcvs -Q add $file" ''
rm -f $file
dotest_fail commit-add-missing-5 "$testcvs -Q ci -m. $file" \
"${PROG} commit: Up-to-date check failed for .$file'
${PROG} \[commit aborted\]: correct above errors first!"
cd ../..
rm -rf 1
rm -rf ${CVSROOT_DIRNAME}/$module
;;
commit-d)
mkdir -p 1/subdir; cd 1
touch file1 subdir/file2
dotest commit-d-1 "$testcvs -Q import -m. c-d-c X Y" ""
dotest commit-d-2 "$testcvs -Q co c-d-c" ""
cd c-d-c
echo change >>file1; echo another change >>subdir/file2
echo nosuchhost:/cvs > CVS/Root
dotest commit-d-3 "$testcvs -Q -d $CVSROOT commit -m." \
"Checking in file1;
${CVSROOT_DIRNAME}/c-d-c/file1,v <-- file1
new revision: 1.2; previous revision: 1.1
done
Checking in subdir/file2;
${CVSROOT_DIRNAME}/c-d-c/subdir/file2,v <-- file2
new revision: 1.2; previous revision: 1.1
done"
cd ../..
rm -rf 1 cvsroot/c-d-c
;;
*)
echo $what is not the name of a test -- ignored
;;
esac
if test "x$TESTDIR" != "x`pwd`"; then
fail "cleanup: PWD != TESTDIR (\``pwd`' != \`$TESTDIR')"
fi
if test -s $CVSROOT_DIRNAME/CVSROOT/val-tags; then
: > $CVSROOT_DIRNAME/CVSROOT/val-tags
fi
verify_tmp_empty "post $what"
done
skippedoutput=
warningsoutput=
extendedinfo=
if test $skipped -ne 0; then
skippedoutput="$skipped test group"
if test $skipped -ne 1; then
skippedoutput="${skippedoutput}s"
fi
skippedoutput="$skippedoutput skipped"
fi
if test $warnings -ne 0; then
warningsoutput="$warnings test"
if test $warnings -ne 1; then
warningsoutput="${warningsoutput}s"
fi
warningsoutput="$warningsoutput passed with warnings"
fi
if test -n "$skippedoutput" || test -n "$warningsoutput"; then
extendedinfo=" ("
if test -n "$skippedoutput"; then
extendedinfo="$extendedinfo$skippedoutput"
fi
if test -n "$skippedoutput" && test -n "$warningsoutput"; then
extendedinfo="$extendedinfo and "
fi
if test -n "$warningsoutput"; then
extendedinfo="$extendedinfo$warningsoutput"
fi
extendedinfo="$extendedinfo)"
fi
echo "OK, all $passed tests passed$extendedinfo."
if $keep; then
echo "Keeping ${TESTDIR} and exiting due to -k (keep) option."
exit 0
fi
cd `dirname ${TESTDIR}`
rm -rf ${TESTDIR}