summaryrefslogtreecommitdiff
path: root/gnu
diff options
context:
space:
mode:
authorThorsten Lockert <tholo@cvs.openbsd.org>2001-09-29 00:00:40 +0000
committerThorsten Lockert <tholo@cvs.openbsd.org>2001-09-29 00:00:40 +0000
commitd081aaeadf60ba7d00c53233083c12eb1ad29597 (patch)
treef6c853ee40ed3bd69c321681721099de96154c93 /gnu
parent257b9a3b99db7b3c79cdafe49da86e76e8fcc4ed (diff)
Merge remaining local changes, correct build issues
Diffstat (limited to 'gnu')
-rw-r--r--gnu/usr.bin/cvs/configure1546
-rw-r--r--gnu/usr.bin/cvs/configure.in40
-rw-r--r--gnu/usr.bin/cvs/doc/cvs.info-32297
-rw-r--r--gnu/usr.bin/cvs/doc/cvs.info-42158
-rw-r--r--gnu/usr.bin/cvs/doc/cvs.info-51532
-rw-r--r--gnu/usr.bin/cvs/doc/cvs.info-72278
-rw-r--r--gnu/usr.bin/cvs/doc/cvs.info-91146
-rw-r--r--gnu/usr.bin/cvs/src/Makefile.in4
-rw-r--r--gnu/usr.bin/cvs/src/client.c8
-rw-r--r--gnu/usr.bin/cvs/src/server.c7
10 files changed, 6574 insertions, 4442 deletions
diff --git a/gnu/usr.bin/cvs/configure b/gnu/usr.bin/cvs/configure
index fb4dc86c783..d9861075faf 100644
--- a/gnu/usr.bin/cvs/configure
+++ b/gnu/usr.bin/cvs/configure
@@ -12,6 +12,9 @@ ac_help=
ac_default_prefix=/usr/local
# Any additions from configure.in:
ac_help="$ac_help
+ --disable-dependency-tracking Speeds up one-time builds
+ --enable-dependency-tracking Do not reject slow dependency extractors"
+ac_help="$ac_help
--with-krb4=value set default \$(KRB4) from value"
ac_help="$ac_help
--with-gssapi=value GSSAPI directory"
@@ -533,14 +536,461 @@ else
fi
-AM_INIT_AUTOMAKE(cvs, 1.11.1p1)
+ac_aux_dir=
+for ac_dir in $srcdir $srcdir/.. $srcdir/../..; do
+ if test -f $ac_dir/install-sh; then
+ ac_aux_dir=$ac_dir
+ ac_install_sh="$ac_aux_dir/install-sh -c"
+ break
+ elif test -f $ac_dir/install.sh; then
+ ac_aux_dir=$ac_dir
+ ac_install_sh="$ac_aux_dir/install.sh -c"
+ break
+ fi
+done
+if test -z "$ac_aux_dir"; then
+ { echo "configure: error: can not find install-sh or install.sh in $srcdir $srcdir/.. $srcdir/../.." 1>&2; exit 1; }
+fi
+ac_config_guess=$ac_aux_dir/config.guess
+ac_config_sub=$ac_aux_dir/config.sub
+ac_configure=$ac_aux_dir/configure # This should be Cygnus configure.
+
+# Find a good install program. We prefer a C program (faster),
+# so one script is as good as another. But avoid the broken or
+# incompatible versions:
+# SysV /etc/install, /usr/sbin/install
+# SunOS /usr/etc/install
+# IRIX /sbin/install
+# AIX /bin/install
+# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag
+# AFS /usr/afsws/bin/install, which mishandles nonexistent args
+# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff"
+# ./install, which can be erroneously created by make from ./install.sh.
+echo $ac_n "checking for a BSD compatible install""... $ac_c" 1>&6
+echo "configure:571: checking for a BSD compatible install" >&5
+if test -z "$INSTALL"; then
+if eval "test \"`echo '$''{'ac_cv_path_install'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+else
+ IFS="${IFS= }"; ac_save_IFS="$IFS"; IFS=":"
+ for ac_dir in $PATH; do
+ # Account for people who put trailing slashes in PATH elements.
+ case "$ac_dir/" in
+ /|./|.//|/etc/*|/usr/sbin/*|/usr/etc/*|/sbin/*|/usr/afsws/bin/*|/usr/ucb/*) ;;
+ *)
+ # OSF1 and SCO ODT 3.0 have their own names for install.
+ # Don't use installbsd from OSF since it installs stuff as root
+ # by default.
+ for ac_prog in ginstall scoinst install; do
+ if test -f $ac_dir/$ac_prog; then
+ if test $ac_prog = install &&
+ grep dspmsg $ac_dir/$ac_prog >/dev/null 2>&1; then
+ # AIX install. It has an incompatible calling convention.
+ :
+ else
+ ac_cv_path_install="$ac_dir/$ac_prog -c"
+ break 2
+ fi
+ fi
+ done
+ ;;
+ esac
+ done
+ IFS="$ac_save_IFS"
+
+fi
+ if test "${ac_cv_path_install+set}" = set; then
+ INSTALL="$ac_cv_path_install"
+ else
+ # As a last resort, use the slow shell script. We don't cache a
+ # path for INSTALL within a source directory, because that will
+ # break other packages using the cache if that directory is
+ # removed, or if the path is relative.
+ INSTALL="$ac_install_sh"
+ fi
+fi
+echo "$ac_t""$INSTALL" 1>&6
+
+# Use test -z because SunOS4 sh mishandles braces in ${var-val}.
+# It thinks the first close brace ends the variable substitution.
+test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}'
+
+test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL_PROGRAM}'
+
+test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644'
+
+echo $ac_n "checking whether build environment is sane""... $ac_c" 1>&6
+echo "configure:624: checking whether build environment is sane" >&5
+# Just in case
+sleep 1
+echo timestamp > conftest.file
+# Do `set' in a subshell so we don't clobber the current shell's
+# arguments. Must try -L first in case configure is actually a
+# symlink; some systems play weird games with the mod time of symlinks
+# (eg FreeBSD returns the mod time of the symlink's containing
+# directory).
+if (
+ set X `ls -Lt $srcdir/configure conftest.file 2> /dev/null`
+ if test "$*" = "X"; then
+ # -L didn't work.
+ set X `ls -t $srcdir/configure conftest.file`
+ fi
+ if test "$*" != "X $srcdir/configure conftest.file" \
+ && test "$*" != "X conftest.file $srcdir/configure"; then
+
+ # If neither matched, then we have a broken ls. This can happen
+ # if, for instance, CONFIG_SHELL is bash and it inherits a
+ # broken ls alias from the environment. This has actually
+ # happened. Such a system could not be considered "sane".
+ { echo "configure: error: ls -t appears to fail. Make sure there is not a broken
+alias in your environment" 1>&2; exit 1; }
+ fi
+
+ test "$2" = conftest.file
+ )
+then
+ # Ok.
+ :
+else
+ { echo "configure: error: newly created file is older than distributed files!
+Check your system clock" 1>&2; exit 1; }
+fi
+rm -f conftest*
+echo "$ac_t""yes" 1>&6
+if test "$program_transform_name" = s,x,x,; then
+ program_transform_name=
+else
+ # Double any \ or $. echo might interpret backslashes.
+ cat <<\EOF_SED > conftestsed
+s,\\,\\\\,g; s,\$,$$,g
+EOF_SED
+ program_transform_name="`echo $program_transform_name|sed -f conftestsed`"
+ rm -f conftestsed
+fi
+test "$program_prefix" != NONE &&
+ program_transform_name="s,^,${program_prefix},; $program_transform_name"
+# Use a double $ so make ignores it.
+test "$program_suffix" != NONE &&
+ program_transform_name="s,\$\$,${program_suffix},; $program_transform_name"
+
+# sed with no file args requires a program.
+test "$program_transform_name" = "" && program_transform_name="s,x,x,"
+
+test x"${MISSING+set}" = xset ||
+ MISSING="\${SHELL} `CDPATH=:; cd $ac_aux_dir && pwd`/missing"
+# Use eval to expand $SHELL
+if eval "$MISSING --run true"; then
+ am_missing_run="$MISSING --run "
+else
+ am_missing_run=
+ am_backtick='`'
+ echo "configure: warning: ${am_backtick}missing' script is too old or missing" 1>&2
+fi
+
+for ac_prog in mawk gawk nawk awk
+do
+# Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
+echo "configure:696: checking for $ac_word" >&5
+if eval "test \"`echo '$''{'ac_cv_prog_AWK'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+else
+ if test -n "$AWK"; then
+ ac_cv_prog_AWK="$AWK" # Let the user override the test.
+else
+ IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":"
+ ac_dummy="$PATH"
+ for ac_dir in $ac_dummy; do
+ test -z "$ac_dir" && ac_dir=.
+ if test -f $ac_dir/$ac_word; then
+ ac_cv_prog_AWK="$ac_prog"
+ break
+ fi
+ done
+ IFS="$ac_save_ifs"
+fi
+fi
+AWK="$ac_cv_prog_AWK"
+if test -n "$AWK"; then
+ echo "$ac_t""$AWK" 1>&6
+else
+ echo "$ac_t""no" 1>&6
+fi
+
+test -n "$AWK" && break
+done
+
+echo $ac_n "checking whether ${MAKE-make} sets \${MAKE}""... $ac_c" 1>&6
+echo "configure:726: checking whether ${MAKE-make} sets \${MAKE}" >&5
+set dummy ${MAKE-make}; ac_make=`echo "$2" | sed 'y%./+-%__p_%'`
+if eval "test \"`echo '$''{'ac_cv_prog_make_${ac_make}_set'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+else
+ cat > conftestmake <<\EOF
+all:
+ @echo 'ac_maketemp="${MAKE}"'
+EOF
+# GNU make sometimes prints "make[1]: Entering...", which would confuse us.
+eval `${MAKE-make} -f conftestmake 2>/dev/null | grep temp=`
+if test -n "$ac_maketemp"; then
+ eval ac_cv_prog_make_${ac_make}_set=yes
+else
+ eval ac_cv_prog_make_${ac_make}_set=no
+fi
+rm -f conftestmake
+fi
+if eval "test \"`echo '$ac_cv_prog_make_'${ac_make}_set`\" = yes"; then
+ echo "$ac_t""yes" 1>&6
+ SET_MAKE=
+else
+ echo "$ac_t""no" 1>&6
+ SET_MAKE="MAKE=${MAKE-make}"
+fi
+
+# Extract the first word of "etags", so it can be a program name with args.
+set dummy etags; ac_word=$2
+echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
+echo "configure:755: checking for $ac_word" >&5
+if eval "test \"`echo '$''{'ac_cv_prog_ETAGS'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+else
+ if test -n "$ETAGS"; then
+ ac_cv_prog_ETAGS="$ETAGS" # Let the user override the test.
+else
+ IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":"
+ ac_dummy="$PATH"
+ for ac_dir in $ac_dummy; do
+ test -z "$ac_dir" && ac_dir=.
+ if test -f $ac_dir/$ac_word; then
+ ac_cv_prog_ETAGS="etags"
+ break
+ fi
+ done
+ IFS="$ac_save_ifs"
+fi
+fi
+ETAGS="$ac_cv_prog_ETAGS"
+if test -n "$ETAGS"; then
+ echo "$ac_t""$ETAGS" 1>&6
+else
+ echo "$ac_t""no" 1>&6
+fi
+
+if test -z "$ETAGS"; then
+ # Extract the first word of "ctags", so it can be a program name with args.
+set dummy ctags; ac_word=$2
+echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
+echo "configure:785: checking for $ac_word" >&5
+if eval "test \"`echo '$''{'ac_cv_prog_ETAGS'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+else
+ if test -n "$ETAGS"; then
+ ac_cv_prog_ETAGS="$ETAGS" # Let the user override the test.
+else
+ IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":"
+ ac_dummy="$PATH"
+ for ac_dir in $ac_dummy; do
+ test -z "$ac_dir" && ac_dir=.
+ if test -f $ac_dir/$ac_word; then
+ ac_cv_prog_ETAGS="ctags -e"
+ break
+ fi
+ done
+ IFS="$ac_save_ifs"
+fi
+fi
+ETAGS="$ac_cv_prog_ETAGS"
+if test -n "$ETAGS"; then
+ echo "$ac_t""$ETAGS" 1>&6
+else
+ echo "$ac_t""no" 1>&6
+fi
+
+fi
+if test -n "$ETAGS"; then
+ echo $ac_n "checking whether ${ETAGS-etags} works""... $ac_c" 1>&6
+echo "configure:814: checking whether ${ETAGS-etags} works" >&5
+if eval "test \"`echo '$''{'am_cv_prog_etags_works'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+else
+ cat >conftest.c <<EOF
+int globalvar;
+EOF
+if { ac_try='${ETAGS-etags} -f - conftest.c |egrep ^int\ globalvar\; >&2'; { (eval echo configure:821: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; }; then
+ am_cv_prog_etags_works=yes
+else
+ am_cv_prog_etags_works=no
+fi
+rm -f conftest.c
+fi
+
+echo "$ac_t""$am_cv_prog_etags_works" 1>&6
+ if test "$am_cv_prog_etags_works" = yes ; then
+ if test "$am_cv_prog_etags_works" = yes ; then
+ echo $ac_n "checking for etags include option""... $ac_c" 1>&6
+echo "configure:833: checking for etags include option" >&5
+if eval "test \"`echo '$''{'am_cv_prog_etags_include_option'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+else
+ cat >conftest.c <<EOF
+int globalvar;
+EOF
+ if { ac_try='${ETAGS-etags} --etags-include=TAGS.inc -f - conftest.c |egrep ^TAGS.inc,include\$ >&2'; { (eval echo configure:840: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; }; then
+ am_cv_prog_etags_include_option=--etags-include=
+ elif { ac_try='${ETAGS-etags} -i TAGS.inc -f - conftest.c |egrep ^TAGS.inc,include\$ >&2'; { (eval echo configure:842: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; }; then
+ am_cv_prog_etags_include_option='"-i "'
+ else :
+ # AC_MSG_ERROR(unfamiliar etags implementation)
+ fi
+ rm -f conftest.c
+fi
+
+echo "$ac_t""$am_cv_prog_etags_include_option" 1>&6
+else
+ :
+fi
+ETAGS_INCLUDE_OPTION="$am_cv_prog_etags_include_option"
+
+ else
+
+ETAGS=${ETAGS-"${am_missing_run}etags"}
+
+ fi
+else
+
+ETAGS=${ETAGS-"${am_missing_run}etags"}
+
+fi
+# Check whether --enable-dependency-tracking or --disable-dependency-tracking was given.
+if test "${enable_dependency_tracking+set}" = set; then
+ enableval="$enable_dependency_tracking"
+ :
+fi
+
+if test "x$enable_dependency_tracking" != xno; then
+ am_depcomp="$ac_aux_dir/depcomp"
+ AMDEPBACKSLASH='\'
+fi
+
+
+if test "x$enable_dependency_tracking" != xno; then
+ AMDEP_TRUE=
+ AMDEP_FALSE='#'
+else
+ AMDEP_TRUE='#'
+ AMDEP_FALSE=
+fi
+
+
+
+
+if test -d .deps || mkdir .deps 2> /dev/null || test -d .deps; then
+ DEPDIR=.deps
+ # We redirect because .deps might already exist and be populated.
+ # In this situation we don't want to see an error.
+ rmdir .deps > /dev/null 2>&1
+else
+ DEPDIR=_deps
+fi
+
+
+# test to see if srcdir already configured
+if test "`CDPATH=:; cd $srcdir && pwd`" != "`pwd`" &&
+ test -f $srcdir/config.status; then
+ { echo "configure: error: source directory already configured; run \"make distclean\" there first" 1>&2; exit 1; }
+fi
+
+# Define the identity of the package.
+PACKAGE=cvs
+VERSION=1.11.1p1
+cat >> confdefs.h <<EOF
+#define PACKAGE "$PACKAGE"
+EOF
+
+cat >> confdefs.h <<EOF
+#define VERSION "$VERSION"
+EOF
+
+
+# Autoconf 2.50 wants to disallow AM_ names. We explicitly allow
+# the ones we care about.
+
+# Some tools Automake needs.
+
+ACLOCAL=${ACLOCAL-"${am_missing_run}aclocal"}
+
+
+AUTOCONF=${AUTOCONF-"${am_missing_run}autoconf"}
+
+
+AUTOMAKE=${AUTOMAKE-"${am_missing_run}automake"}
+
+
+AUTOHEADER=${AUTOHEADER-"${am_missing_run}autoheader"}
+
+
+MAKEINFO=${MAKEINFO-"${am_missing_run}makeinfo"}
+
+
+AMTAR=${AMTAR-"${am_missing_run}tar"}
+
+
+if test -z "$install_sh"; then
+ for install_sh in "$ac_aux_dir/install-sh" \
+ "$ac_aux_dir/install.sh" \
+ "${am_missing_run}${ac_auxdir}/install-sh";
+ do
+ test -f "$install_sh" && break
+ done
+ # FIXME: an evil hack: we remove the SHELL invocation from
+ # install_sh because automake adds it back in. Sigh.
+ install_sh=`echo $install_sh | sed -e 's/\${SHELL}//'`
+fi
+
+
+# We'd like to do this but we can't because it will unconditionally
+# require config.guess. One way would be if autoconf had the capability
+# to let us compile in this code only when config.guess was already
+# a possibility.
+#if test "$cross_compiling" != no; then
+# # since we are cross-compiling, we need to check for a suitable `strip'
+# AM_PROG_STRIP
+# if test -z "$STRIP"; then
+# AC_MSG_WARN([strip missing, install-strip will not strip binaries])
+# fi
+#fi
+
+# If $STRIP is defined (either by the user, or by AM_PROG_STRIP),
+# instruct install-strip to use install-sh and the given $STRIP program.
+# Otherwise, just use ${INSTALL}: the idea is to use the vendor install
+# as much as possible, because it's faster.
+if test -z "$STRIP"; then
+ # The top level make will set INSTALL_PROGRAM=$(INSTALL_STRIP_PROGRAM)
+ # and the double dolard below is there to make sure that ${INSTALL}
+ # is substitued in the sub-makes, not at the top-level; this is
+ # needed if ${INSTALL} is a relative path (ajusted in each subdirectory
+ # by config.status).
+ INSTALL_STRIP_PROGRAM='$${INSTALL} -s'
+ INSTALL_STRIP_PROGRAM_ENV=''
+else
+ _am_dirpart="`echo $install_sh | sed -e 's,//*[^/]*$,,'`"
+ INSTALL_STRIP_PROGRAM="\${SHELL} \`CDPATH=: && cd $_am_dirpart && pwd\`/install-sh -c -s"
+ INSTALL_STRIP_PROGRAM_ENV="STRIPPROG='\$(STRIP)'"
+fi
+
+
+
+# We need awk for the "check" target. The system "awk" is bad on
+# some platforms.
+
if test "x$prefix" = xNONE; then
echo $ac_n "checking for prefix by $ac_c" 1>&6
# Extract the first word of "cvs", so it can be a program name with args.
set dummy cvs; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:544: checking for $ac_word" >&5
+echo "configure:994: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_path_CVS'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -577,14 +1027,16 @@ fi
fi
fi
-AM_CONFIG_HEADER(config.h src/options.h)
+
+
+
for ac_prog in mawk gawk nawk awk
do
# Extract the first word of "$ac_prog", so it can be a program name with args.
set dummy $ac_prog; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:588: checking for $ac_word" >&5
+echo "configure:1040: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_prog_AWK'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -616,7 +1068,7 @@ done
# Extract the first word of "gcc", so it can be a program name with args.
set dummy gcc; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:620: checking for $ac_word" >&5
+echo "configure:1072: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -646,7 +1098,7 @@ if test -z "$CC"; then
# Extract the first word of "cc", so it can be a program name with args.
set dummy cc; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:650: checking for $ac_word" >&5
+echo "configure:1102: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -697,7 +1149,7 @@ fi
# Extract the first word of "cl", so it can be a program name with args.
set dummy cl; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:701: checking for $ac_word" >&5
+echo "configure:1153: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -729,7 +1181,7 @@ fi
fi
echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works""... $ac_c" 1>&6
-echo "configure:733: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5
+echo "configure:1185: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5
ac_ext=c
# CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options.
@@ -740,12 +1192,12 @@ cross_compiling=$ac_cv_prog_cc_cross
cat > conftest.$ac_ext << EOF
-#line 744 "configure"
+#line 1196 "configure"
#include "confdefs.h"
main(){return(0);}
EOF
-if { (eval echo configure:749: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:1201: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
ac_cv_prog_cc_works=yes
# If we can't run a trivial program, we are probably using a cross compiler.
if (./conftest; exit) 2>/dev/null; then
@@ -771,12 +1223,12 @@ if test $ac_cv_prog_cc_works = no; then
{ echo "configure: error: installation or configuration problem: C compiler cannot create executables." 1>&2; exit 1; }
fi
echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler""... $ac_c" 1>&6
-echo "configure:775: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5
+echo "configure:1227: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5
echo "$ac_t""$ac_cv_prog_cc_cross" 1>&6
cross_compiling=$ac_cv_prog_cc_cross
echo $ac_n "checking whether we are using GNU C""... $ac_c" 1>&6
-echo "configure:780: checking whether we are using GNU C" >&5
+echo "configure:1232: checking whether we are using GNU C" >&5
if eval "test \"`echo '$''{'ac_cv_prog_gcc'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -785,7 +1237,7 @@ else
yes;
#endif
EOF
-if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:789: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then
+if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:1241: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then
ac_cv_prog_gcc=yes
else
ac_cv_prog_gcc=no
@@ -804,7 +1256,7 @@ ac_test_CFLAGS="${CFLAGS+set}"
ac_save_CFLAGS="$CFLAGS"
CFLAGS=
echo $ac_n "checking whether ${CC-cc} accepts -g""... $ac_c" 1>&6
-echo "configure:808: checking whether ${CC-cc} accepts -g" >&5
+echo "configure:1260: checking whether ${CC-cc} accepts -g" >&5
if eval "test \"`echo '$''{'ac_cv_prog_cc_g'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -835,24 +1287,186 @@ else
fi
fi
-ac_aux_dir=
-for ac_dir in $srcdir $srcdir/.. $srcdir/../..; do
- if test -f $ac_dir/install-sh; then
- ac_aux_dir=$ac_dir
- ac_install_sh="$ac_aux_dir/install-sh -c"
- break
- elif test -f $ac_dir/install.sh; then
- ac_aux_dir=$ac_dir
- ac_install_sh="$ac_aux_dir/install.sh -c"
- break
- fi
-done
-if test -z "$ac_aux_dir"; then
- { echo "configure: error: can not find install-sh or install.sh in $srcdir $srcdir/.. $srcdir/../.." 1>&2; exit 1; }
+
+echo $ac_n "checking how to run the C preprocessor""... $ac_c" 1>&6
+echo "configure:1293: checking how to run the C preprocessor" >&5
+# On Suns, sometimes $CPP names a directory.
+if test -n "$CPP" && test -d "$CPP"; then
+ CPP=
fi
-ac_config_guess=$ac_aux_dir/config.guess
-ac_config_sub=$ac_aux_dir/config.sub
-ac_configure=$ac_aux_dir/configure # This should be Cygnus configure.
+if test -z "$CPP"; then
+if eval "test \"`echo '$''{'ac_cv_prog_CPP'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+else
+ # This must be in double quotes, not single quotes, because CPP may get
+ # substituted into the Makefile and "${CC-cc}" will confuse make.
+ CPP="${CC-cc} -E"
+ # On the NeXT, cc -E runs the code through the compiler's parser,
+ # not just through cpp.
+ cat > conftest.$ac_ext <<EOF
+#line 1308 "configure"
+#include "confdefs.h"
+#include <assert.h>
+Syntax Error
+EOF
+ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
+{ (eval echo configure:1314: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
+if test -z "$ac_err"; then
+ :
+else
+ echo "$ac_err" >&5
+ echo "configure: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ rm -rf conftest*
+ CPP="${CC-cc} -E -traditional-cpp"
+ cat > conftest.$ac_ext <<EOF
+#line 1325 "configure"
+#include "confdefs.h"
+#include <assert.h>
+Syntax Error
+EOF
+ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
+{ (eval echo configure:1331: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
+if test -z "$ac_err"; then
+ :
+else
+ echo "$ac_err" >&5
+ echo "configure: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ rm -rf conftest*
+ CPP="${CC-cc} -nologo -E"
+ cat > conftest.$ac_ext <<EOF
+#line 1342 "configure"
+#include "confdefs.h"
+#include <assert.h>
+Syntax Error
+EOF
+ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
+{ (eval echo configure:1348: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
+if test -z "$ac_err"; then
+ :
+else
+ echo "$ac_err" >&5
+ echo "configure: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ rm -rf conftest*
+ CPP=/lib/cpp
+fi
+rm -f conftest*
+fi
+rm -f conftest*
+fi
+rm -f conftest*
+ ac_cv_prog_CPP="$CPP"
+fi
+ CPP="$ac_cv_prog_CPP"
+else
+ ac_cv_prog_CPP="$CPP"
+fi
+echo "$ac_t""$CPP" 1>&6
+
+am_make=${MAKE-make}
+cat > confinc << 'END'
+doit:
+ @echo done
+END
+# If we don't find an include directive, just comment out the code.
+echo $ac_n "checking for style of include used by $am_make""... $ac_c" 1>&6
+echo "configure:1379: checking for style of include used by $am_make" >&5
+_am_include='#'
+_am_quote=
+_am_result=none
+# First try GNU make style include.
+echo "include confinc" > confmf
+if test "`$am_make -s -f confmf 2> /dev/null`" = "done"; then
+ _am_include=include
+ _am_quote=
+ _am_result=GNU
+fi
+# Now try BSD make style include.
+if test "$_am_include" = "#"; then
+ echo '.include "confinc"' > confmf
+ if test "`$am_make -s -f confmf 2> /dev/null`" = "done"; then
+ _am_include=.include
+ _am_quote='"'
+ _am_result=BSD
+ fi
+fi
+
+
+echo "$ac_t""$_am_result" 1>&6
+rm -f confinc confmf
+
+
+depcc="$CC"
+depcpp="$CPP"
+
+
+
+echo $ac_n "checking dependency style of $depcc""... $ac_c" 1>&6
+echo "configure:1411: checking dependency style of $depcc" >&5
+if eval "test \"`echo '$''{'am_cv_CC_dependencies_compiler_type'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+else
+ if test -z "$AMDEP"; then
+ # We make a subdir and do the tests there. Otherwise we can end up
+ # making bogus files that we don't know about and never remove. For
+ # instance it was reported that on HP-UX the gcc test will end up
+ # making a dummy file named `D' -- because `-MD' means `put the output
+ # in D'.
+ mkdir confdir
+ # Copy depcomp to subdir because otherwise we won't find it if we're
+ # using a relative directory.
+ cp "$am_depcomp" confdir
+ cd confdir
+
+ am_cv_CC_dependencies_compiler_type=none
+ for depmode in `sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < "./depcomp"`; do
+ # We need to recreate these files for each test, as the compiler may
+ # overwrite some of them when testing with obscure command lines.
+ # This happens at least with the AIX C compiler.
+ echo '#include "conftest.h"' > conftest.c
+ echo 'int i;' > conftest.h
+
+ case "$depmode" in
+ nosideeffect)
+ # after this tag, mechanisms are not by side-effect, so they'll
+ # only be used when explicitly requested
+ if test "x$enable_dependency_tracking" = xyes; then
+ continue
+ else
+ break
+ fi
+ ;;
+ none) break ;;
+ esac
+ # We check with `-c' and `-o' for the sake of the "dashmstdout"
+ # mode. It turns out that the SunPro C++ compiler does not properly
+ # handle `-M -o', and we need to detect this.
+ if depmode="$depmode" \
+ source=conftest.c object=conftest.o \
+ depfile=conftest.Po tmpdepfile=conftest.TPo \
+ $SHELL ./depcomp $depcc -c conftest.c -o conftest.o >/dev/null 2>&1 &&
+ grep conftest.h conftest.Po > /dev/null 2>&1; then
+ am_cv_CC_dependencies_compiler_type="$depmode"
+ break
+ fi
+ done
+
+ cd ..
+ rm -rf confdir
+else
+ am_cv_CC_dependencies_compiler_type=none
+fi
+
+fi
+
+echo "$ac_t""$am_cv_CC_dependencies_compiler_type" 1>&6
+CCDEPMODE="depmode=$am_cv_CC_dependencies_compiler_type"
+
# Find a good install program. We prefer a C program (faster),
# so one script is as good as another. But avoid the broken or
@@ -866,7 +1480,7 @@ ac_configure=$ac_aux_dir/configure # This should be Cygnus configure.
# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff"
# ./install, which can be erroneously created by make from ./install.sh.
echo $ac_n "checking for a BSD compatible install""... $ac_c" 1>&6
-echo "configure:870: checking for a BSD compatible install" >&5
+echo "configure:1484: checking for a BSD compatible install" >&5
if test -z "$INSTALL"; then
if eval "test \"`echo '$''{'ac_cv_path_install'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
@@ -919,7 +1533,7 @@ test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL_PROGRAM}'
test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644'
echo $ac_n "checking whether ${MAKE-make} sets \${MAKE}""... $ac_c" 1>&6
-echo "configure:923: checking whether ${MAKE-make} sets \${MAKE}" >&5
+echo "configure:1537: checking whether ${MAKE-make} sets \${MAKE}" >&5
set dummy ${MAKE-make}; ac_make=`echo "$2" | sed 'y%./+-%__p_%'`
if eval "test \"`echo '$''{'ac_cv_prog_make_${ac_make}_set'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
@@ -949,7 +1563,7 @@ fi
# Extract the first word of "ranlib", so it can be a program name with args.
set dummy ranlib; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:953: checking for $ac_word" >&5
+echo "configure:1567: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_prog_RANLIB'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -981,7 +1595,7 @@ do
# Extract the first word of "$ac_prog", so it can be a program name with args.
set dummy $ac_prog; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:985: checking for $ac_word" >&5
+echo "configure:1599: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_prog_YACC'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -1012,7 +1626,7 @@ done
test -n "$YACC" || YACC="yacc"
echo $ac_n "checking whether ln -s works""... $ac_c" 1>&6
-echo "configure:1016: checking whether ln -s works" >&5
+echo "configure:1630: checking whether ln -s works" >&5
if eval "test \"`echo '$''{'ac_cv_prog_LN_S'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -1036,7 +1650,7 @@ fi
# Extract the first word of "perl", so it can be a program name with args.
set dummy perl; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:1040: checking for $ac_word" >&5
+echo "configure:1654: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_path_PERL'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -1072,7 +1686,7 @@ fi
# Extract the first word of "csh", so it can be a program name with args.
set dummy csh; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:1076: checking for $ac_word" >&5
+echo "configure:1690: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_path_CSH'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -1108,7 +1722,7 @@ fi
# Extract the first word of "pr", so it can be a program name with args.
set dummy pr; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:1112: checking for $ac_word" >&5
+echo "configure:1726: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_path_PR'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -1156,7 +1770,7 @@ do
# Extract the first word of "$ac_prog", so it can be a program name with args.
set dummy $ac_prog; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:1160: checking for $ac_word" >&5
+echo "configure:1774: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_path_ROFF'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -1195,7 +1809,7 @@ test -n "$ROFF" || ROFF="$missing_dir/missing roff"
# Extract the first word of "ps2pdf", so it can be a program name with args.
set dummy ps2pdf; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:1199: checking for $ac_word" >&5
+echo "configure:1813: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_path_PS2PDF'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -1231,7 +1845,7 @@ fi
# Extract the first word of "texi2dvi", so it can be a program name with args.
set dummy texi2dvi; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:1235: checking for $ac_word" >&5
+echo "configure:1849: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_path_TEXI2DVI'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -1268,7 +1882,7 @@ fi
# Pull the hash mark out of the macro call to avoid m4 problems.
ac_msg="whether #! works in shell scripts"
echo $ac_n "checking $ac_msg""... $ac_c" 1>&6
-echo "configure:1272: checking $ac_msg" >&5
+echo "configure:1886: checking $ac_msg" >&5
if eval "test \"`echo '$''{'ac_cv_sys_interpreter'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -1296,12 +1910,12 @@ fi
# BSD's logo is a devil for a reason, hey?
echo $ac_n "checking for BSD VPATH bug in make""... $ac_c" 1>&6
-echo "configure:1300: checking for BSD VPATH bug in make" >&5
+echo "configure:1914: checking for BSD VPATH bug in make" >&5
if eval "test \"`echo '$''{'ccvs_cv_bsd_make_vpath_bug'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
if test ! -d ac_test_dir ; then
- { ac_try='mkdir ac_test_dir'; { (eval echo configure:1305: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; }
+ { ac_try='mkdir ac_test_dir'; { (eval echo configure:1919: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; }
fi
cat >conftestmake <<EOF
VPATH = ac_test_dir
@@ -1315,104 +1929,32 @@ touch ac_test_target
# Don't know why, but the following test doesn't work under FreeBSD 4.2
# without this sleep command
sleep 1
-if { ac_try='make -f conftestmake 2>&1 >/dev/null |grep ^BSD\ VPATH\ bug\ present\$ >/dev/null'; { (eval echo configure:1319: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } ; then
+if { ac_try='make -f conftestmake 2>&1 >/dev/null |grep ^BSD\ VPATH\ bug\ present\$ >/dev/null'; { (eval echo configure:1933: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } ; then
ccvs_cv_bsd_make_vpath_bug=yes
else
ccvs_cv_bsd_make_vpath_bug=no
fi
-{ ac_try='rm -rf ac_test_dir ac_test_target conftestmake'; { (eval echo configure:1324: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; }
+{ ac_try='rm -rf ac_test_dir ac_test_target conftestmake'; { (eval echo configure:1938: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; }
fi
echo "$ac_t""$ccvs_cv_bsd_make_vpath_bug" 1>&6
# We also don't need to worry about the bug when $srcdir = $builddir
-AM_CONDITIONAL(MAKE_TARGETS_IN_VPATH, \
- test $ccvs_cv_bsd_make_vpath_bug = no \
- || test $srcdir = .)
-echo $ac_n "checking how to run the C preprocessor""... $ac_c" 1>&6
-echo "configure:1334: checking how to run the C preprocessor" >&5
-# On Suns, sometimes $CPP names a directory.
-if test -n "$CPP" && test -d "$CPP"; then
- CPP=
-fi
-if test -z "$CPP"; then
-if eval "test \"`echo '$''{'ac_cv_prog_CPP'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-else
- # This must be in double quotes, not single quotes, because CPP may get
- # substituted into the Makefile and "${CC-cc}" will confuse make.
- CPP="${CC-cc} -E"
- # On the NeXT, cc -E runs the code through the compiler's parser,
- # not just through cpp.
- cat > conftest.$ac_ext <<EOF
-#line 1349 "configure"
-#include "confdefs.h"
-#include <assert.h>
-Syntax Error
-EOF
-ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:1355: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
-ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
-if test -z "$ac_err"; then
- :
-else
- echo "$ac_err" >&5
- echo "configure: failed program was:" >&5
- cat conftest.$ac_ext >&5
- rm -rf conftest*
- CPP="${CC-cc} -E -traditional-cpp"
- cat > conftest.$ac_ext <<EOF
-#line 1366 "configure"
-#include "confdefs.h"
-#include <assert.h>
-Syntax Error
-EOF
-ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:1372: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
-ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
-if test -z "$ac_err"; then
- :
-else
- echo "$ac_err" >&5
- echo "configure: failed program was:" >&5
- cat conftest.$ac_ext >&5
- rm -rf conftest*
- CPP="${CC-cc} -nologo -E"
- cat > conftest.$ac_ext <<EOF
-#line 1383 "configure"
-#include "confdefs.h"
-#include <assert.h>
-Syntax Error
-EOF
-ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:1389: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
-ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
-if test -z "$ac_err"; then
- :
-else
- echo "$ac_err" >&5
- echo "configure: failed program was:" >&5
- cat conftest.$ac_ext >&5
- rm -rf conftest*
- CPP=/lib/cpp
-fi
-rm -f conftest*
-fi
-rm -f conftest*
-fi
-rm -f conftest*
- ac_cv_prog_CPP="$CPP"
-fi
- CPP="$ac_cv_prog_CPP"
+
+if \
+ test $ccvs_cv_bsd_make_vpath_bug = no \
+ || test $srcdir = .; then
+ MAKE_TARGETS_IN_VPATH_TRUE=
+ MAKE_TARGETS_IN_VPATH_FALSE='#'
else
- ac_cv_prog_CPP="$CPP"
+ MAKE_TARGETS_IN_VPATH_TRUE='#'
+ MAKE_TARGETS_IN_VPATH_FALSE=
fi
-echo "$ac_t""$CPP" 1>&6
echo $ac_n "checking for AIX""... $ac_c" 1>&6
-echo "configure:1414: checking for AIX" >&5
+echo "configure:1956: checking for AIX" >&5
cat > conftest.$ac_ext <<EOF
-#line 1416 "configure"
+#line 1958 "configure"
#include "confdefs.h"
#ifdef _AIX
yes
@@ -1435,17 +1977,17 @@ rm -f conftest*
ac_safe=`echo "minix/config.h" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for minix/config.h""... $ac_c" 1>&6
-echo "configure:1439: checking for minix/config.h" >&5
+echo "configure:1981: checking for minix/config.h" >&5
if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 1444 "configure"
+#line 1986 "configure"
#include "confdefs.h"
#include <minix/config.h>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:1449: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:1991: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
if test -z "$ac_err"; then
rm -rf conftest*
@@ -1483,7 +2025,7 @@ EOF
fi
echo $ac_n "checking for POSIXized ISC""... $ac_c" 1>&6
-echo "configure:1487: checking for POSIXized ISC" >&5
+echo "configure:2029: checking for POSIXized ISC" >&5
if test -d /etc/conf/kconfig.d &&
grep _POSIX_VERSION /usr/include/sys/unistd.h >/dev/null 2>&1
then
@@ -1513,12 +2055,12 @@ for ac_hdr in dirent.h sys/ndir.h sys/dir.h ndir.h
do
ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for $ac_hdr that defines DIR""... $ac_c" 1>&6
-echo "configure:1517: checking for $ac_hdr that defines DIR" >&5
+echo "configure:2059: checking for $ac_hdr that defines DIR" >&5
if eval "test \"`echo '$''{'ac_cv_header_dirent_$ac_safe'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 1522 "configure"
+#line 2064 "configure"
#include "confdefs.h"
#include <sys/types.h>
#include <$ac_hdr>
@@ -1526,7 +2068,7 @@ int main() {
DIR *dirp = 0;
; return 0; }
EOF
-if { (eval echo configure:1530: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:2072: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
eval "ac_cv_header_dirent_$ac_safe=yes"
else
@@ -1551,7 +2093,7 @@ done
# Two versions of opendir et al. are in -ldir and -lx on SCO Xenix.
if test $ac_header_dirent = dirent.h; then
echo $ac_n "checking for opendir in -ldir""... $ac_c" 1>&6
-echo "configure:1555: checking for opendir in -ldir" >&5
+echo "configure:2097: checking for opendir in -ldir" >&5
ac_lib_var=`echo dir'_'opendir | sed 'y%./+-%__p_%'`
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
@@ -1559,7 +2101,7 @@ else
ac_save_LIBS="$LIBS"
LIBS="-ldir $LIBS"
cat > conftest.$ac_ext <<EOF
-#line 1563 "configure"
+#line 2105 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
@@ -1570,7 +2112,7 @@ int main() {
opendir()
; return 0; }
EOF
-if { (eval echo configure:1574: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2116: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_lib_$ac_lib_var=yes"
else
@@ -1592,7 +2134,7 @@ fi
else
echo $ac_n "checking for opendir in -lx""... $ac_c" 1>&6
-echo "configure:1596: checking for opendir in -lx" >&5
+echo "configure:2138: checking for opendir in -lx" >&5
ac_lib_var=`echo x'_'opendir | sed 'y%./+-%__p_%'`
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
@@ -1600,7 +2142,7 @@ else
ac_save_LIBS="$LIBS"
LIBS="-lx $LIBS"
cat > conftest.$ac_ext <<EOF
-#line 1604 "configure"
+#line 2146 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
@@ -1611,7 +2153,7 @@ int main() {
opendir()
; return 0; }
EOF
-if { (eval echo configure:1615: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2157: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_lib_$ac_lib_var=yes"
else
@@ -1634,12 +2176,12 @@ fi
fi
echo $ac_n "checking for ANSI C header files""... $ac_c" 1>&6
-echo "configure:1638: checking for ANSI C header files" >&5
+echo "configure:2180: checking for ANSI C header files" >&5
if eval "test \"`echo '$''{'ac_cv_header_stdc'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 1643 "configure"
+#line 2185 "configure"
#include "confdefs.h"
#include <stdlib.h>
#include <stdarg.h>
@@ -1647,7 +2189,7 @@ else
#include <float.h>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:1651: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:2193: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
if test -z "$ac_err"; then
rm -rf conftest*
@@ -1664,7 +2206,7 @@ rm -f conftest*
if test $ac_cv_header_stdc = yes; then
# SunOS 4.x string.h does not declare mem*, contrary to ANSI.
cat > conftest.$ac_ext <<EOF
-#line 1668 "configure"
+#line 2210 "configure"
#include "confdefs.h"
#include <string.h>
EOF
@@ -1682,7 +2224,7 @@ fi
if test $ac_cv_header_stdc = yes; then
# ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI.
cat > conftest.$ac_ext <<EOF
-#line 1686 "configure"
+#line 2228 "configure"
#include "confdefs.h"
#include <stdlib.h>
EOF
@@ -1703,7 +2245,7 @@ if test "$cross_compiling" = yes; then
:
else
cat > conftest.$ac_ext <<EOF
-#line 1707 "configure"
+#line 2249 "configure"
#include "confdefs.h"
#include <ctype.h>
#define ISLOWER(c) ('a' <= (c) && (c) <= 'z')
@@ -1714,7 +2256,7 @@ if (XOR (islower (i), ISLOWER (i)) || toupper (i) != TOUPPER (i)) exit(2);
exit (0); }
EOF
-if { (eval echo configure:1718: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:2260: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
then
:
else
@@ -1738,12 +2280,12 @@ EOF
fi
echo $ac_n "checking for sys/wait.h that is POSIX.1 compatible""... $ac_c" 1>&6
-echo "configure:1742: checking for sys/wait.h that is POSIX.1 compatible" >&5
+echo "configure:2284: checking for sys/wait.h that is POSIX.1 compatible" >&5
if eval "test \"`echo '$''{'ac_cv_header_sys_wait_h'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 1747 "configure"
+#line 2289 "configure"
#include "confdefs.h"
#include <sys/types.h>
#include <sys/wait.h>
@@ -1759,7 +2301,7 @@ wait (&s);
s = WIFEXITED (s) ? WEXITSTATUS (s) : 1;
; return 0; }
EOF
-if { (eval echo configure:1763: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:2305: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
ac_cv_header_sys_wait_h=yes
else
@@ -1786,17 +2328,17 @@ for ac_hdr in errno.h unistd.h string.h memory.h utime.h fcntl.h ndbm.h \
do
ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:1790: checking for $ac_hdr" >&5
+echo "configure:2332: checking for $ac_hdr" >&5
if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 1795 "configure"
+#line 2337 "configure"
#include "confdefs.h"
#include <$ac_hdr>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:1800: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:2342: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
if test -z "$ac_err"; then
rm -rf conftest*
@@ -1823,12 +2365,12 @@ fi
done
echo $ac_n "checking whether stat file-mode macros are broken""... $ac_c" 1>&6
-echo "configure:1827: checking whether stat file-mode macros are broken" >&5
+echo "configure:2369: checking whether stat file-mode macros are broken" >&5
if eval "test \"`echo '$''{'ac_cv_header_stat_broken'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 1832 "configure"
+#line 2374 "configure"
#include "confdefs.h"
#include <sys/types.h>
#include <sys/stat.h>
@@ -1879,12 +2421,12 @@ EOF
fi
echo $ac_n "checking whether time.h and sys/time.h may both be included""... $ac_c" 1>&6
-echo "configure:1883: checking whether time.h and sys/time.h may both be included" >&5
+echo "configure:2425: checking whether time.h and sys/time.h may both be included" >&5
if eval "test \"`echo '$''{'ac_cv_header_time'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 1888 "configure"
+#line 2430 "configure"
#include "confdefs.h"
#include <sys/types.h>
#include <sys/time.h>
@@ -1893,7 +2435,7 @@ int main() {
struct tm *tp;
; return 0; }
EOF
-if { (eval echo configure:1897: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:2439: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
ac_cv_header_time=yes
else
@@ -1915,12 +2457,12 @@ fi
echo $ac_n "checking for working const""... $ac_c" 1>&6
-echo "configure:1919: checking for working const" >&5
+echo "configure:2461: checking for working const" >&5
if eval "test \"`echo '$''{'ac_cv_c_const'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 1924 "configure"
+#line 2466 "configure"
#include "confdefs.h"
int main() {
@@ -1969,7 +2511,7 @@ ccp = (char const *const *) p;
; return 0; }
EOF
-if { (eval echo configure:1973: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:2515: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
ac_cv_c_const=yes
else
@@ -1990,12 +2532,12 @@ EOF
fi
echo $ac_n "checking for uid_t in sys/types.h""... $ac_c" 1>&6
-echo "configure:1994: checking for uid_t in sys/types.h" >&5
+echo "configure:2536: checking for uid_t in sys/types.h" >&5
if eval "test \"`echo '$''{'ac_cv_type_uid_t'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 1999 "configure"
+#line 2541 "configure"
#include "confdefs.h"
#include <sys/types.h>
EOF
@@ -2024,12 +2566,12 @@ EOF
fi
echo $ac_n "checking for mode_t""... $ac_c" 1>&6
-echo "configure:2028: checking for mode_t" >&5
+echo "configure:2570: checking for mode_t" >&5
if eval "test \"`echo '$''{'ac_cv_type_mode_t'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 2033 "configure"
+#line 2575 "configure"
#include "confdefs.h"
#include <sys/types.h>
#if STDC_HEADERS
@@ -2057,12 +2599,12 @@ EOF
fi
echo $ac_n "checking for pid_t""... $ac_c" 1>&6
-echo "configure:2061: checking for pid_t" >&5
+echo "configure:2603: checking for pid_t" >&5
if eval "test \"`echo '$''{'ac_cv_type_pid_t'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 2066 "configure"
+#line 2608 "configure"
#include "confdefs.h"
#include <sys/types.h>
#if STDC_HEADERS
@@ -2090,12 +2632,12 @@ EOF
fi
echo $ac_n "checking for size_t""... $ac_c" 1>&6
-echo "configure:2094: checking for size_t" >&5
+echo "configure:2636: checking for size_t" >&5
if eval "test \"`echo '$''{'ac_cv_type_size_t'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 2099 "configure"
+#line 2641 "configure"
#include "confdefs.h"
#include <sys/types.h>
#if STDC_HEADERS
@@ -2123,12 +2665,12 @@ EOF
fi
echo $ac_n "checking return type of signal handlers""... $ac_c" 1>&6
-echo "configure:2127: checking return type of signal handlers" >&5
+echo "configure:2669: checking return type of signal handlers" >&5
if eval "test \"`echo '$''{'ac_cv_type_signal'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 2132 "configure"
+#line 2674 "configure"
#include "confdefs.h"
#include <sys/types.h>
#include <signal.h>
@@ -2145,7 +2687,7 @@ int main() {
int i;
; return 0; }
EOF
-if { (eval echo configure:2149: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:2691: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
ac_cv_type_signal=void
else
@@ -2165,12 +2707,12 @@ EOF
echo $ac_n "checking for st_blksize in struct stat""... $ac_c" 1>&6
-echo "configure:2169: checking for st_blksize in struct stat" >&5
+echo "configure:2711: checking for st_blksize in struct stat" >&5
if eval "test \"`echo '$''{'ac_cv_struct_st_blksize'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 2174 "configure"
+#line 2716 "configure"
#include "confdefs.h"
#include <sys/types.h>
#include <sys/stat.h>
@@ -2178,7 +2720,7 @@ int main() {
struct stat s; s.st_blksize;
; return 0; }
EOF
-if { (eval echo configure:2182: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:2724: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
ac_cv_struct_st_blksize=yes
else
@@ -2199,12 +2741,12 @@ EOF
fi
echo $ac_n "checking for st_rdev in struct stat""... $ac_c" 1>&6
-echo "configure:2203: checking for st_rdev in struct stat" >&5
+echo "configure:2745: checking for st_rdev in struct stat" >&5
if eval "test \"`echo '$''{'ac_cv_struct_st_rdev'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 2208 "configure"
+#line 2750 "configure"
#include "confdefs.h"
#include <sys/types.h>
#include <sys/stat.h>
@@ -2212,7 +2754,7 @@ int main() {
struct stat s; s.st_rdev;
; return 0; }
EOF
-if { (eval echo configure:2216: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:2758: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
ac_cv_struct_st_rdev=yes
else
@@ -2235,12 +2777,12 @@ fi
for ac_func in mkdir rename strstr dup2 strerror valloc waitpid memmove strtoul
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:2239: checking for $ac_func" >&5
+echo "configure:2781: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 2244 "configure"
+#line 2786 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -2263,7 +2805,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:2267: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2809: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@@ -2318,12 +2860,12 @@ for ac_func in \
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:2322: checking for $ac_func" >&5
+echo "configure:2864: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 2327 "configure"
+#line 2869 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -2346,7 +2888,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:2350: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2892: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@@ -2378,12 +2920,12 @@ for ac_func in \
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:2382: checking for $ac_func" >&5
+echo "configure:2924: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 2387 "configure"
+#line 2929 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -2406,7 +2948,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:2410: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2952: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@@ -2450,17 +2992,17 @@ EOF
ac_safe=`echo "vfork.h" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for vfork.h""... $ac_c" 1>&6
-echo "configure:2454: checking for vfork.h" >&5
+echo "configure:2996: checking for vfork.h" >&5
if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 2459 "configure"
+#line 3001 "configure"
#include "confdefs.h"
#include <vfork.h>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:2464: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:3006: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
if test -z "$ac_err"; then
rm -rf conftest*
@@ -2485,18 +3027,18 @@ else
fi
echo $ac_n "checking for working vfork""... $ac_c" 1>&6
-echo "configure:2489: checking for working vfork" >&5
+echo "configure:3031: checking for working vfork" >&5
if eval "test \"`echo '$''{'ac_cv_func_vfork_works'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
if test "$cross_compiling" = yes; then
echo $ac_n "checking for vfork""... $ac_c" 1>&6
-echo "configure:2495: checking for vfork" >&5
+echo "configure:3037: checking for vfork" >&5
if eval "test \"`echo '$''{'ac_cv_func_vfork'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 2500 "configure"
+#line 3042 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char vfork(); below. */
@@ -2519,7 +3061,7 @@ vfork();
; return 0; }
EOF
-if { (eval echo configure:2523: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3065: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_vfork=yes"
else
@@ -2541,7 +3083,7 @@ fi
ac_cv_func_vfork_works=$ac_cv_func_vfork
else
cat > conftest.$ac_ext <<EOF
-#line 2545 "configure"
+#line 3087 "configure"
#include "confdefs.h"
/* Thanks to Paul Eggert for this test. */
#include <stdio.h>
@@ -2636,7 +3178,7 @@ main() {
}
}
EOF
-if { (eval echo configure:2640: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:3182: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
then
ac_cv_func_vfork_works=yes
else
@@ -2659,7 +3201,7 @@ EOF
fi
echo $ac_n "checking whether closedir returns void""... $ac_c" 1>&6
-echo "configure:2663: checking whether closedir returns void" >&5
+echo "configure:3205: checking whether closedir returns void" >&5
if eval "test \"`echo '$''{'ac_cv_func_closedir_void'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -2667,13 +3209,13 @@ else
ac_cv_func_closedir_void=yes
else
cat > conftest.$ac_ext <<EOF
-#line 2671 "configure"
+#line 3213 "configure"
#include "confdefs.h"
#include <sys/types.h>
#include <$ac_header_dirent>
int closedir(); main() { exit(closedir(opendir(".")) != 0); }
EOF
-if { (eval echo configure:2677: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:3219: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
then
ac_cv_func_closedir_void=no
else
@@ -2698,14 +3240,14 @@ fi
echo $ac_n "checking for library containing getspnam""... $ac_c" 1>&6
-echo "configure:2702: checking for library containing getspnam" >&5
+echo "configure:3244: checking for library containing getspnam" >&5
if eval "test \"`echo '$''{'ac_cv_search_getspnam'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
ac_func_search_save_LIBS="$LIBS"
ac_cv_search_getspnam="no"
cat > conftest.$ac_ext <<EOF
-#line 2709 "configure"
+#line 3251 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
@@ -2716,7 +3258,7 @@ int main() {
getspnam()
; return 0; }
EOF
-if { (eval echo configure:2720: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3262: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
ac_cv_search_getspnam="none required"
else
@@ -2727,7 +3269,7 @@ rm -f conftest*
test "$ac_cv_search_getspnam" = "no" && for i in sec gen; do
LIBS="-l$i $ac_func_search_save_LIBS"
cat > conftest.$ac_ext <<EOF
-#line 2731 "configure"
+#line 3273 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
@@ -2738,7 +3280,7 @@ int main() {
getspnam()
; return 0; }
EOF
-if { (eval echo configure:2742: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3284: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
ac_cv_search_getspnam="-l$i"
break
@@ -2763,7 +3305,7 @@ else :
fi
echo $ac_n "checking for zlibVersion in -lz""... $ac_c" 1>&6
-echo "configure:2767: checking for zlibVersion in -lz" >&5
+echo "configure:3309: checking for zlibVersion in -lz" >&5
ac_lib_var=`echo z'_'zlibVersion | sed 'y%./+-%__p_%'`
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
@@ -2771,7 +3313,7 @@ else
ac_save_LIBS="$LIBS"
LIBS="-lz $LIBS"
cat > conftest.$ac_ext <<EOF
-#line 2775 "configure"
+#line 3317 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
@@ -2782,7 +3324,7 @@ int main() {
zlibVersion()
; return 0; }
EOF
-if { (eval echo configure:2786: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3328: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_lib_$ac_lib_var=yes"
else
@@ -2797,18 +3339,19 @@ LIBS="$ac_save_LIBS"
fi
if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then
echo "$ac_t""yes" 1>&6
- ZLIB=-lz
+ ZLIB=-lz ZLIB_DEPEND=/usr/lib/libz.a
else
echo "$ac_t""no" 1>&6
-ZLIBSUBDIRS=zlib ZLIB=$srcdir/zlib/libz.a ZLIB_INCLUDES=-I$srcdir/zlib
+ZLIBSUBDIRS=zlib ZLIB=$srcdir/zlib/libz.a ZLIB_DEPEND=$srcdir/zlib/libz.a ZLIB_INCLUDES=-I$srcdir/zlib
fi
+
echo $ac_n "checking whether utime accepts a null argument""... $ac_c" 1>&6
-echo "configure:2812: checking whether utime accepts a null argument" >&5
+echo "configure:3355: checking whether utime accepts a null argument" >&5
if eval "test \"`echo '$''{'ac_cv_func_utime_null'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -2818,7 +3361,7 @@ if test "$cross_compiling" = yes; then
ac_cv_func_utime_null=no
else
cat > conftest.$ac_ext <<EOF
-#line 2822 "configure"
+#line 3365 "configure"
#include "confdefs.h"
#include <sys/types.h>
#include <sys/stat.h>
@@ -2829,7 +3372,7 @@ exit(!(stat ("conftestdata", &s) == 0 && utime("conftestdata", (long *)0) == 0
&& t.st_mtime - s.st_mtime < 120));
}
EOF
-if { (eval echo configure:2833: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:3376: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
then
ac_cv_func_utime_null=yes
else
@@ -2853,7 +3396,7 @@ EOF
fi
echo $ac_n "checking for long file names""... $ac_c" 1>&6
-echo "configure:2857: checking for long file names" >&5
+echo "configure:3400: checking for long file names" >&5
if eval "test \"`echo '$''{'ac_cv_sys_long_file_names'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -2898,7 +3441,7 @@ fi
echo $ac_n "checking for working fnmatch""... $ac_c" 1>&6
-echo "configure:2902: checking for working fnmatch" >&5
+echo "configure:3445: checking for working fnmatch" >&5
if eval "test \"`echo '$''{'ac_cv_func_fnmatch_works'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -2909,11 +3452,11 @@ if test "$cross_compiling" = yes; then
ac_cv_func_fnmatch_works=no
else
cat > conftest.$ac_ext <<EOF
-#line 2913 "configure"
+#line 3456 "configure"
#include "confdefs.h"
main() { exit (fnmatch ("a*", "abc", 0) != 0); }
EOF
-if { (eval echo configure:2917: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:3460: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
then
ac_cv_func_fnmatch_works=yes
else
@@ -2941,7 +3484,7 @@ fi
# Try to find connect and gethostbyname.
echo $ac_n "checking for main in -lnsl""... $ac_c" 1>&6
-echo "configure:2945: checking for main in -lnsl" >&5
+echo "configure:3488: checking for main in -lnsl" >&5
ac_lib_var=`echo nsl'_'main | sed 'y%./+-%__p_%'`
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
@@ -2949,14 +3492,14 @@ else
ac_save_LIBS="$LIBS"
LIBS="-lnsl $LIBS"
cat > conftest.$ac_ext <<EOF
-#line 2953 "configure"
+#line 3496 "configure"
#include "confdefs.h"
int main() {
main()
; return 0; }
EOF
-if { (eval echo configure:2960: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3503: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_lib_$ac_lib_var=yes"
else
@@ -2973,14 +3516,14 @@ if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then
echo "$ac_t""yes" 1>&6
echo $ac_n "checking for library containing connect""... $ac_c" 1>&6
-echo "configure:2977: checking for library containing connect" >&5
+echo "configure:3520: checking for library containing connect" >&5
if eval "test \"`echo '$''{'ac_cv_search_connect'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
ac_func_search_save_LIBS="$LIBS"
ac_cv_search_connect="no"
cat > conftest.$ac_ext <<EOF
-#line 2984 "configure"
+#line 3527 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
@@ -2991,7 +3534,7 @@ int main() {
connect()
; return 0; }
EOF
-if { (eval echo configure:2995: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3538: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
ac_cv_search_connect="none required"
else
@@ -3002,7 +3545,7 @@ rm -f conftest*
test "$ac_cv_search_connect" = "no" && for i in xnet socket inet; do
LIBS="-l$i -lnsl $ac_func_search_save_LIBS"
cat > conftest.$ac_ext <<EOF
-#line 3006 "configure"
+#line 3549 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
@@ -3013,7 +3556,7 @@ int main() {
connect()
; return 0; }
EOF
-if { (eval echo configure:3017: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3560: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
ac_cv_search_connect="-l$i"
break
@@ -3040,14 +3583,14 @@ else
echo "$ac_t""no" 1>&6
echo $ac_n "checking for library containing connect""... $ac_c" 1>&6
-echo "configure:3044: checking for library containing connect" >&5
+echo "configure:3587: checking for library containing connect" >&5
if eval "test \"`echo '$''{'ac_cv_search_connect'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
ac_func_search_save_LIBS="$LIBS"
ac_cv_search_connect="no"
cat > conftest.$ac_ext <<EOF
-#line 3051 "configure"
+#line 3594 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
@@ -3058,7 +3601,7 @@ int main() {
connect()
; return 0; }
EOF
-if { (eval echo configure:3062: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3605: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
ac_cv_search_connect="none required"
else
@@ -3069,7 +3612,7 @@ rm -f conftest*
test "$ac_cv_search_connect" = "no" && for i in xnet socket inet; do
LIBS="-l$i $ac_func_search_save_LIBS"
cat > conftest.$ac_ext <<EOF
-#line 3073 "configure"
+#line 3616 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
@@ -3080,7 +3623,7 @@ int main() {
connect()
; return 0; }
EOF
-if { (eval echo configure:3084: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3627: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
ac_cv_search_connect="-l$i"
break
@@ -3107,14 +3650,14 @@ fi
echo $ac_n "checking for library containing gethostbyname""... $ac_c" 1>&6
-echo "configure:3111: checking for library containing gethostbyname" >&5
+echo "configure:3654: checking for library containing gethostbyname" >&5
if eval "test \"`echo '$''{'ac_cv_search_gethostbyname'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
ac_func_search_save_LIBS="$LIBS"
ac_cv_search_gethostbyname="no"
cat > conftest.$ac_ext <<EOF
-#line 3118 "configure"
+#line 3661 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
@@ -3125,7 +3668,7 @@ int main() {
gethostbyname()
; return 0; }
EOF
-if { (eval echo configure:3129: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3672: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
ac_cv_search_gethostbyname="none required"
else
@@ -3136,7 +3679,7 @@ rm -f conftest*
test "$ac_cv_search_gethostbyname" = "no" && for i in netinet nsl; do
LIBS="-l$i $ac_func_search_save_LIBS"
cat > conftest.$ac_ext <<EOF
-#line 3140 "configure"
+#line 3683 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
@@ -3147,7 +3690,7 @@ int main() {
gethostbyname()
; return 0; }
EOF
-if { (eval echo configure:3151: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3694: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
ac_cv_search_gethostbyname="-l$i"
break
@@ -3180,19 +3723,19 @@ echo "default place for krb4 is $KRB4"
krb_h=
echo $ac_n "checking for krb.h""... $ac_c" 1>&6
-echo "configure:3184: checking for krb.h" >&5
+echo "configure:3727: checking for krb.h" >&5
if test "$cross_compiling" != yes && test -r $KRB4/include/krb.h; then
hold_cflags=$CFLAGS
CFLAGS="$CFLAGS -I$KRB4/include"
cat > conftest.$ac_ext <<EOF
-#line 3189 "configure"
+#line 3732 "configure"
#include "confdefs.h"
#include <krb.h>
int main() {
int i;
; return 0; }
EOF
-if { (eval echo configure:3196: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3739: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
krb_h=yes krb_incdir=$KRB4/include
else
@@ -3201,14 +3744,14 @@ else
rm -rf conftest*
CFLAGS=$hold_cflags
cat > conftest.$ac_ext <<EOF
-#line 3205 "configure"
+#line 3748 "configure"
#include "confdefs.h"
#include <krb.h>
int main() {
int i;
; return 0; }
EOF
-if { (eval echo configure:3212: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3755: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
krb_h=yes krb_incdir=
else
@@ -3221,14 +3764,14 @@ rm -f conftest*
CFLAGS=$hold_cflags
else
cat > conftest.$ac_ext <<EOF
-#line 3225 "configure"
+#line 3768 "configure"
#include "confdefs.h"
#include <krb.h>
int main() {
int i;
; return 0; }
EOF
-if { (eval echo configure:3232: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3775: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
krb_h=yes krb_incdir=
else
@@ -3239,14 +3782,14 @@ rm -f conftest*
fi
if test -z "$krb_h"; then
cat > conftest.$ac_ext <<EOF
-#line 3243 "configure"
+#line 3786 "configure"
#include "confdefs.h"
#include <krb.h>
int main() {
int i;
; return 0; }
EOF
-if { (eval echo configure:3250: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3793: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
krb_h=yes krb_incdir=
else
@@ -3257,14 +3800,14 @@ else
hold_cflags=$CFLAGS
CFLAGS="$CFLAGS -I$KRB4/include/kerberosIV"
cat > conftest.$ac_ext <<EOF
-#line 3261 "configure"
+#line 3804 "configure"
#include "confdefs.h"
#include <krb.h>
int main() {
int i;
; return 0; }
EOF
-if { (eval echo configure:3268: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3811: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
krb_h=yes krb_incdir=$KRB4/include/kerberosIV
else
@@ -3287,7 +3830,7 @@ if test -n "$krb_h"; then
hold_ldflags=$LDFLAGS
LDFLAGS="-L${KRB4}/lib $LDFLAGS"
echo $ac_n "checking for printf in -lkrb""... $ac_c" 1>&6
-echo "configure:3291: checking for printf in -lkrb" >&5
+echo "configure:3834: checking for printf in -lkrb" >&5
ac_lib_var=`echo krb'_'printf | sed 'y%./+-%__p_%'`
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
@@ -3295,7 +3838,7 @@ else
ac_save_LIBS="$LIBS"
LIBS="-lkrb $LIBS"
cat > conftest.$ac_ext <<EOF
-#line 3299 "configure"
+#line 3842 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
@@ -3306,7 +3849,7 @@ int main() {
printf()
; return 0; }
EOF
-if { (eval echo configure:3310: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3853: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_lib_$ac_lib_var=yes"
else
@@ -3328,7 +3871,7 @@ LDFLAGS=$hold_ldflags
# Using open here instead of printf so we don't
# get confused by the cached value for printf from above.
echo $ac_n "checking for open in -lkrb""... $ac_c" 1>&6
-echo "configure:3332: checking for open in -lkrb" >&5
+echo "configure:3875: checking for open in -lkrb" >&5
ac_lib_var=`echo krb'_'open | sed 'y%./+-%__p_%'`
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
@@ -3336,7 +3879,7 @@ else
ac_save_LIBS="$LIBS"
LIBS="-lkrb $LIBS"
cat > conftest.$ac_ext <<EOF
-#line 3340 "configure"
+#line 3883 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
@@ -3347,7 +3890,7 @@ int main() {
open()
; return 0; }
EOF
-if { (eval echo configure:3351: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3894: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_lib_$ac_lib_var=yes"
else
@@ -3372,7 +3915,7 @@ fi
LDFLAGS=$hold_ldflags
else
echo $ac_n "checking for printf in -lkrb""... $ac_c" 1>&6
-echo "configure:3376: checking for printf in -lkrb" >&5
+echo "configure:3919: checking for printf in -lkrb" >&5
ac_lib_var=`echo krb'_'printf | sed 'y%./+-%__p_%'`
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
@@ -3380,7 +3923,7 @@ else
ac_save_LIBS="$LIBS"
LIBS="-lkrb $LIBS"
cat > conftest.$ac_ext <<EOF
-#line 3384 "configure"
+#line 3927 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
@@ -3391,7 +3934,7 @@ int main() {
printf()
; return 0; }
EOF
-if { (eval echo configure:3395: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3938: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_lib_$ac_lib_var=yes"
else
@@ -3412,119 +3955,7 @@ else
fi
fi
- if test -n "$krb_lib"; then
- cat >> confdefs.h <<\EOF
-#define HAVE_KERBEROS 1
-EOF
-
- test -n "${krb_libdir}" && LIBS="${LIBS} -L${krb_libdir}"
- LIBS="${LIBS} -lkrb"
- # Put -L${krb_libdir} in LDFLAGS temporarily so that it appears before
- # -ldes in the command line. Don't do it permanently so that we honor
- # the user's setting for LDFLAGS
- hold_ldflags=$LDFLAGS
- test -n "${krb_libdir}" && LDFLAGS="$LDFLAGS -L${krb_libdir}"
- echo $ac_n "checking for printf in -ldes""... $ac_c" 1>&6
-echo "configure:3429: checking for printf in -ldes" >&5
-ac_lib_var=`echo des'_'printf | sed 'y%./+-%__p_%'`
-if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-else
- ac_save_LIBS="$LIBS"
-LIBS="-ldes $LIBS"
-cat > conftest.$ac_ext <<EOF
-#line 3437 "configure"
-#include "confdefs.h"
-/* Override any gcc2 internal prototype to avoid an error. */
-/* We use char because int might match the return type of a gcc2
- builtin and then its argument prototype would still apply. */
-char printf();
-
-int main() {
-printf()
-; return 0; }
-EOF
-if { (eval echo configure:3448: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
- eval "ac_cv_lib_$ac_lib_var=yes"
-else
- echo "configure: failed program was:" >&5
- cat conftest.$ac_ext >&5
- rm -rf conftest*
- eval "ac_cv_lib_$ac_lib_var=no"
-fi
-rm -f conftest*
-LIBS="$ac_save_LIBS"
-
-fi
-if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then
- echo "$ac_t""yes" 1>&6
- LIBS="${LIBS} -ldes"
-else
- echo "$ac_t""no" 1>&6
-fi
-
- LDFLAGS=$hold_ldflags
- if test -n "$krb_incdir"; then
- includeopt="${includeopt} -I$krb_incdir"
- fi
- fi
fi
-for ac_func in krb_get_err_text
-do
-echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:3477: checking for $ac_func" >&5
-if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-else
- cat > conftest.$ac_ext <<EOF
-#line 3482 "configure"
-#include "confdefs.h"
-/* System header to define __stub macros and hopefully few prototypes,
- which can conflict with char $ac_func(); below. */
-#include <assert.h>
-/* Override any gcc2 internal prototype to avoid an error. */
-/* We use char because int might match the return type of a gcc2
- builtin and then its argument prototype would still apply. */
-char $ac_func();
-
-int main() {
-
-/* The GNU C library defines this for functions which it implements
- to always fail with ENOSYS. Some functions are actually named
- something starting with __ and the normal name is an alias. */
-#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
-choke me
-#else
-$ac_func();
-#endif
-
-; return 0; }
-EOF
-if { (eval echo configure:3505: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
- eval "ac_cv_func_$ac_func=yes"
-else
- echo "configure: failed program was:" >&5
- cat conftest.$ac_ext >&5
- rm -rf conftest*
- eval "ac_cv_func_$ac_func=no"
-fi
-rm -f conftest*
-fi
-
-if eval "test \"`echo '$ac_cv_func_'$ac_func`\" = yes"; then
- echo "$ac_t""yes" 1>&6
- ac_tr_func=HAVE_`echo $ac_func | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'`
- cat >> confdefs.h <<EOF
-#define $ac_tr_func 1
-EOF
-
-else
- echo "$ac_t""no" 1>&6
-fi
-done
-
GSSAPI=/usr/cygnus/kerbnet
@@ -3542,17 +3973,17 @@ for ac_hdr in krb5.h gssapi.h gssapi/gssapi.h gssapi/gssapi_generic.h
do
ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:3546: checking for $ac_hdr" >&5
+echo "configure:3977: checking for $ac_hdr" >&5
if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 3551 "configure"
+#line 3982 "configure"
#include "confdefs.h"
#include <$ac_hdr>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:3556: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:3987: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
if test -z "$ac_err"; then
rm -rf conftest*
@@ -3590,7 +4021,7 @@ EOF
includeopt="${includeopt} -I$GSSAPI/include/kerberosV"
# FIXME: This is ugly, but these things don't seem to be standardized.
if test "$ac_cv_header_gssapi_h" = "yes"; then
- LIBS="$LIBS -L$GSSAPI/lib -lgssapi -lkrb lkrb5 -lasn1 -lcrypto -lcom_err -lkafs"
+ LIBS="$LIBS -L$GSSAPI/lib -lgssapi -lkrb -lkrb5 -lasn1 -lcrypto -lcom_err -lkafs"
else
LIBS="$LIBS -L$GSSAPI/lib -lgssapi_krb5 -lkrb -lkrb5 -lcrypto -lcom_err -lkafs"
fi
@@ -3598,7 +4029,7 @@ EOF
CPPFLAGS="-I$GSSAPI/include/kerberosV $CPPFLAGS"
if test "$ac_cv_header_gssapi_h" = "yes"; then
cat > conftest.$ac_ext <<EOF
-#line 3602 "configure"
+#line 4033 "configure"
#include "confdefs.h"
#include <gssapi.h>
EOF
@@ -3614,7 +4045,7 @@ rm -f conftest*
else
cat > conftest.$ac_ext <<EOF
-#line 3618 "configure"
+#line 4049 "configure"
#include "confdefs.h"
#include <gssapi/gssapi.h>
EOF
@@ -3633,7 +4064,7 @@ rm -f conftest*
# This is necessary on Irix 5.3, in order to link against libkrb5 --
# there, an_to_ln.o refers to things defined only in -lgen.
echo $ac_n "checking for compile in -lgen""... $ac_c" 1>&6
-echo "configure:3637: checking for compile in -lgen" >&5
+echo "configure:4068: checking for compile in -lgen" >&5
ac_lib_var=`echo gen'_'compile | sed 'y%./+-%__p_%'`
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
@@ -3641,7 +4072,7 @@ else
ac_save_LIBS="$LIBS"
LIBS="-lgen $LIBS"
cat > conftest.$ac_ext <<EOF
-#line 3645 "configure"
+#line 4076 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
@@ -3652,7 +4083,7 @@ int main() {
compile()
; return 0; }
EOF
-if { (eval echo configure:3656: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:4087: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_lib_$ac_lib_var=yes"
else
@@ -3681,6 +4112,121 @@ fi
fi
+if test -n "$krb_h"; then
+ if test -n "$krb_lib"; then
+ cat >> confdefs.h <<\EOF
+#define HAVE_KERBEROS 1
+EOF
+
+ test -n "${krb_libdir}" && LIBS="${LIBS} -L${krb_libdir}"
+ LIBS="${LIBS} -lkrb"
+ # Put -L${krb_libdir} in LDFLAGS temporarily so that it appears before
+ # -ldes in the command line. Don't do it permanently so that we honor
+ # the user's setting for LDFLAGS
+ hold_ldflags=$LDFLAGS
+ test -n "${krb_libdir}" && LDFLAGS="$LDFLAGS -L${krb_libdir}"
+ echo $ac_n "checking for printf in -ldes""... $ac_c" 1>&6
+echo "configure:4130: checking for printf in -ldes" >&5
+ac_lib_var=`echo des'_'printf | sed 'y%./+-%__p_%'`
+if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+else
+ ac_save_LIBS="$LIBS"
+LIBS="-ldes $LIBS"
+cat > conftest.$ac_ext <<EOF
+#line 4138 "configure"
+#include "confdefs.h"
+/* Override any gcc2 internal prototype to avoid an error. */
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char printf();
+
+int main() {
+printf()
+; return 0; }
+EOF
+if { (eval echo configure:4149: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+ rm -rf conftest*
+ eval "ac_cv_lib_$ac_lib_var=yes"
+else
+ echo "configure: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ rm -rf conftest*
+ eval "ac_cv_lib_$ac_lib_var=no"
+fi
+rm -f conftest*
+LIBS="$ac_save_LIBS"
+
+fi
+if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then
+ echo "$ac_t""yes" 1>&6
+ LIBS="${LIBS} -ldes"
+else
+ echo "$ac_t""no" 1>&6
+fi
+
+ LDFLAGS=$hold_ldflags
+ if test -n "$krb_incdir"; then
+ includeopt="${includeopt} -I$krb_incdir"
+ fi
+ fi
+fi
+for ac_func in krb_get_err_text
+do
+echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
+echo "configure:4178: checking for $ac_func" >&5
+if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+else
+ cat > conftest.$ac_ext <<EOF
+#line 4183 "configure"
+#include "confdefs.h"
+/* System header to define __stub macros and hopefully few prototypes,
+ which can conflict with char $ac_func(); below. */
+#include <assert.h>
+/* Override any gcc2 internal prototype to avoid an error. */
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char $ac_func();
+
+int main() {
+
+/* The GNU C library defines this for functions which it implements
+ to always fail with ENOSYS. Some functions are actually named
+ something starting with __ and the normal name is an alias. */
+#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
+choke me
+#else
+$ac_func();
+#endif
+
+; return 0; }
+EOF
+if { (eval echo configure:4206: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+ rm -rf conftest*
+ eval "ac_cv_func_$ac_func=yes"
+else
+ echo "configure: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ rm -rf conftest*
+ eval "ac_cv_func_$ac_func=no"
+fi
+rm -f conftest*
+fi
+
+if eval "test \"`echo '$ac_cv_func_'$ac_func`\" = yes"; then
+ echo "$ac_t""yes" 1>&6
+ ac_tr_func=HAVE_`echo $ac_func | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'`
+ cat >> confdefs.h <<EOF
+#define $ac_tr_func 1
+EOF
+
+else
+ echo "$ac_t""no" 1>&6
+fi
+done
+
+
# Check whether --enable-encryption or --disable-encryption was given.
if test "${enable_encryption+set}" = set; then
enableval="$enable_encryption"
@@ -3701,12 +4247,12 @@ EOF
fi
echo $ac_n "checking for gethostname""... $ac_c" 1>&6
-echo "configure:3705: checking for gethostname" >&5
+echo "configure:4251: checking for gethostname" >&5
if eval "test \"`echo '$''{'ac_cv_func_gethostname'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 3710 "configure"
+#line 4256 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char gethostname(); below. */
@@ -3729,7 +4275,7 @@ gethostname();
; return 0; }
EOF
-if { (eval echo configure:3733: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:4279: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_gethostname=yes"
else
@@ -3808,12 +4354,12 @@ if test "$enable_server" = yes; then
for ac_func in crypt
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:3812: checking for $ac_func" >&5
+echo "configure:4358: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 3817 "configure"
+#line 4363 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -3836,7 +4382,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:3840: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:4386: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@@ -3862,7 +4408,7 @@ done
if test "$ac_cv_func_crypt" = no; then
echo $ac_n "checking for crypt in -lcrypt""... $ac_c" 1>&6
-echo "configure:3866: checking for crypt in -lcrypt" >&5
+echo "configure:4412: checking for crypt in -lcrypt" >&5
ac_lib_var=`echo crypt'_'crypt | sed 'y%./+-%__p_%'`
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
@@ -3870,7 +4416,7 @@ else
ac_save_LIBS="$LIBS"
LIBS="-lcrypt $LIBS"
cat > conftest.$ac_ext <<EOF
-#line 3874 "configure"
+#line 4420 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
@@ -3881,7 +4427,7 @@ int main() {
crypt()
; return 0; }
EOF
-if { (eval echo configure:3885: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:4431: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_lib_$ac_lib_var=yes"
else
@@ -3911,12 +4457,12 @@ fi
for ac_func in crypt
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:3915: checking for $ac_func" >&5
+echo "configure:4461: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 3920 "configure"
+#line 4466 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -3939,7 +4485,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:3943: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:4489: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@@ -3975,19 +4521,19 @@ fi # enable_server
echo $ac_n "checking for cygwin32""... $ac_c" 1>&6
-echo "configure:3979: checking for cygwin32" >&5
+echo "configure:4525: checking for cygwin32" >&5
if eval "test \"`echo '$''{'ccvs_cv_sys_cygwin32'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 3984 "configure"
+#line 4530 "configure"
#include "confdefs.h"
int main() {
return __CYGWIN32__;
; return 0; }
EOF
-if { (eval echo configure:3991: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:4537: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
ccvs_cv_sys_cygwin32=yes
else
@@ -4089,19 +4635,7 @@ fi
trap 'rm -f $CONFIG_STATUS conftest*; exit 1' 1 2 15
-# Transform confdefs.h into DEFS.
-# Protect against shell expansion while executing Makefile rules.
-# Protect against Makefile macro expansion.
-cat > conftest.defs <<\EOF
-s%#define \([A-Za-z_][A-Za-z0-9_]*\) *\(.*\)%-D\1=\2%g
-s%[ `~#$^&*(){}\\|;'"<>?]%\\&%g
-s%\[%\\&%g
-s%\]%\\&%g
-s%\$%$$%g
-EOF
-DEFS=`sed -f conftest.defs confdefs.h | tr '\012' ' '`
-rm -f conftest.defs
-
+DEFS=-DHAVE_CONFIG_H
# Without the "./", some shells look in PATH for config.status.
: ${CONFIG_STATUS=./config.status}
@@ -4162,7 +4696,7 @@ trap 'rm -fr `echo "Makefile \
vms/Makefile \
windows-NT/Makefile \
windows-NT/SCC/Makefile \
- zlib/Makefile" | sed "s/:[^ ]*//g"` conftest*; exit 1' 1 2 15
+ zlib/Makefile config.h src/options.h" | sed "s/:[^ ]*//g"` conftest*; exit 1' 1 2 15
EOF
cat >> $CONFIG_STATUS <<EOF
@@ -4194,13 +4728,35 @@ s%@includedir@%$includedir%g
s%@oldincludedir@%$oldincludedir%g
s%@infodir@%$infodir%g
s%@mandir@%$mandir%g
-s%@CVS@%$CVS%g
-s%@AWK@%$AWK%g
-s%@CC@%$CC%g
s%@INSTALL_PROGRAM@%$INSTALL_PROGRAM%g
s%@INSTALL_SCRIPT@%$INSTALL_SCRIPT%g
s%@INSTALL_DATA@%$INSTALL_DATA%g
+s%@PACKAGE@%$PACKAGE%g
+s%@VERSION@%$VERSION%g
+s%@ACLOCAL@%$ACLOCAL%g
+s%@AUTOCONF@%$AUTOCONF%g
+s%@AUTOMAKE@%$AUTOMAKE%g
+s%@AUTOHEADER@%$AUTOHEADER%g
+s%@MAKEINFO@%$MAKEINFO%g
+s%@AMTAR@%$AMTAR%g
+s%@install_sh@%$install_sh%g
+s%@STRIP@%$STRIP%g
+s%@INSTALL_STRIP_PROGRAM@%$INSTALL_STRIP_PROGRAM%g
+s%@INSTALL_STRIP_PROGRAM_ENV@%$INSTALL_STRIP_PROGRAM_ENV%g
+s%@AWK@%$AWK%g
s%@SET_MAKE@%$SET_MAKE%g
+s%@ETAGS@%$ETAGS%g
+s%@ETAGS_INCLUDE_OPTION@%$ETAGS_INCLUDE_OPTION%g
+s%@AMDEP_TRUE@%$AMDEP_TRUE%g
+s%@AMDEP_FALSE@%$AMDEP_FALSE%g
+s%@AMDEPBACKSLASH@%$AMDEPBACKSLASH%g
+s%@DEPDIR@%$DEPDIR%g
+s%@CVS@%$CVS%g
+s%@CC@%$CC%g
+s%@CPP@%$CPP%g
+s%@_am_include@%$_am_include%g
+s%@_am_quote@%$_am_quote%g
+s%@CCDEPMODE@%$CCDEPMODE%g
s%@RANLIB@%$RANLIB%g
s%@YACC@%$YACC%g
s%@LN_S@%$LN_S%g
@@ -4210,11 +4766,13 @@ s%@PR@%$PR%g
s%@ROFF@%$ROFF%g
s%@PS2PDF@%$PS2PDF%g
s%@TEXI2DVI@%$TEXI2DVI%g
-s%@CPP@%$CPP%g
+s%@MAKE_TARGETS_IN_VPATH_TRUE@%$MAKE_TARGETS_IN_VPATH_TRUE%g
+s%@MAKE_TARGETS_IN_VPATH_FALSE@%$MAKE_TARGETS_IN_VPATH_FALSE%g
s%@LIBOBJS@%$LIBOBJS%g
s%@ZLIB@%$ZLIB%g
s%@ZLIBSUBDIRS@%$ZLIBSUBDIRS%g
s%@ZLIB_INCLUDES@%$ZLIB_INCLUDES%g
+s%@ZLIB_DEPEND@%$ZLIB_DEPEND%g
s%@KRB4@%$KRB4%g
s%@includeopt@%$includeopt%g
s%@GSSAPI@%$GSSAPI%g
@@ -4341,11 +4899,179 @@ s%@INSTALL@%$INSTALL%g
fi; done
rm -f conftest.s*
+# These sed commands are passed to sed as "A NAME B NAME C VALUE D", where
+# NAME is the cpp macro being defined and VALUE is the value it is being given.
+#
+# ac_d sets the value in "#define NAME VALUE" lines.
+ac_dA='s%^\([ ]*\)#\([ ]*define[ ][ ]*\)'
+ac_dB='\([ ][ ]*\)[^ ]*%\1#\2'
+ac_dC='\3'
+ac_dD='%g'
+# ac_u turns "#undef NAME" with trailing blanks into "#define NAME VALUE".
+ac_uA='s%^\([ ]*\)#\([ ]*\)undef\([ ][ ]*\)'
+ac_uB='\([ ]\)%\1#\2define\3'
+ac_uC=' '
+ac_uD='\4%g'
+# ac_e turns "#undef NAME" without trailing blanks into "#define NAME VALUE".
+ac_eA='s%^\([ ]*\)#\([ ]*\)undef\([ ][ ]*\)'
+ac_eB='$%\1#\2define\3'
+ac_eC=' '
+ac_eD='%g'
+
+if test "${CONFIG_HEADERS+set}" != set; then
EOF
cat >> $CONFIG_STATUS <<EOF
+ CONFIG_HEADERS="config.h src/options.h"
+EOF
+cat >> $CONFIG_STATUS <<\EOF
+fi
+for ac_file in .. $CONFIG_HEADERS; do if test "x$ac_file" != x..; then
+ # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in".
+ case "$ac_file" in
+ *:*) ac_file_in=`echo "$ac_file"|sed 's%[^:]*:%%'`
+ ac_file=`echo "$ac_file"|sed 's%:.*%%'` ;;
+ *) ac_file_in="${ac_file}.in" ;;
+ esac
+
+ echo creating $ac_file
+
+ rm -f conftest.frag conftest.in conftest.out
+ ac_file_inputs=`echo $ac_file_in|sed -e "s%^%$ac_given_srcdir/%" -e "s%:% $ac_given_srcdir/%g"`
+ cat $ac_file_inputs > conftest.in
EOF
+
+# Transform confdefs.h into a sed script conftest.vals that substitutes
+# the proper values into config.h.in to produce config.h. And first:
+# Protect against being on the right side of a sed subst in config.status.
+# Protect against being in an unquoted here document in config.status.
+rm -f conftest.vals
+cat > conftest.hdr <<\EOF
+s/[\\&%]/\\&/g
+s%[\\$`]%\\&%g
+s%#define \([A-Za-z_][A-Za-z0-9_]*\) *\(.*\)%${ac_dA}\1${ac_dB}\1${ac_dC}\2${ac_dD}%gp
+s%ac_d%ac_u%gp
+s%ac_u%ac_e%gp
+EOF
+sed -n -f conftest.hdr confdefs.h > conftest.vals
+rm -f conftest.hdr
+
+# This sed command replaces #undef with comments. This is necessary, for
+# example, in the case of _POSIX_SOURCE, which is predefined and required
+# on some systems where configure will not decide to define it.
+cat >> conftest.vals <<\EOF
+s%^[ ]*#[ ]*undef[ ][ ]*[a-zA-Z_][a-zA-Z_0-9]*%/* & */%
+EOF
+
+# Break up conftest.vals because some shells have a limit on
+# the size of here documents, and old seds have small limits too.
+
+rm -f conftest.tail
+while :
+do
+ ac_lines=`grep -c . conftest.vals`
+ # grep -c gives empty output for an empty file on some AIX systems.
+ if test -z "$ac_lines" || test "$ac_lines" -eq 0; then break; fi
+ # Write a limited-size here document to conftest.frag.
+ echo ' cat > conftest.frag <<CEOF' >> $CONFIG_STATUS
+ sed ${ac_max_here_lines}q conftest.vals >> $CONFIG_STATUS
+ echo 'CEOF
+ sed -f conftest.frag conftest.in > conftest.out
+ rm -f conftest.in
+ mv conftest.out conftest.in
+' >> $CONFIG_STATUS
+ sed 1,${ac_max_here_lines}d conftest.vals > conftest.tail
+ rm -f conftest.vals
+ mv conftest.tail conftest.vals
+done
+rm -f conftest.vals
+
cat >> $CONFIG_STATUS <<\EOF
+ rm -f conftest.frag conftest.h
+ echo "/* $ac_file. Generated automatically by configure. */" > conftest.h
+ cat conftest.in >> conftest.h
+ rm -f conftest.in
+ if cmp -s $ac_file conftest.h 2>/dev/null; then
+ echo "$ac_file is unchanged"
+ rm -f conftest.h
+ else
+ # Remove last slash and all that follows it. Not all systems have dirname.
+ ac_dir=`echo $ac_file|sed 's%/[^/][^/]*$%%'`
+ if test "$ac_dir" != "$ac_file" && test "$ac_dir" != .; then
+ # The file is in a subdirectory.
+ test ! -d "$ac_dir" && mkdir "$ac_dir"
+ fi
+ rm -f $ac_file
+ mv conftest.h $ac_file
+ fi
+fi; done
+
+EOF
+cat >> $CONFIG_STATUS <<EOF
+am_indx=1
+for am_file in config.h src/options.h; do
+ case " \$CONFIG_HEADERS " in
+ *" \$am_file "*)
+ am_dir=\`echo \$am_file |sed 's%:.*%%;s%[^/]*\$%%'\`
+ if test -n "\$am_dir"; then
+ am_tmpdir=\`echo \$am_dir |sed 's%^\(/*\).*\$%\1%'\`
+ for am_subdir in \`echo \$am_dir |sed 's%/% %'\`; do
+ am_tmpdir=\$am_tmpdir\$am_subdir/
+ if test ! -d \$am_tmpdir; then
+ mkdir \$am_tmpdir
+ fi
+ done
+ fi
+ echo timestamp > "\$am_dir"stamp-h\$am_indx
+ ;;
+ esac
+ am_indx=\`expr \$am_indx + 1\`
+done
+AMDEP="$AMDEP"
+ac_aux_dir="$ac_aux_dir"
+
+EOF
+cat >> $CONFIG_STATUS <<\EOF
+
+
+test x"$AMDEP" != x"" ||
+for mf in $CONFIG_FILES; do
+ case "$mf" in
+ Makefile) dirpart=.;;
+ */Makefile) dirpart=`echo "$mf" | sed -e 's|/[^/]*$||'`;;
+ *) continue;;
+ esac
+ grep '^DEP_FILES *= *[^ #]' < "$mf" > /dev/null || continue
+ # Extract the definition of DEP_FILES from the Makefile without
+ # running `make'.
+ DEPDIR=`sed -n -e '/^DEPDIR = / s///p' < "$mf"`
+ test -z "$DEPDIR" && continue
+ # When using ansi2knr, U may be empty or an underscore; expand it
+ U=`sed -n -e '/^U = / s///p' < "$mf"`
+ test -d "$dirpart/$DEPDIR" || mkdir "$dirpart/$DEPDIR"
+ # We invoke sed twice because it is the simplest approach to
+ # changing $(DEPDIR) to its actual value in the expansion.
+ for file in `sed -n -e '
+ /^DEP_FILES = .*\\\\$/ {
+ s/^DEP_FILES = //
+ :loop
+ s/\\\\$//
+ p
+ n
+ /\\\\$/ b loop
+ p
+ }
+ /^DEP_FILES = / s/^DEP_FILES = //p' < "$mf" | \
+ sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do
+ # Make sure the directory exists.
+ test -f "$dirpart/$file" && continue
+ fdir=`echo "$file" | sed -e 's|/[^/]*$||'`
+ $ac_aux_dir/mkinstalldirs "$dirpart/$fdir" > /dev/null 2>&1
+ # echo "creating $dirpart/$file"
+ echo '# dummy' > "$dirpart/$file"
+ done
+done
+
chmod -f +x \
contrib/clmerge \
contrib/cln_hist \
diff --git a/gnu/usr.bin/cvs/configure.in b/gnu/usr.bin/cvs/configure.in
index 883136813a5..2e86f5b5e0c 100644
--- a/gnu/usr.bin/cvs/configure.in
+++ b/gnu/usr.bin/cvs/configure.in
@@ -169,10 +169,11 @@ AC_SEARCH_LIBS(getspnam, sec gen, AC_DEFINE(HAVE_GETSPNAM))
dnl
dnl Check for a system libz.
dnl
-AC_CHECK_LIB(z, zlibVersion, ZLIB=-lz , ZLIBSUBDIRS=zlib ZLIB=$srcdir/zlib/libz.a ZLIB_INCLUDES=-I$srcdir/zlib)
+AC_CHECK_LIB(z, zlibVersion, ZLIB=-lz ZLIB_DEPEND=/usr/lib/libz.a, ZLIBSUBDIRS=zlib ZLIB=$srcdir/zlib/libz.a ZLIB_DEPEND=$srcdir/zlib/libz.a ZLIB_INCLUDES=-I$srcdir/zlib)
AC_SUBST(ZLIB)
AC_SUBST(ZLIBSUBDIRS)
AC_SUBST(ZLIB_INCLUDES)
+AC_SUBST(ZLIB_DEPEND)
dnl We always use CVS's regular expression matcher.
dnl This is because:
@@ -267,23 +268,7 @@ if test -n "$krb_h"; then
else
AC_CHECK_LIB(krb,printf,[krb_lib=yes krb_libdir=])
fi
- if test -n "$krb_lib"; then
- AC_DEFINE(HAVE_KERBEROS)
- test -n "${krb_libdir}" && LIBS="${LIBS} -L${krb_libdir}"
- LIBS="${LIBS} -lkrb"
- # Put -L${krb_libdir} in LDFLAGS temporarily so that it appears before
- # -ldes in the command line. Don't do it permanently so that we honor
- # the user's setting for LDFLAGS
- hold_ldflags=$LDFLAGS
- test -n "${krb_libdir}" && LDFLAGS="$LDFLAGS -L${krb_libdir}"
- AC_CHECK_LIB(des,printf,[LIBS="${LIBS} -ldes"])
- LDFLAGS=$hold_ldflags
- if test -n "$krb_incdir"; then
- includeopt="${includeopt} -I$krb_incdir"
- fi
- fi
fi
-AC_CHECK_FUNCS(krb_get_err_text)
dnl
dnl Use --with-gssapi=DIR to enable GSSAPI support.
@@ -310,7 +295,7 @@ if test "$ac_cv_header_krb5_h" = "yes" &&
includeopt="${includeopt} -I$GSSAPI/include/kerberosV"
# FIXME: This is ugly, but these things don't seem to be standardized.
if test "$ac_cv_header_gssapi_h" = "yes"; then
- LIBS="$LIBS -L$GSSAPI/lib -lgssapi -lkrb lkrb5 -lasn1 -lcrypto -lcom_err -lkafs"
+ LIBS="$LIBS -L$GSSAPI/lib -lgssapi -lkrb -lkrb5 -lasn1 -lcrypto -lcom_err -lkafs"
else
LIBS="$LIBS -L$GSSAPI/lib -lgssapi_krb5 -lkrb -lkrb5 -lcrypto -lcom_err -lkafs"
fi
@@ -327,6 +312,25 @@ if test "$ac_cv_header_krb5_h" = "yes" &&
AC_CHECK_LIB(gen, compile)
fi
+if test -n "$krb_h"; then
+ if test -n "$krb_lib"; then
+ AC_DEFINE(HAVE_KERBEROS)
+ test -n "${krb_libdir}" && LIBS="${LIBS} -L${krb_libdir}"
+ LIBS="${LIBS} -lkrb"
+ # Put -L${krb_libdir} in LDFLAGS temporarily so that it appears before
+ # -ldes in the command line. Don't do it permanently so that we honor
+ # the user's setting for LDFLAGS
+ hold_ldflags=$LDFLAGS
+ test -n "${krb_libdir}" && LDFLAGS="$LDFLAGS -L${krb_libdir}"
+ AC_CHECK_LIB(des,printf,[LIBS="${LIBS} -ldes"])
+ LDFLAGS=$hold_ldflags
+ if test -n "$krb_incdir"; then
+ includeopt="${includeopt} -I$krb_incdir"
+ fi
+ fi
+fi
+AC_CHECK_FUNCS(krb_get_err_text)
+
dnl
dnl Use --with-encryption to turn on encryption support
dnl
diff --git a/gnu/usr.bin/cvs/doc/cvs.info-3 b/gnu/usr.bin/cvs/doc/cvs.info-3
index 946feae29c8..ada6dd98f78 100644
--- a/gnu/usr.bin/cvs/doc/cvs.info-3
+++ b/gnu/usr.bin/cvs/doc/cvs.info-3
@@ -1,5 +1,8 @@
-This is Info file cvs.info, produced by Makeinfo-1.55 from the input
-file ./cvs.texinfo.
+This is cvs.info, produced by makeinfo version 4.0 from cvs.texinfo.
+
+START-INFO-DIR-ENTRY
+* CVS: (cvs). Concurrent Versions System
+END-INFO-DIR-ENTRY
Copyright (C) 1992, 1993 Signum Support AB Copyright (C) 1993, 1994
Free Software Foundation, Inc.
@@ -10,1419 +13,1245 @@ preserved on all copies.
Permission is granted to copy and distribute modified versions of
this manual under the conditions for verbatim copying, provided also
-that the section entitled "GNU General Public License" is included
-exactly as in the original, and provided that the entire resulting
-derived work is distributed under the terms of a permission notice
-identical to this one.
+that the entire resulting derived work is distributed under the terms
+of a permission notice identical to this one.
Permission is granted to copy and distribute translations of this
manual into another language, under the above conditions for modified
-versions, except that the section entitled "GNU General Public License"
-and this permission notice may be included in translations approved by
-the Free Software Foundation instead of in the original English.
-
-
-File: cvs.info, Node: add options, Next: add examples, Up: add
-
-add options
------------
-
- There are only two options you can give to `add':
-
-`-k KFLAG'
- This option specifies the default way that this file will be
- checked out. See rcs(1) and co(1). The KFLAG argument (*note
- Substitution modes::.) is stored in the RCS file and can be
- changed with `admin -k' (*note admin options::.). Specifying
- `-ko' is useful for checking in binaries that should not have the
- RCS id strings expanded.
-
- *Warning:* this option is reported to be broken in version 1.3 and
- 1.3-s2 of CVS. Use `admin -k' after the commit instead. *Note
- admin examples::.
-
-`-m DESCRIPTION'
- Using this option, you can give a description for the file. This
- description appears in the history log (if it is enabled, *note
- history file::.). It will also be saved in the RCS history file
- inside the repository when the file is committed. The `log'
- command displays this description.
-
- The description can be changed using `admin -t'. *Note admin::.
-
- If you omit the `-m DESCRIPTION' flag, an empty string will be
- used. You will not be prompted for a description.
-
-
-File: cvs.info, Node: add examples, Prev: add options, Up: add
-
-add examples
-------------
-
- To add the file `backend.c' to the repository, with a description,
-the following can be used.
-
- $ cvs add -m "Optimizer and code generation passes." backend.c
- $ cvs commit -m "Early version. Not yet compilable." backend.c
-
-
-File: cvs.info, Node: admin, Next: checkout, Prev: add, Up: Invoking CVS
-
-admin--Administration front end for rcs
-=======================================
-
- * Requires: repository, working directory.
-
- * Changes: repository.
-
- * Synonym: rcs
-
- This is the CVS interface to assorted administrative RCS facilities,
-documented in rcs(1). `admin' simply passes all its options and
-arguments to the `rcs' command; it does no filtering or other
-processing. This command *does* work recursively, however, so extreme
-care should be used.
-
-* Menu:
-
-* admin options:: admin options
-* admin examples:: admin examples
+versions, except that this permission notice may be stated in a
+translation approved by the Free Software Foundation.

-File: cvs.info, Node: admin options, Next: admin examples, Up: admin
-
-admin options
--------------
-
- Not all valid `rcs' options are useful together with CVS. Some even
-makes it impossible to use CVS until you undo the effect!
-
- This description of the available options is based on the `rcs(1)'
-man page, but modified to suit readers that are more interrested in CVS
-than RCS.
-
-`-AOLDFILE'
- Might not work together with CVS. Append the access list of
- OLDFILE to the access list of the RCS file.
-
-`-aLOGINS'
- Might not work together with CVS. Append the login names
- appearing in the comma-separated list LOGINS to the access list of
- the RCS file.
-
-`-b[REV]'
- Breaks CVS. When used with bare RCS, this option sets the default
- branch to REV. If REV is omitted, the default branch is reset to
- the (dynamically) highest branch on the trunk. Use sticky tags
- instead, as in `cvs co -r'. *Note Sticky tags::.
-
-`-cSTRING'
- Useful with CVS. Sets the comment leader to STRING. The comment
- leader is printed before every log message line generated by the
- keyword `$Log: cvs.info-3,v $
- keyword `Revision 1.1 1995/12/19 09:21:39 deraadt
- keyword `Initial revision
- keyword `' (*note Keyword substitution::.). This is useful
- for programming languages without multi-line comments. RCS
- initially guesses the value of the comment leader from the file
- name extension when the file is first committed.
-
-`-e[LOGINS]'
- Might not work together with CVS. Erase the login names appearing
- in the comma-separated list LOGINS from the access list of the RCS
- file. If LOGINS is omitted, erase the entire access list.
-
-`-I'
- Run interactively, even if the standard input is not a terminal.
-
-`-i'
- Useless with CVS. When using bare RCS, this is used to create and
- initialize a new RCS file, without depositing a revision.
-
-`-kSUBST'
- Useful with CVS. Set the default keyword substitution to SUBST.
- *Note Keyword substitution::. Giving an explicit `-k' option to
- `cvs update' or `cvs checkout' overrides this default. `cvs
- export' always uses `-kv', regardless of which keyword
- substitution is set with `cvs admin'.
-
-`-l[REV]'
- Probably useless with CVS. With bare RCS, this option can be used
- to lock the revision with number REV. If a branch is given, lock
- the latest revision on that branch. If REV is omitted, lock the
- latest revision on the default branch.
-
-`-L'
- Probably useless with CVS. Used with bare RCS to set locking to
- strict. Strict locking means that the owner of an RCS file is not
- exempt from locking for checkin.
-
-`-mREV:MSG'
- Replace the log message of revision REV with MSG.
-
-`-NNAME[:[REV]]'
- Act like `-n', except override any previous assignment of NAME.
-
-`-nNAME[:[REV]]'
- Associate the symbolic name NAME with the branch or revision REV.
- It is normally better to use `cvs tag' or `cvs rtag' instead.
- Delete the symbolic name if both `:' and REV are omitted;
- otherwise, print an error message if NAME is already associated
- with another number. If REV is symbolic, it is expanded before
- association. A REV consisting of a branch number followed by a
- `.' stands for the current latest revision in the branch. A `:'
- with an empty REV stands for the current latest revision on the
- default branch, normally the trunk. For example, `rcs -nNAME:
- RCS/*' associates NAME with the current latest revision of all the
- named RCS files; this contrasts with `rcs -nNAME:$ RCS/*' which
- associates NAME with the revision numbers extracted from keyword
- strings in the corresponding working files.
-
-`-oRANGE'
- Useful, but dangerous, with CVS (see below). Deletes ("outdates")
- the revisions given by RANGE. A range consisting of a single
- revision number means that revision. A range consisting of a
- branch number means the latest revision on that branch. A range
- of the form `REV1:REV2' means revisions REV1 to REV2 on the same
- branch, `:REV' means from the beginning of the branch containing
- REV up to and including REV, and `REV:' means from revision REV to
- the end of the branch containing REV. None of the outdated
- revisions may have branches or locks.
-
- Due to the way CVS handles branches REV cannot be specified
- symbolically if it is a branch. *Note Magic branch numbers::, for
- an explanation.
-
- Make sure that no-one has checked out a copy of the revision you
- outdate. Strange things will happen if he starts to edit it and
- tries to check it back in. For this reason, you should never use
- this option to take back a bogus commit unless you work alone.
- Instead, you should fix the file and commit a new revision.
-
-`-q'
- Run quietly; do not print diagnostics.
-
-`-sSTATE[:REV]'
- Useful with CVS. Set the state attribute of the revision REV to
- STATE. If REV is a branch number, assume the latest revision on
- that branch. If REV is omitted, assume the latest revision on the
- default branch. Any identifier is acceptable for STATE. A useful
- set of states is `Exp' (for experimental), `Stab' (for stable),
- and `Rel' (for released). By default, the state of a new revision
- is set to `Exp' when it is created. The state is visible in the
- output from CVS LOG (*note log::.), and in the `$Log: cvs.info-3,v $
- output from CVS LOG (*note log::.), and in the `Revision 1.1 1995/12/19 09:21:39 deraadt
- output from CVS LOG (*note log::.), and in the `Initial revision
- output from CVS LOG (*note log::.), and in the `' and
- `$State: Exp $' keywords (*note Keyword substitution::.).
-
-`-t[FILE]'
- Useful with CVS. Write descriptive text from the contents of the
- named FILE into the RCS file, deleting the existing text. The
- FILE pathname may not begin with `-'. If FILE is omitted, obtain
- the text from standard input, terminated by end-of-file or by a
- line containing `.' by itself. Prompt for the text if interaction
- is possible; see `-I'. The descriptive text can be seen in the
- output from `cvs log' (*note log::.).
-
-`-t-STRING'
- Similar to `-tFILE'. Write descriptive text from the STRING into
- the RCS file, deleting the existing text.
-
-`-U'
- Probably useless with CVS. Used with bare RCS to set locking to
- non-strict. Non-strict locking means that the owner of a file
- need not lock a revision for checkin.
-
-`-u[REV]'
- Probably useless with CVS. With bare RCS, unlock the revision
- with number REV. If a branch is given, unlock the latest revision
- on that branch. If REV is omitted, remove the latest lock held by
- the caller. Normally, only the locker of a revision may unlock
- it. Somebody else unlocking a revision breaks the lock. This
- causes a mail message to be sent to the original locker. The
- message contains a commentary solicited from the breaker. The
- commentary is terminated by end-of-file or by a line containing
- `.' by itself.
-
-`-VN'
- Emulate RCS version N. Use -VN to make an RCS file acceptable to
- RCS version N by discarding information that would confuse version
- N.
-
-`-xSUFFIXES'
- Useless with CVS. Use SUFFIXES to characterize RCS files.
+File: cvs.info, Node: Tags, Next: Tagging the working directory, Prev: Assigning revisions, Up: Revisions
+
+Tags-Symbolic revisions
+=======================
+
+ The revision numbers live a life of their own. They need not have
+anything at all to do with the release numbers of your software
+product. Depending on how you use CVS the revision numbers might
+change several times between two releases. As an example, some of the
+source files that make up RCS 5.6 have the following revision numbers:
+
+ ci.c 5.21
+ co.c 5.9
+ ident.c 5.3
+ rcs.c 5.12
+ rcsbase.h 5.11
+ rcsdiff.c 5.10
+ rcsedit.c 5.11
+ rcsfcmp.c 5.9
+ rcsgen.c 5.10
+ rcslex.c 5.11
+ rcsmap.c 5.2
+ rcsutil.c 5.10
+
+ You can use the `tag' command to give a symbolic name to a certain
+revision of a file. You can use the `-v' flag to the `status' command
+to see all tags that a file has, and which revision numbers they
+represent. Tag names must start with an uppercase or lowercase letter
+and can contain uppercase and lowercase letters, digits, `-', and `_'.
+The two tag names `BASE' and `HEAD' are reserved for use by CVS. It is
+expected that future names which are special to CVS will be specially
+named, for example by starting with `.', rather than being named
+analogously to `BASE' and `HEAD', to avoid conflicts with actual tag
+names.
+
+ You'll want to choose some convention for naming tags, based on
+information such as the name of the program and the version number of
+the release. For example, one might take the name of the program,
+immediately followed by the version number with `.' changed to `-', so
+that CVS 1.9 would be tagged with the name `cvs1-9'. If you choose a
+consistent convention, then you won't constantly be guessing whether a
+tag is `cvs-1-9' or `cvs1_9' or what. You might even want to consider
+enforcing your convention in the taginfo file (*note user-defined
+logging::).
+
+ The following example shows how you can add a tag to a file. The
+commands must be issued inside your working directory. That is, you
+should issue the command in the directory where `backend.c' resides.
+
+ $ cvs tag rel-0-4 backend.c
+ T backend.c
+ $ cvs status -v backend.c
+ ===================================================================
+ File: backend.c Status: Up-to-date
+
+ Version: 1.4 Tue Dec 1 14:39:01 1992
+ RCS Version: 1.4 /u/cvsroot/yoyodyne/tc/backend.c,v
+ Sticky Tag: (none)
+ Sticky Date: (none)
+ Sticky Options: (none)
+
+ Existing Tags:
+ rel-0-4 (revision: 1.4)
+
+ For a complete summary of the syntax of `cvs tag', including the
+various options, see *Note Invoking CVS::.
+
+ There is seldom reason to tag a file in isolation. A more common
+use is to tag all the files that constitute a module with the same tag
+at strategic points in the development life-cycle, such as when a
+release is made.
+
+ $ cvs tag rel-1-0 .
+ cvs tag: Tagging .
+ T Makefile
+ T backend.c
+ T driver.c
+ T frontend.c
+ T parser.c
+
+ (When you give CVS a directory as argument, it generally applies the
+operation to all the files in that directory, and (recursively), to any
+subdirectories that it may contain. *Note Recursive behavior::.)
+
+ The `checkout' command has a flag, `-r', that lets you check out a
+certain revision of a module. This flag makes it easy to retrieve the
+sources that make up release 1.0 of the module `tc' at any time in the
+future:
+
+ $ cvs checkout -r rel-1-0 tc
+
+This is useful, for instance, if someone claims that there is a bug in
+that release, but you cannot find the bug in the current working copy.
+
+ You can also check out a module as it was at any given date. *Note
+checkout options::. When specifying `-r' to any of these commands, you
+will need beware of sticky tags; see *Note Sticky tags::.
+
+ When you tag more than one file with the same tag you can think
+about the tag as "a curve drawn through a matrix of filename vs.
+revision number." Say we have 5 files with the following revisions:
+
+ file1 file2 file3 file4 file5
+
+ 1.1 1.1 1.1 1.1 /--1.1* <-*- TAG
+ 1.2*- 1.2 1.2 -1.2*-
+ 1.3 \- 1.3*- 1.3 / 1.3
+ 1.4 \ 1.4 / 1.4
+ \-1.5*- 1.5
+ 1.6
+
+ At some time in the past, the `*' versions were tagged. You can
+think of the tag as a handle attached to the curve drawn through the
+tagged revisions. When you pull on the handle, you get all the tagged
+revisions. Another way to look at it is that you "sight" through a set
+of revisions that is "flat" along the tagged revisions, like this:
+
+ file1 file2 file3 file4 file5
+
+ 1.1
+ 1.2
+ 1.1 1.3 _
+ 1.1 1.2 1.4 1.1 /
+ 1.2*----1.3*----1.5*----1.2*----1.1 (--- <--- Look here
+ 1.3 1.6 1.3 \_
+ 1.4 1.4
+ 1.5

-File: cvs.info, Node: admin examples, Prev: admin options, Up: admin
-
-admin examples
---------------
-
-Outdating is dangerous
-......................
-
- First, an example of how *not* to use the `admin' command. It is
-included to stress the fact that this command can be quite dangerous
-unless you know *exactly* what you are doing.
-
- The `-o' option can be used to "outdate" old revisions from the
-history file. If you are short on disc this option might help you.
-But think twice before using it--there is no way short of restoring the
-latest backup to undo this command!
-
- The next line is an example of a command that you would *not* like
-to execute.
-
- $ cvs admin -o:R_1_02 .
-
- The above command will delete all revisions up to, and including,
-the revision that corresponds to the tag R_1_02. But beware! If there
-are files that have not changed between R_1_02 and R_1_03 the file will
-have *the same* numerical revision number assigned to the tags R_1_02
-and R_1_03. So not only will it be impossible to retrieve R_1_02;
-R_1_03 will also have to be restored from the tapes!
-
-Handling binary files
-.....................
-
- If you use CVS to store binary files, where keyword strings (*note
-Keyword substitution::.) might accidentally appear inside the file, you
-should use `cvs admin -ko' to make sure that they are not modified
-automatically. Here is an example of how you can create a new file
-using the `-ko' flag:
-
- $ echo '$Id: cvs.info-3,v 1.1 1995/12/19 09:21:39 deraadt Exp $' > kotest
- $ cvs add -m"A test file" kotest
- $ cvs ci -m"First checkin; contains a keyword" kotest
- $ cvs admin -ko kotest
- $ rm kotest
- $ cvs update kotest
-
- When you check in the file `kotest' the keywords are expanded. (Try
-the above example, and do a `cat kotest' after every command!) The `cvs
-admin -ko' command sets the default keyword substitution method for
-this file, but it does not alter the working copy of the file that you
-have. The easiest way to get the unexpanded version of `kotest' is to
-remove it and check it out again.
-
-Comment leaders
-...............
-
- If you use the `$Log: cvs.info-3,v $
- If you use the `Revision 1.1 1995/12/19 09:21:39 deraadt
- If you use the `Initial revision
- If you use the `' keyword and you do not agree with the guess
-for comment leader that CVS has done, you can enforce your will with
-`cvs admin -c'. This might be suitable for `nroff' source:
-
- $ cvs admin -c'.\" ' *.man
- $ rm *.man
- $ cvs update
-
- The two last steps are to make sure that you get the versions with
-correct comment leaders in your working files.
+File: cvs.info, Node: Tagging the working directory, Next: Tagging by date/tag, Prev: Tags, Up: Revisions
+
+Specifying what to tag from the working directory
+=================================================
+
+ The example in the previous section demonstrates one of the most
+common ways to choose which revisions to tag. Namely, running the `cvs
+tag' command without arguments causes CVS to select the revisions which
+are checked out in the current working directory. For example, if the
+copy of `backend.c' in working directory was checked out from revision
+1.4, then CVS will tag revision 1.4. Note that the tag is applied
+immediately to revision 1.4 in the repository; tagging is not like
+modifying a file, or other operations in which one first modifies the
+working directory and then runs `cvs commit' to transfer that
+modification to the repository.
+
+ One potentially surprising aspect of the fact that `cvs tag'
+operates on the repository is that you are tagging the checked-in
+revisions, which may differ from locally modified files in your working
+directory. If you want to avoid doing this by mistake, specify the
+`-c' option to `cvs tag'. If there are any locally modified files, CVS
+will abort with an error before it tags any files:
+
+ $ cvs tag -c rel-0-4
+ cvs tag: backend.c is locally modified
+ cvs [tag aborted]: correct the above errors first!

-File: cvs.info, Node: checkout, Next: commit, Prev: admin, Up: Invoking CVS
-
-checkout--Check out sources for editing
-=======================================
-
- * Synopsis: checkout [options] modules...
-
- * Requires: repository.
-
- * Changes: working directory.
+File: cvs.info, Node: Tagging by date/tag, Next: Modifying tags, Prev: Tagging the working directory, Up: Revisions
- * Synonyms: co, get
-
- Make a working directory containing copies of the source files
-specified by MODULES. You must execute `checkout' before using most of
-the other CVS commands, since most of them operate on your working
-directory.
-
- The MODULES part of the command are either symbolic names for some
-collection of source directories and files, or paths to directories or
-files in the repository. The symbolic names are defined in the
-`modules' file. *Note modules::.
-
- Depending on the modules you specify, `checkout' may recursively
-create directories and populate them with the appropriate source files.
-You can then edit these source files at any time (regardless of
-whether other software developers are editing their own copies of the
-sources); update them to include new changes applied by others to the
-source repository; or commit your work as a permanent change to the
-source repository.
-
- Note that `checkout' is used to create directories. The top-level
-directory created is always added to the directory where `checkout' is
-invoked, and usually has the same name as the specified module. In the
-case of a module alias, the created sub-directory may have a different
-name, but you can be sure that it will be a sub-directory, and that
-`checkout' will show the relative path leading to each file as it is
-extracted into your private work area (unless you specify the `-Q'
-global option).
-
- Running `checkout' on a directory that was already built by a prior
-`checkout' is also permitted, and has the same effect as specifying the
-`-d' option to the `update' command, that is, any new directories that
-have been created in the repository will appear in your work area.
-*Note update::.
-
-* Menu:
-
-* checkout options:: checkout options
-* checkout examples:: checkout examples
-
-
-File: cvs.info, Node: checkout options, Next: checkout examples, Up: checkout
+Specifying what to tag by date or revision
+==========================================
-checkout options
-----------------
+ The `cvs rtag' command tags the repository as of a certain date or
+time (or can be used to tag the latest revision). `rtag' works
+directly on the repository contents (it requires no prior checkout and
+does not look for a working directory).
- These standard options are supported by `checkout' (*note Common
-options::., for a complete description of them):
+ The following options specify which date or revision to tag. See
+*Note Common options::, for a complete description of them.
`-D DATE'
- Use the most recent revision no later than DATE. This option is
- sticky, and implies `-P'.
+ Tag the most recent revision no later than DATE.
`-f'
Only useful with the `-D DATE' or `-r TAG' flags. If no matching
- revision is found, retrieve the most recent revision (instead of
+ revision is found, use the most recent revision (instead of
ignoring the file).
-`-k KFLAG'
- Process RCS keywords according to KFLAG. See co(1). This option
- is sticky; future updates of this file in this working directory
- will use the same KFLAG. The `status' command can be viewed to
- see the sticky options. *Note status::.
-
-`-l'
- Local; run only in current working directory.
-
-`-n'
- Do not run any checkout program (as specified with the `-o' option
- in the modules file; *note modules::.).
-
-`-P'
- Prune empty directories.
-
-`-p'
- Pipe files to the standard output.
-
`-r TAG'
- Use revision TAG. This option is sticky, and implies `-P'.
-
- In addition to those, you can use these special command options with
-`checkout':
-
-`-A'
- Reset any sticky tags, dates, or `-k' options. (If you get a
- working file using one of the `-r', `-D', or `-k' options, CVS
- remembers the corresponding tag, date, or KFLAG and continues using
- it for future updates; use the `-A' option to make CVS forget
- these specifications, and retrieve the `head' revision of the
- file).
-
-`-c'
- Copy the module file, sorted, to the standard output, instead of
- creating or modifying any files or directories in your working
- directory.
-
-`-d DIR'
- Create a directory called DIR for the working files, instead of
- using the module name. Unless you also use `-N', the paths
- created under DIR will be as short as possible.
-
-`-j TAG'
- Merge the changes made between the resulting revision and the
- revision that it is based on (e.g., if TAG refers to a branch, CVS
- will merge all changes made on that branch into your working file).
-
- With two `-j TAG' options, CVS will merge in the changes between
- the two respective revisions. This can be used to undo changes
- made between two revisions (*note Merging two revisions::.) in
- your working copy, or to move changes between different branches.
-
- In addition, each -j option can contain an optional date
- specification which, when used with branches, can limit the chosen
- revision to one within a specific date. An optional date is
- specified by adding a colon (:) to the tag. An example might be
- what `import' tells you to do when you have just imported sources
- that have conflicts with local changes:
-
- $ cvs checkout -jTAG:yesterday -jTAG module
-
-`-N'
- Only useful together with `-d DIR'. With this option, CVS will
- not shorten module paths in your working directory. (Normally,
- CVS shortens paths as much as possible when you specify an
- explicit target directory).
-
-`-s'
- Like `-c', but include the status of all modules, and sort it by
- the status string. *Note modules::, for info about the `-s'
- option that is used inside the modules file to set the module
- status.
+ Only tag those files that contain existing tag TAG.
-
-File: cvs.info, Node: checkout examples, Prev: checkout options, Up: checkout
+ The `cvs tag' command also allows one to specify files by revision
+or date, using the same `-r', `-D', and `-f' options. However, this
+feature is probably not what you want. The reason is that `cvs tag'
+chooses which files to tag based on the files that exist in the working
+directory, rather than the files which existed as of the given tag/date.
+Therefore, you are generally better off using `cvs rtag'. The
+exceptions might be cases like:
-checkout examples
------------------
-
- Get a copy of the module `tc':
-
- $ cvs checkout tc
-
- Get a copy of the module `tc' as it looked one day ago:
-
- $ cvs checkout -D yesterday tc
+ cvs tag -r 1.4 backend.c

-File: cvs.info, Node: commit, Next: diff, Prev: checkout, Up: Invoking CVS
-
-commit--Check files into the repository
-=======================================
+File: cvs.info, Node: Modifying tags, Next: Tagging add/remove, Prev: Tagging by date/tag, Up: Revisions
- * Version 1.3 Synopsis: commit [-lnR] [-m 'log_message' | -f file]
- [-r revision] [files...]
+Deleting, moving, and renaming tags
+===================================
- * Version 1.3.1 Synopsis: commit [-lnRf] [-m 'log_message' | -F
- file] [-r revision] [files...]
+ Normally one does not modify tags. They exist in order to record
+the history of the repository and so deleting them or changing their
+meaning would, generally, not be what you want.
- * Requires: working directory, repository.
+ However, there might be cases in which one uses a tag temporarily or
+accidentally puts one in the wrong place. Therefore, one might delete,
+move, or rename a tag. Warning: the commands in this section are
+dangerous; they permanently discard historical information and it can
+difficult or impossible to recover from errors. If you are a CVS
+administrator, you may consider restricting these commands with taginfo
+(*note user-defined logging::).
- * Changes: repository.
+ To delete a tag, specify the `-d' option to either `cvs tag' or `cvs
+rtag'. For example:
- * Synonym: ci
+ cvs rtag -d rel-0-4 tc
- *Warning:* The `-f FILE' option will probably be renamed to `-F
-FILE', and `-f' will be given a new behavior in future releases of CVS.
+ deletes the tag `rel-0-4' from the module `tc'.
- Use `commit' when you want to incorporate changes from your working
-source files into the source repository.
+ When we say "move" a tag, we mean to make the same name point to
+different revisions. For example, the `stable' tag may currently point
+to revision 1.4 of `backend.c' and perhaps we want to make it point to
+revision 1.6. To move a tag, specify the `-F' option to either `cvs
+tag' or `cvs rtag'. For example, the task just mentioned might be
+accomplished as:
- If you don't specify particular files to commit, all of the files in
-your working current directory are examined. `commit' is careful to
-change in the repository only those files that you have really changed.
-By default (or if you explicitly specify the `-R' option), files in
-subdirectories are also examined and committed if they have changed;
-you can use the `-l' option to limit `commit' to the current directory
-only.
+ cvs tag -r 1.6 -F stable backend.c
- `commit' verifies that the selected files are up to date with the
-current revisions in the source repository; it will notify you, and
-exit without committing, if any of the specified files must be made
-current first with `update' (*note update::.). `commit' does not call
-the `update' command for you, but rather leaves that for you to do when
-the time is right.
+ When we say "rename" a tag, we mean to make a different name point
+to the same revisions as the old tag. For example, one may have
+misspelled the tag name and want to correct it (hopefully before others
+are relying on the old spelling). To rename a tag, first create a new
+tag using the `-r' option to `cvs rtag', and then delete the old name.
+This leaves the new tag on exactly the same files as the old tag. For
+example:
- When all is well, an editor is invoked to allow you to enter a log
-message that will be written to one or more logging programs (*note
-modules::., and *note loginfo::.) and placed in the RCS history file
-inside the repository. This log message can be retrieved with the
-`log' command; *Note log::. You can specify the log message on the
-command line with the `-m MESSAGE' option, and thus avoid the editor
-invocation, or use the `-f FILE' option to specify that the argument
-file contains the log message.
-
-* Menu:
-
-* commit options:: commit options
-* commit examples:: commit examples
+ cvs rtag -r old-name-0-4 rel-0-4 tc
+ cvs rtag -d old-name-0-4 tc

-File: cvs.info, Node: commit options, Next: commit examples, Up: commit
-
-commit options
---------------
-
- These standard options are supported by `commit' (*note Common
-options::., for a complete description of them):
-
-`-l'
- Local; run only in current working directory.
-
-`-n'
- Do not run any module program.
-
-`-R'
- Commit directories recursively. This is on by default.
-
-`-r REVISION'
- Commit to REVISION. REVISION must be either a branch, or a
- revision on the main trunk that is higher than any existing
- revision number. You cannot commit to a specific revision on a
- branch.
-
- `commit' also supports these options:
-
-`-F FILE'
- This option is present in CVS releases 1.3-s3 and later. Read the
- log message from FILE, instead of invoking an editor.
-
-`-f'
- This option is present in CVS 1.3-s3 and later releases of CVS.
- Note that this is not the standard behavior of the `-f' option as
- defined in *Note Common options::.
-
- Force CVS to commit a new revision even if you haven't made any
- changes to the file. If the current revision of FILE is 1.7, then
- the following two commands are equivalent:
-
- $ cvs commit -f FILE
- $ cvs commit -r 1.8 FILE
-
-`-f FILE'
- This option is present in CVS releases 1.3, 1.3-s1 and 1.3-s2.
- Note that this is not the standard behavior of the `-f' option as
- defined in *Note Common options::.
-
- Read the log message from FILE, instead of invoking an editor.
-
-`-m MESSAGE'
- Use MESSAGE as the log message, instead of invoking an editor.
+File: cvs.info, Node: Tagging add/remove, Next: Sticky tags, Prev: Modifying tags, Up: Revisions
+
+Tagging and adding and removing files
+=====================================
+
+ The subject of exactly how tagging interacts with adding and
+removing files is somewhat obscure; for the most part CVS will keep
+track of whether files exist or not without too much fussing. By
+default, tags are applied to only files which have a revision
+corresponding to what is being tagged. Files which did not exist yet,
+or which were already removed, simply omit the tag, and CVS knows to
+treat the absence of a tag as meaning that the file didn't exist as of
+that tag.
+
+ However, this can lose a small amount of information. For example,
+suppose a file was added and then removed. Then, if the tag is missing
+for that file, there is no way to know whether the tag refers to the
+time before the file was added, or the time after it was removed. If
+you specify the `-r' option to `cvs rtag', then CVS tags the files
+which have been removed, and thereby avoids this problem. For example,
+one might specify `-r HEAD' to tag the head.
+
+ On the subject of adding and removing files, the `cvs rtag' command
+has a `-a' option which means to clear the tag from removed files that
+would not otherwise be tagged. For example, one might specify this
+option in conjunction with `-F' when moving a tag. If one moved a tag
+without `-a', then the tag in the removed files might still refer to
+the old revision, rather than reflecting the fact that the file had
+been removed. I don't think this is necessary if `-r' is specified, as
+noted above.

-File: cvs.info, Node: commit examples, Prev: commit options, Up: commit
-
-commit examples
----------------
-
-New major release number
-........................
-
- When you make a major release of your product, you might want the
-revision numbers to track your major release number. You should
-normally not care about the revision numbers, but this is a thing that
-many people want to do, and it can be done without doing any harm.
-
- To bring all your files up to the RCS revision 3.0 (including those
-that haven't changed), you might do:
-
- $ cvs commit -r 3.0
-
- Note that it is generally a bad idea to try to make the RCS revision
-number equal to the current release number of your product. You should
-think of the revision number as an internal number that the CVS package
-maintains, and that you generally never need to care much about. Using
-the `tag' and `rtag' commands you can give symbolic names to the
-releases instead. *Note tag:: and *Note rtag::.
-
- Note that the number you specify with `-r' must be larger than any
-existing revision number. That is, if revision 3.0 exists, you cannot
-`cvs commit -r 1.3'.
-
-Committing to a branch
-......................
-
- You can commit to a branch revision (one that has an even number of
-dots) with the `-r' option. To create a branch revision, use the `-b'
-option of the `rtag' or `tag' commands (*note tag::. or *note
-rtag::.). Then, either `checkout' or `update' can be used to base your
-sources on the newly created branch. From that point on, all `commit'
-changes made within these working sources will be automatically added
-to a branch revision, thereby not disturbing main-line development in
-any way. For example, if you had to create a patch to the 1.2 version
-of the product, even though the 2.0 version is already under
-development, you might do:
-
- $ cvs rtag -b -r FCS1_2 FCS1_2_Patch product_module
- $ cvs checkout -r FCS1_2_Patch product_module
- $ cd product_module
- [[ hack away ]]
- $ cvs commit
-
-This works automatically since the `-r' option is sticky.
-
-Creating the branch after editing
-.................................
-
- Say you have been working on some extremely experimental software,
-based on whatever revision you happened to checkout last week. If
-others in your group would like to work on this software with you, but
-without disturbing main-line development, you could commit your change
-to a new branch. Others can then checkout your experimental stuff and
-utilize the full benefit of CVS conflict resolution. The scenario might
-look like:
-
- [[ hacked sources are present ]]
- $ cvs tag -b EXPR1
- $ cvs update -r EXPR1
- $ cvs commit
-
- The `update' command will make the `-r EXPR1' option sticky on all
-files. Note that your changes to the files will never be removed by the
-`update' command. The `commit' will automatically commit to the
-correct branch, because the `-r' is sticky. You could also do like
-this:
-
- [[ hacked sources are present ]]
- $ cvs tag -b EXPR1
- $ cvs commit -r EXPR1
-
-but then, only those files that were changed by you will have the `-r
-EXPR1' sticky flag. If you hack away, and commit without specifying
-the `-r EXPR1' flag, some files may accidentally end up on the main
-trunk.
-
- To work with you on the experimental change, others would simply do
-
- $ cvs checkout -r EXPR1 whatever_module
+File: cvs.info, Node: Sticky tags, Prev: Tagging add/remove, Up: Revisions
+
+Sticky tags
+===========
+
+ Sometimes a working copy's revision has extra data associated with
+it, for example it might be on a branch (*note Branching and
+merging::), or restricted to versions prior to a certain date by
+`checkout -D' or `update -D'. Because this data persists - that is, it
+applies to subsequent commands in the working copy - we refer to it as
+"sticky".
+
+ Most of the time, stickiness is an obscure aspect of CVS that you
+don't need to think about. However, even if you don't want to use the
+feature, you may need to know _something_ about sticky tags (for
+example, how to avoid them!).
+
+ You can use the `status' command to see if any sticky tags or dates
+are set:
+
+ $ cvs status driver.c
+ ===================================================================
+ File: driver.c Status: Up-to-date
+
+ Version: 1.7.2.1 Sat Dec 5 19:35:03 1992
+ RCS Version: 1.7.2.1 /u/cvsroot/yoyodyne/tc/driver.c,v
+ Sticky Tag: rel-1-0-patches (branch: 1.7.2)
+ Sticky Date: (none)
+ Sticky Options: (none)
+
+ The sticky tags will remain on your working files until you delete
+them with `cvs update -A'. The `-A' option retrieves the version of
+the file from the head of the trunk, and forgets any sticky tags,
+dates, or options.
+
+ The most common use of sticky tags is to identify which branch one
+is working on, as described in *Note Accessing branches::. However,
+non-branch sticky tags have uses as well. For example, suppose that
+you want to avoid updating your working directory, to isolate yourself
+from possibly destabilizing changes other people are making. You can,
+of course, just refrain from running `cvs update'. But if you want to
+avoid updating only a portion of a larger tree, then sticky tags can
+help. If you check out a certain revision (such as 1.4) it will become
+sticky. Subsequent `cvs update' commands will not retrieve the latest
+revision until you reset the tag with `cvs update -A'. Likewise, use
+of the `-D' option to `update' or `checkout' sets a "sticky date",
+which, similarly, causes that date to be used for future retrievals.
+
+ People often want to retrieve an old version of a file without
+setting a sticky tag. This can be done with the `-p' option to
+`checkout' or `update', which sends the contents of the file to
+standard output. For example:
+ $ cvs update -p -r 1.1 file1 >file1
+ ===================================================================
+ Checking out file1
+ RCS: /tmp/cvs-sanity/cvsroot/first-dir/Attic/file1,v
+ VERS: 1.1
+ ***************
+ $
+
+ However, this isn't the easiest way, if you are asking how to undo a
+previous checkin (in this example, put `file1' back to the way it was
+as of revision 1.1). In that case you are better off using the `-j'
+option to `update'; for further discussion see *Note Merging two
+revisions::.

-File: cvs.info, Node: diff, Next: export, Prev: commit, Up: Invoking CVS
-
-diff--Run diffs between revisions
-=================================
-
- * Synopsis: diff [-l] [rcsdiff_options] [[-r rev1 | -D date1] [-r
- rev2 | -D date2]] [files...]
+File: cvs.info, Node: Branching and merging, Next: Recursive behavior, Prev: Revisions, Up: Top
- * Requires: working directory, repository.
+Branching and merging
+*********************
- * Changes: nothing.
+ CVS allows you to isolate changes onto a separate line of
+development, known as a "branch". When you change files on a branch,
+those changes do not appear on the main trunk or other branches.
- The `diff' command is used to compare different revisions of files.
-The default action is to compare your working files with the revisions
-they were based on, and report any differences that are found.
-
- If any file names are given, only those files are compared. If any
-directories are given, all files under them will be compared.
-
- The exit status will be 0 if no differences were found, 1 if some
-differences were found, and 2 if any error occurred.
+ Later you can move changes from one branch to another branch (or the
+main trunk) by "merging". Merging involves first running `cvs update
+-j', to merge the changes into the working directory. You can then
+commit that revision, and thus effectively copy the changes onto
+another branch.
* Menu:
-* diff options:: diff options
-* diff examples:: diff examples
+* Branches motivation:: What branches are good for
+* Creating a branch:: Creating a branch
+* Accessing branches:: Checking out and updating branches
+* Branches and revisions:: Branches are reflected in revision numbers
+* Magic branch numbers:: Magic branch numbers
+* Merging a branch:: Merging an entire branch
+* Merging more than once:: Merging from a branch several times
+* Merging two revisions:: Merging differences between two revisions
+* Merging adds and removals:: What if files are added or removed?
+* Merging and keywords:: Avoiding conflicts due to keyword substitution

-File: cvs.info, Node: diff options, Next: diff examples, Up: diff
-
-diff options
-------------
-
- These standard options are supported by `diff' (*note Common
-options::., for a complete description of them):
-
-`-D DATE'
- Use the most recent revision no later than DATE. See `-r' for how
- this affects the comparison.
-
- CVS can be configured to pass the `-D' option through to `rcsdiff'
- (which in turn passes it on to `diff'. GNU diff uses `-D' as a
- way to put `cpp'-style `#define' statements around the output
- differences. There is no way short of testing to figure out how
- CVS was configured. In the default configuration CVS will use the
- `-D DATE' option.
-
-`-k KFLAG'
- Process RCS keywords according to KFLAG. See co(1).
-
-`-l'
- Local; run only in current working directory.
-
-`-R'
- Examine directories recursively. This option is on by default.
-
-`-r TAG'
- Compare with revision TAG. Zero, one or two `-r' options can be
- present. With no `-r' option, the working file will be compared
- with the revision it was based on. With one `-r', that revision
- will be compared to your current working file. With two `-r'
- options those two revisions will be compared (and your working
- file will not affect the outcome in any way).
-
- One or both `-r' options can be replaced by a `-D DATE' option,
- described above.
-
- Any other options that are found are passed through to `rcsdiff',
-which in turn passes them to `diff'. The exact meaning of the options
-depends on which `diff' you are using. The long options introduced in
-GNU diff 2.0 are not yet supported in CVS. See the documentation for
-your `diff' to see which options are supported.
+File: cvs.info, Node: Branches motivation, Next: Creating a branch, Up: Branching and merging
+
+What branches are good for
+==========================
+
+ Suppose that release 1.0 of tc has been made. You are continuing to
+develop tc, planning to create release 1.1 in a couple of months.
+After a while your customers start to complain about a fatal bug. You
+check out release 1.0 (*note Tags::) and find the bug (which turns out
+to have a trivial fix). However, the current revision of the sources
+are in a state of flux and are not expected to be stable for at least
+another month. There is no way to make a bugfix release based on the
+newest sources.
+
+ The thing to do in a situation like this is to create a "branch" on
+the revision trees for all the files that make up release 1.0 of tc.
+You can then make modifications to the branch without disturbing the
+main trunk. When the modifications are finished you can elect to
+either incorporate them on the main trunk, or leave them on the branch.

-File: cvs.info, Node: diff examples, Prev: diff options, Up: diff
-
-diff examples
--------------
+File: cvs.info, Node: Creating a branch, Next: Accessing branches, Prev: Branches motivation, Up: Branching and merging
- The following line produces a Unidiff (`-u' flag) between revision
-1.14 and 1.19 of `backend.c'. Due to the `-kk' flag no keywords are
-substituted, so differences that only depend on keyword substitution
-are ignored.
+Creating a branch
+=================
- $ cvs diff -kk -u -r 1.14 -r 1.19 backend.c
+ You can create a branch with `tag -b'; for example, assuming you're
+in a working copy:
- Suppose the experimental branch EXPR1 was based on a set of files
-tagged RELEASE_1_0. To see what has happened on that branch, the
-following can be used:
+ $ cvs tag -b rel-1-0-patches
- $ cvs diff -r RELEASE_1_0 -r EXPR1
+ This splits off a branch based on the current revisions in the
+working copy, assigning that branch the name `rel-1-0-patches'.
- A command like this can be used to produce a context diff between
-two releases:
+ It is important to understand that branches get created in the
+repository, not in the working copy. Creating a branch based on
+current revisions, as the above example does, will _not_ automatically
+switch the working copy to be on the new branch. For information on how
+to do that, see *Note Accessing branches::.
- $ cvs diff -c -r RELEASE_1_0 -r RELEASE_1_1 > diffs
+ You can also create a branch without reference to any working copy,
+by using `rtag':
- If you are maintaining ChangeLogs, a command like the following just
-before you commit your changes may help you write the ChangeLog entry.
-All local modifications that have not yet been committed will be
-printed.
-
- $ cvs diff -u | less
-
-
-File: cvs.info, Node: export, Next: history, Prev: diff, Up: Invoking CVS
+ $ cvs rtag -b -r rel-1-0 rel-1-0-patches tc
-export--Export sources from CVS, similar to checkout
-====================================================
+ `-r rel-1-0' says that this branch should be rooted at the revision
+that corresponds to the tag `rel-1-0'. It need not be the most recent
+revision - it's often useful to split a branch off an old revision (for
+example, when fixing a bug in a past release otherwise known to be
+stable).
- * Synopsis: export [-flNnQq] -r rev|-D date [-d dir] module...
+ As with `tag', the `-b' flag tells `rtag' to create a branch (rather
+than just a symbolic revision name). Note that the numeric revision
+number that matches `rel-1-0' will probably be different from file to
+file.
- * Requires: repository.
-
- * Changes: current directory.
-
- This command is a variant of `checkout'; use it when you want a copy
-of the source for module without the CVS administrative directories.
-For example, you might use `export' to prepare source for shipment
-off-site. This command requires that you specify a date or tag (with
-`-D' or `-r'), so that you can count on reproducing the source you ship
-to others.
-
- The keyword substitution option `-kv' is always set when export is
-used. This causes any RCS keywords to be expanded such that an import
-done at some other site will not lose the keyword revision information.
-There is no way to override this. Note that this breaks the `ident'
-command (which is part of the RCS suite--see ident(1)) which looks for
-RCS keyword strings. If you want to be able to use `ident' you must
-use `checkout' instead.
-
-* Menu:
+ So, the full effect of the command is to create a new branch - named
+`rel-1-0-patches' - in module `tc', rooted in the revision tree at the
+point tagged by `rel-1-0'.
-* export options:: export options
+
+File: cvs.info, Node: Accessing branches, Next: Branches and revisions, Prev: Creating a branch, Up: Branching and merging
+
+Accessing branches
+==================
+
+ You can retrieve a branch in one of two ways: by checking it out
+fresh from the repository, or by switching an existing working copy
+over to the branch.
+
+ To check out a branch from the repository, invoke `checkout' with
+the `-r' flag, followed by the tag name of the branch (*note Creating a
+branch::):
+
+ $ cvs checkout -r rel-1-0-patches tc
+
+ Or, if you already have a working copy, you can switch it to a given
+branch with `update -r':
+
+ $ cvs update -r rel-1-0-patches tc
+
+ or equivalently:
+
+ $ cd tc
+ $ cvs update -r rel-1-0-patches
+
+ It does not matter if the working copy was originally on the main
+trunk or on some other branch - the above command will switch it to the
+named branch. And similarly to a regular `update' command, `update -r'
+merges any changes you have made, notifying you of conflicts where they
+occur.
+
+ Once you have a working copy tied to a particular branch, it remains
+there until you tell it otherwise. This means that changes checked in
+from the working copy will add new revisions on that branch, while
+leaving the main trunk and other branches unaffected.
+
+ To find out what branch a working copy is on, you can use the
+`status' command. In its output, look for the field named `Sticky tag'
+(*note Sticky tags::) - that's CVS's way of telling you the branch, if
+any, of the current working files:
+
+ $ cvs status -v driver.c backend.c
+ ===================================================================
+ File: driver.c Status: Up-to-date
+
+ Version: 1.7 Sat Dec 5 18:25:54 1992
+ RCS Version: 1.7 /u/cvsroot/yoyodyne/tc/driver.c,v
+ Sticky Tag: rel-1-0-patches (branch: 1.7.2)
+ Sticky Date: (none)
+ Sticky Options: (none)
+
+ Existing Tags:
+ rel-1-0-patches (branch: 1.7.2)
+ rel-1-0 (revision: 1.7)
+
+ ===================================================================
+ File: backend.c Status: Up-to-date
+
+ Version: 1.4 Tue Dec 1 14:39:01 1992
+ RCS Version: 1.4 /u/cvsroot/yoyodyne/tc/backend.c,v
+ Sticky Tag: rel-1-0-patches (branch: 1.4.2)
+ Sticky Date: (none)
+ Sticky Options: (none)
+
+ Existing Tags:
+ rel-1-0-patches (branch: 1.4.2)
+ rel-1-0 (revision: 1.4)
+ rel-0-4 (revision: 1.4)
+
+ Don't be confused by the fact that the branch numbers for each file
+are different (`1.7.2' and `1.4.2' respectively). The branch tag is the
+same, `rel-1-0-patches', and the files are indeed on the same branch.
+The numbers simply reflect the point in each file's revision history at
+which the branch was made. In the above example, one can deduce that
+`driver.c' had been through more changes than `backend.c' before this
+branch was created.
+
+ See *Note Branches and revisions:: for details about how branch
+numbers are constructed.

-File: cvs.info, Node: export options, Up: export
+File: cvs.info, Node: Branches and revisions, Next: Magic branch numbers, Prev: Accessing branches, Up: Branching and merging
+
+Branches and revisions
+======================
+
+ Ordinarily, a file's revision history is a linear series of
+increments (*note Revision numbers::):
+
+ +-----+ +-----+ +-----+ +-----+ +-----+
+ ! 1.1 !----! 1.2 !----! 1.3 !----! 1.4 !----! 1.5 !
+ +-----+ +-----+ +-----+ +-----+ +-----+
+
+ However, CVS is not limited to linear development. The "revision
+tree" can be split into "branches", where each branch is a
+self-maintained line of development. Changes made on one branch can
+easily be moved back to the main trunk.
+
+ Each branch has a "branch number", consisting of an odd number of
+period-separated decimal integers. The branch number is created by
+appending an integer to the revision number where the corresponding
+branch forked off. Having branch numbers allows more than one branch
+to be forked off from a certain revision.
+
+ All revisions on a branch have revision numbers formed by appending
+an ordinal number to the branch number. The following figure
+illustrates branching with an example.
+
+ +-------------+
+ Branch 1.2.2.3.2 -> ! 1.2.2.3.2.1 !
+ / +-------------+
+ /
+ /
+ +---------+ +---------+ +---------+
+ Branch 1.2.2 -> _! 1.2.2.1 !----! 1.2.2.2 !----! 1.2.2.3 !
+ / +---------+ +---------+ +---------+
+ /
+ /
+ +-----+ +-----+ +-----+ +-----+ +-----+
+ ! 1.1 !----! 1.2 !----! 1.3 !----! 1.4 !----! 1.5 ! <- The main trunk
+ +-----+ +-----+ +-----+ +-----+ +-----+
+ !
+ !
+ ! +---------+ +---------+ +---------+
+ Branch 1.2.4 -> +---! 1.2.4.1 !----! 1.2.4.2 !----! 1.2.4.3 !
+ +---------+ +---------+ +---------+
+
+ The exact details of how the branch number is constructed is not
+something you normally need to be concerned about, but here is how it
+works: When CVS creates a branch number it picks the first unused even
+integer, starting with 2. So when you want to create a branch from
+revision 6.4 it will be numbered 6.4.2. All branch numbers ending in a
+zero (such as 6.4.0) are used internally by CVS (*note Magic branch
+numbers::). The branch 1.1.1 has a special meaning. *Note Tracking
+sources::.
-export options
---------------
+
+File: cvs.info, Node: Magic branch numbers, Next: Merging a branch, Prev: Branches and revisions, Up: Branching and merging
- These standard options are supported by `export' (*note Common
-options::., for a complete description of them):
+Magic branch numbers
+====================
-`-D DATE'
- Use the most recent revision no later than DATE.
+ This section describes a CVS feature called "magic branches". For
+most purposes, you need not worry about magic branches; CVS handles
+them for you. However, they are visible to you in certain
+circumstances, so it may be useful to have some idea of how it works.
-`-f'
- If no matching revision is found, retrieve the most recent
- revision (instead of ignoring the file).
+ Externally, branch numbers consist of an odd number of dot-separated
+decimal integers. *Note Revision numbers::. That is not the whole
+truth, however. For efficiency reasons CVS sometimes inserts an extra 0
+in the second rightmost position (1.2.4 becomes 1.2.0.4, 8.9.10.11.12
+becomes 8.9.10.11.0.12 and so on).
-`-l'
- Local; run only in current working directory.
+ CVS does a pretty good job at hiding these so called magic branches,
+but in a few places the hiding is incomplete:
-`-n'
- Do not run any checkout program.
+ * The magic branch number appears in the output from `cvs log'.
-`-R'
- Export directories recursively. This is on by default.
+ * You cannot specify a symbolic branch name to `cvs admin'.
-`-r TAG'
- Use revision TAG.
- In addition, these options (that are common to `checkout' and
-`export') are also supported:
+ You can use the `admin' command to reassign a symbolic name to a
+branch the way RCS expects it to be. If `R4patches' is assigned to the
+branch 1.4.2 (magic branch number 1.4.0.2) in file `numbers.c' you can
+do this:
-`-d DIR'
- Create a directory called DIR for the working files, instead of
- using the module name. Unless you also use `-N', the paths
- created under DIR will be as short as possible.
+ $ cvs admin -NR4patches:1.4.2 numbers.c
-`-N'
- Only useful together with `-d DIR'. With this option, CVS will
- not shorten module paths in your working directory. (Normally,
- CVS shortens paths as much as possible when you specify an
- explicit target directory.)
+ It only works if at least one revision is already committed on the
+branch. Be very careful so that you do not assign the tag to the wrong
+number. (There is no way to see how the tag was assigned yesterday).

-File: cvs.info, Node: history, Next: import, Prev: export, Up: Invoking CVS
+File: cvs.info, Node: Merging a branch, Next: Merging more than once, Prev: Magic branch numbers, Up: Branching and merging
-history--Show status of files and users
-=======================================
+Merging an entire branch
+========================
- * Synopsis: history [-report] [-flags] [-options args] [files...]
+ You can merge changes made on a branch into your working copy by
+giving the `-j BRANCHNAME' flag to the `update' subcommand. With one
+`-j BRANCHNAME' option it merges the changes made between the point
+where the branch forked and newest revision on that branch (into your
+working copy).
- * Requires: the file `$CVSROOT/CVSROOT/history'
+ The `-j' stands for "join".
- * Changes: nothing.
+ Consider this revision tree:
- CVS can keep a history file that tracks each use of the `checkout',
-`commit', `rtag', `update', and `release' commands. You can use
-`history' to display this information in various formats.
+ +-----+ +-----+ +-----+ +-----+
+ ! 1.1 !----! 1.2 !----! 1.3 !----! 1.4 ! <- The main trunk
+ +-----+ +-----+ +-----+ +-----+
+ !
+ !
+ ! +---------+ +---------+
+ Branch R1fix -> +---! 1.2.2.1 !----! 1.2.2.2 !
+ +---------+ +---------+
- Logging must be enabled by creating the file
-`$CVSROOT/CVSROOT/history'.
+The branch 1.2.2 has been given the tag (symbolic name) `R1fix'. The
+following example assumes that the module `mod' contains only one file,
+`m.c'.
- *Warning:* `history' uses `-f', `-l', `-n', and `-p' in ways that
-conflict with the normal use inside CVS (*note Common options::.).
-
-* Menu:
-
-* history options:: history options
-
-
-File: cvs.info, Node: history options, Up: history
+ $ cvs checkout mod # Retrieve the latest revision, 1.4
+
+ $ cvs update -j R1fix m.c # Merge all changes made on the branch,
+ # i.e. the changes between revision 1.2
+ # and 1.2.2.2, into your working copy
+ # of the file.
+
+ $ cvs commit -m "Included R1fix" # Create revision 1.5.
-history options
----------------
+ A conflict can result from a merge operation. If that happens, you
+should resolve it before committing the new revision. *Note Conflicts
+example::.
- Several options (shown above as `-report') control what kind of
-report is generated:
+ If your source files contain keywords (*note Keyword substitution::),
+you might be getting more conflicts than strictly necessary. See *Note
+Merging and keywords::, for information on how to avoid this.
-`-c'
- Report on each time commit was used (i.e., each time the
- repository was modified).
+ The `checkout' command also supports the `-j BRANCHNAME' flag. The
+same effect as above could be achieved with this:
-`-e'
- Everything (all record types); equivalent to specifying
- `-xMACFROGWUT'.
+ $ cvs checkout -j R1fix mod
+ $ cvs commit -m "Included R1fix"
-`-m MODULE'
- Report on a particular module. (You can meaningfully use `-m'
- more than once on the command line.)
+ It should be noted that `update -j TAGNAME' will also work but may
+not produce the desired result. *Note Merging adds and removals::, for
+more.
-`-o'
- Report on checked-out modules.
-
-`-T'
- Report on all tags.
-
-`-x TYPE'
- Extract a particular set of record types TYPE from the CVS
- history. The types are indicated by single letters, which you may
- specify in combination.
-
- Certain commands have a single record type:
-
- `F'
- release
-
- `O'
- checkout
+
+File: cvs.info, Node: Merging more than once, Next: Merging two revisions, Prev: Merging a branch, Up: Branching and merging
- `T'
- rtag
+Merging from a branch several times
+===================================
- One of four record types may result from an update:
+ Continuing our example, the revision tree now looks like this:
- `C'
- A merge was necessary but collisions were detected (requiring
- manual merging).
+ +-----+ +-----+ +-----+ +-----+ +-----+
+ ! 1.1 !----! 1.2 !----! 1.3 !----! 1.4 !----! 1.5 ! <- The main trunk
+ +-----+ +-----+ +-----+ +-----+ +-----+
+ ! *
+ ! *
+ ! +---------+ +---------+
+ Branch R1fix -> +---! 1.2.2.1 !----! 1.2.2.2 !
+ +---------+ +---------+
- `G'
- A merge was necessary and it succeeded.
+ where the starred line represents the merge from the `R1fix' branch
+to the main trunk, as just discussed.
- `U'
- A working file was copied from the repository.
+ Now suppose that development continues on the `R1fix' branch:
- `W'
- The working copy of a file was deleted during update (because
- it was gone from the repository).
+ +-----+ +-----+ +-----+ +-----+ +-----+
+ ! 1.1 !----! 1.2 !----! 1.3 !----! 1.4 !----! 1.5 ! <- The main trunk
+ +-----+ +-----+ +-----+ +-----+ +-----+
+ ! *
+ ! *
+ ! +---------+ +---------+ +---------+
+ Branch R1fix -> +---! 1.2.2.1 !----! 1.2.2.2 !----! 1.2.2.3 !
+ +---------+ +---------+ +---------+
- One of three record types results from commit:
+ and then you want to merge those new changes onto the main trunk.
+If you just use the `cvs update -j R1fix m.c' command again, CVS will
+attempt to merge again the changes which you have already merged, which
+can have undesirable side effects.
- `A'
- A file was added for the first time.
+ So instead you need to specify that you only want to merge the
+changes on the branch which have not yet been merged into the trunk.
+To do that you specify two `-j' options, and CVS merges the changes from
+the first revision to the second revision. For example, in this case
+the simplest way would be
- `M'
- A file was modified.
+ cvs update -j 1.2.2.2 -j R1fix m.c # Merge changes from 1.2.2.2 to the
+ # head of the R1fix branch
- `R'
- A file was removed.
+ The problem with this is that you need to specify the 1.2.2.2
+revision manually. A slightly better approach might be to use the date
+the last merge was done:
- The options shown as `-flags' constrain or expand the report without
-requiring option arguments:
+ cvs update -j R1fix:yesterday -j R1fix m.c
-`-a'
- Show data for all users (the default is to show data only for the
- user executing `history').
+ Better yet, tag the R1fix branch after every merge into the trunk,
+and then use that tag for subsequent merges:
-`-l'
- Show last modification only.
+ cvs update -j merged_from_R1fix_to_trunk -j R1fix m.c
-`-w'
- Show only the records for modifications done from the same working
- directory where `history' is executing.
+
+File: cvs.info, Node: Merging two revisions, Next: Merging adds and removals, Prev: Merging more than once, Up: Branching and merging
- The options shown as `-options ARGS' constrain the report based on
-an argument:
+Merging differences between any two revisions
+=============================================
-`-b STR'
- Show data back to a record containing the string STR in either
- the module name, the file name, or the repository path.
+ With two `-j REVISION' flags, the `update' (and `checkout') command
+can merge the differences between any two revisions into your working
+file.
-`-D DATE'
- Show data since DATE. This is slightly different from the normal
- use of `-D DATE', which selects the newest revision older than
- DATE.
+ $ cvs update -j 1.5 -j 1.3 backend.c
-`-p REPOSITORY'
- Show data for a particular source repository (you can specify
- several `-p' options on the same command line).
+will undo all changes made between revision 1.3 and 1.5. Note the
+order of the revisions!
-`-r REV'
- Show records referring to revisions since the revision or tag
- named REV appears in individual RCS files. Each RCS file is
- searched for the revision or tag.
+ If you try to use this option when operating on multiple files,
+remember that the numeric revisions will probably be very different
+between the various files. You almost always use symbolic tags rather
+than revision numbers when operating on multiple files.
-`-t TAG'
- Show records since tag TAG was last added to the the history file.
- This differs from the `-r' flag above in that it reads only the
- history file, not the RCS files, and is much faster.
+ Specifying two `-j' options can also undo file removals or
+additions. For example, suppose you have a file named `file1' which
+existed as revision 1.1, and you then removed it (thus adding a dead
+revision 1.2). Now suppose you want to add it again, with the same
+contents it had previously. Here is how to do it:
-`-u NAME'
- Show records for user NAME.
+ $ cvs update -j 1.2 -j 1.1 file1
+ U file1
+ $ cvs commit -m test
+ Checking in file1;
+ /tmp/cvs-sanity/cvsroot/first-dir/file1,v <-- file1
+ new revision: 1.3; previous revision: 1.2
+ done
+ $

-File: cvs.info, Node: import, Next: log, Prev: history, Up: Invoking CVS
-
-import--Import sources into CVS, using vendor branches
-======================================================
-
- * Synopsis: import [-options] repository vendortag releasetag...
-
- * Requires: Repository, source distribution directory.
-
- * Changes: repository.
-
- Use `import' to incorporate an entire source distribution from an
-outside source (e.g., a source vendor) into your source repository
-directory. You can use this command both for initial creation of a
-repository, and for wholesale updates to the module from the outside
-source. *Note Tracking sources::, for a discussion on this subject.
-
- The REPOSITORY argument gives a directory name (or a path to a
-directory) under the CVS root directory for repositories; if the
-directory did not exist, import creates it.
-
- When you use import for updates to source that has been modified in
-your source repository (since a prior import), it will notify you of
-any files that conflict in the two branches of development; use
-`checkout -j' to reconcile the differences, as import instructs you to
-do.
-
- By default, certain file names are ignored during `import': names
-associated with CVS administration, or with other common source control
-systems; common names for patch files, object files, archive files, and
-editor backup files; and other names that are usually artifacts of
-assorted utilities. Currently, the default list of ignored files
-includes files matching these names:
-
- RCSLOG RCS SCCS
- CVS* cvslog.*
- tags TAGS
- .make.state .nse_depinfo
- *~ #* .#* ,*
- *.old *.bak *.BAK *.orig *.rej .del-*
- *.a *.o *.so *.Z *.elc *.ln
- core
-
- If the file `$CVSROOT/CVSROOT/cvsignore' exists, any files whose
-names match the specifications in that file will also be ignored.
-
- If the file `$CVSROOT/CVSROOT/cvswrappers' exists, any file whose
-names match the specifications in that file will be treated as packages
-and the appropriate filtering will be performed on the file/directory
-before being imported, *Note Wrappers::.
-
- The outside source is saved in a first-level RCS branch, by default
-1.1.1. Updates are leaves of this branch; for example, files from the
-first imported collection of source will be revision 1.1.1.1, then
-files from the first imported update will be revision 1.1.1.2, and so
-on.
-
- At least three arguments are required. REPOSITORY is needed to
-identify the collection of source. VENDORTAG is a tag for the entire
-branch (e.g., for 1.1.1). You must also specify at least one
-RELEASETAG to identify the files at the leaves created each time you
-execute `import'.
-
-* Menu:
-
-* import options:: import options
-* import examples:: import examples
+File: cvs.info, Node: Merging adds and removals, Next: Merging and keywords, Prev: Merging two revisions, Up: Branching and merging
+
+Merging can add or remove files
+===============================
+
+ If the changes which you are merging involve removing or adding some
+files, `update -j' will reflect such additions or removals.
+
+ For example:
+ cvs update -A
+ touch a b c
+ cvs add a b c ; cvs ci -m "added" a b c
+ cvs tag -b branchtag
+ cvs update -r branchtag
+ touch d ; cvs add d
+ rm a ; cvs rm a
+ cvs ci -m "added d, removed a"
+ cvs update -A
+ cvs update -jbranchtag
+
+ After these commands are executed and a `cvs commit' is done, file
+`a' will be removed and file `d' added in the main branch.
+
+ Note that using a single static tag (`-j TAGNAME') rather than a
+dynamic tag (`-j BRANCHNAME') to merge changes from a branch will
+usually not remove files which were removed on the branch since CVS
+does not automatically add static tags to dead revisions. The
+exception to this rule occurs when a static tag has been attached to a
+dead revision manually. Use the branch tag to merge all changes from
+the branch or use two static tags as merge endpoints to be sure that
+all intended changes are propogated in the merge.

-File: cvs.info, Node: import options, Next: import examples, Up: import
-
-import options
---------------
-
- This standard option is supported by `import' (*note Common
-options::., for a complete description):
-
-`-m MESSAGE'
- Use MESSAGE as log information, instead of invoking an editor.
-
- There are three additional special options.
-
-`-b BRANCH'
- Specify a first-level branch other than 1.1.1. Unless the `-b
- BRANCH' flag is given, revisions will *always* be made to the
- branch 1.1.1--even if a VENDORTAG that matches another branch is
- given! What happens in that case, is that the tag will be reset
- to 1.1.1. Warning: This behavior might change in the future.
-
-`-k SUBST'
- Indicate the RCS keyword expansion mode desired. This setting will
- apply to all files created during the import, but not to any files
- that previously existed in the repository. See co(1) for a
- complete list of valid `-k' settings.
-
- If you are checking in sources that contain RCS keywords, and you
- wish those keywords to remain intact, use the `-ko' flag when
- importing the files. This setting indicates that no keyword
- expansion is to be performed by RCS when checking files out. It
- is also useful for checking in binaries.
-
-`-I NAME'
- Specify file names that should be ignored during import. You can
- use this option repeatedly. To avoid ignoring any files at all
- (even those ignored by default), specify `-I !'.
-
- NAME can be a file name pattern of the same type that you can
- specify in the `.cvsignore' file. *Note cvsignore::.
-
-`-W SPEC'
- Specify file names that should be filtered during import. You can
- use this option repeatedly.
-
- SPEC can be a file name pattern of the same type that you can
- specify in the `.cvswrappers' file. *Note Wrappers::.
+File: cvs.info, Node: Merging and keywords, Prev: Merging adds and removals, Up: Branching and merging
+
+Merging and keywords
+====================
+
+ If you merge files containing keywords (*note Keyword
+substitution::), you will normally get numerous conflicts during the
+merge, because the keywords are expanded differently in the revisions
+which you are merging.
+
+ Therefore, you will often want to specify the `-kk' (*note
+Substitution modes::) switch to the merge command line. By
+substituting just the name of the keyword, not the expanded value of
+that keyword, this option ensures that the revisions which you are
+merging will be the same as each other, and avoid spurious conflicts.
+
+ For example, suppose you have a file like this:
+
+ +---------+
+ _! 1.1.2.1 ! <- br1
+ / +---------+
+ /
+ /
+ +-----+ +-----+
+ ! 1.1 !----! 1.2 !
+ +-----+ +-----+
+
+ and your working directory is currently on the trunk (revision 1.2).
+Then you might get the following results from a merge:
+
+ $ cat file1
+ key $Revision: 1.2 $
+ . . .
+ $ cvs update -j br1
+ U file1
+ RCS file: /cvsroot/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
+ $ cat file1
+ <<<<<<< file1
+ key $Revision: 1.2 $
+ =======
+ key $Revision: 1.2 $
+ >>>>>>> 1.1.2.1
+ . . .
+
+ What happened was that the merge tried to merge the differences
+between 1.1 and 1.1.2.1 into your working directory. So, since the
+keyword changed from `Revision: 1.1' to `Revision: 1.1.2.1', CVS tried
+to merge that change into your working directory, which conflicted with
+the fact that your working directory had contained `Revision: 1.2'.
+
+ Here is what happens if you had used `-kk':
+
+ $ cat file1
+ key $Revision: 1.2 $
+ . . .
+ $ cvs update -kk -j br1
+ U file1
+ RCS file: /cvsroot/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
+ $ cat file1
+ key $Revision: 1.2 $
+ . . .
+
+ What is going on here is that revision 1.1 and 1.1.2.1 both expand
+as plain `Revision', and therefore merging the changes between them
+into the working directory need not change anything. Therefore, there
+is no conflict.
+
+ There is, however, one major caveat with using `-kk' on merges.
+Namely, it overrides whatever keyword expansion mode CVS would normally
+have used. In particular, this is a problem if the mode had been `-kb'
+for a binary file. Therefore, if your repository contains binary
+files, you will need to deal with the conflicts rather than using `-kk'.

-File: cvs.info, Node: import examples, Prev: import options, Up: import
-
-import examples
----------------
-
- *Note Tracking sources::, and *Note From files::.
+File: cvs.info, Node: Recursive behavior, Next: Adding and removing, Prev: Branching and merging, Up: Top
+
+Recursive behavior
+******************
+
+ Almost all of the subcommands of CVS work recursively when you
+specify a directory as an argument. For instance, consider this
+directory structure:
+
+ `$HOME'
+ |
+ +--tc
+ | |
+ +--CVS
+ | (internal CVS files)
+ +--Makefile
+ +--backend.c
+ +--driver.c
+ +--frontend.c
+ +--parser.c
+ +--man
+ | |
+ | +--CVS
+ | | (internal CVS files)
+ | +--tc.1
+ |
+ +--testing
+ |
+ +--CVS
+ | (internal CVS files)
+ +--testpgm.t
+ +--test2.t
+
+If `tc' is the current working directory, the following is true:
+
+ * `cvs update testing' is equivalent to
+
+ cvs update testing/testpgm.t testing/test2.t
+
+ * `cvs update testing man' updates all files in the subdirectories
+
+ * `cvs update .' or just `cvs update' updates all files in the `tc'
+ directory
+
+ If no arguments are given to `update' it will update all files in
+the current working directory and all its subdirectories. In other
+words, `.' is a default argument to `update'. This is also true for
+most of the CVS subcommands, not only the `update' command.
+
+ The recursive behavior of the CVS subcommands can be turned off with
+the `-l' option. Conversely, the `-R' option can be used to force
+recursion if `-l' is specified in `~/.cvsrc' (*note ~/.cvsrc::).
+
+ $ cvs update -l # Don't update files in subdirectories

-File: cvs.info, Node: log, Next: rdiff, Prev: import, Up: Invoking CVS
-
-log--Print out 'rlog' information for files
-===========================================
-
- * Synopsis: log [-l] rlog-options [files...]
+File: cvs.info, Node: Adding and removing, Next: History browsing, Prev: Recursive behavior, Up: Top
- * Requires: repository, working directory.
+Adding, removing, and renaming files and directories
+****************************************************
- * Changes: nothing.
-
- * Synonym: rlog
-
- Display log information for files. `log' calls the RCS utility
-`rlog', which prints all available information about the RCS history
-file. This includes the location of the RCS file, the "head" revision
-(the latest revision on the trunk), all symbolic names (tags) and some
-other things. For each revision, the revision number, the author, the
-number of lines added/deleted and the log message are printed. All
-times are displayed in Coordinated Universal Time (UTC). (Other parts
-of CVS print times in the local timezone).
+ In the course of a project, one will often add new files. Likewise
+with removing or renaming, or with directories. The general concept to
+keep in mind in all these cases is that instead of making an
+irreversible change you want CVS to record the fact that a change has
+taken place, just as with modifying an existing file. The exact
+mechanisms to do this in CVS vary depending on the situation.
* Menu:
-* log options:: log options
-* log examples:: log examples
+* Adding files:: Adding files
+* Removing files:: Removing files
+* Removing directories:: Removing directories
+* Moving files:: Moving and renaming files
+* Moving directories:: Moving and renaming directories

-File: cvs.info, Node: log options, Next: log examples, Up: log
-
-log options
------------
-
- Only one option is interpreted by CVS and not passed on to `rlog':
-
-`-l'
- Local; run only in current working directory. (Default is to run
- recursively).
+File: cvs.info, Node: Adding files, Next: Removing files, Up: Adding and removing
- By default, `rlog' prints all information that is available. All
-other options (including those that normally behave differently) are
-passed through to `rlog' and restrict the output. See rlog(1) for a
-complete description of options. This incomplete list (which is a
-slightly edited extract from rlog(1)) lists all options that are useful
-in conjunction with CVS.
+Adding files to a directory
+===========================
- *Please note:* There can be no space between the option and its
-argument, since `rlog' parses its options in a different way than CVS.
+ To add a new file to a directory, follow these steps.
-`-b'
- Print information about the revisions on the default branch,
- normally the highest branch on the trunk.
+ * You must have a working copy of the directory. *Note Getting the
+ source::.
-`-dDATES'
- Print information about revisions with a checkin date/time in the
- range given by the semicolon-separated list of dates. The
- following table explains the available range formats:
+ * Create the new file inside your working copy of the directory.
- `D1<D2'
- `D2>D1'
- Select the revisions that were deposited between D1 and D2
- inclusive.
+ * Use `cvs add FILENAME' to tell CVS that you want to version
+ control the file. If the file contains binary data, specify `-kb'
+ (*note Binary files::).
- `<D'
- `D>'
- Select all revisions dated D or earlier.
+ * Use `cvs commit FILENAME' to actually check in the file into the
+ repository. Other developers cannot see the file until you
+ perform this step.
- `D<'
- `>D'
- Select all revisions dated D or later.
+ You can also use the `add' command to add a new directory.
- `D'
- Select the single, latest revision dated D or earlier.
+ Unlike most other commands, the `add' command is not recursive. You
+cannot even type `cvs add foo/bar'! Instead, you have to
- The date/time strings D, D1, and D2 are in the free format
- explained in co(1). Quoting is normally necessary, especially for
- < and >. Note that the separator is a semicolon (;).
+ $ cd foo
+ $ cvs add bar
-`-h'
- Print only the RCS pathname, working pathname, head, default
- branch, access list, locks, symbolic names, and suffix.
+ - Command: cvs add [`-k' kflag] [`-m' message] files ...
+ Schedule FILES to be added to the repository. The files or
+ directories specified with `add' must already exist in the current
+ directory. To add a whole new directory hierarchy to the source
+ repository (for example, files received from a third-party
+ vendor), use the `import' command instead. *Note import::.
-`-N'
- Do not print the list of tags for this file. This option can be
- very useful when your site uses a lot of tags, so rather than
- "more"'ing over 3 pages of tag information, the log information is
- presented without tags at all.
+ The added files are not placed in the source repository until you
+ use `commit' to make the change permanent. Doing an `add' on a
+ file that was removed with the `remove' command will undo the
+ effect of the `remove', unless a `commit' command intervened.
+ *Note Removing files::, for an example.
-`-R'
- Print only the name of the RCS history file.
+ The `-k' option specifies the default way that this file will be
+ checked out; for more information see *Note Substitution modes::.
-`-rREVISIONS'
- Print information about revisions given in the comma-separated
- list REVISIONS of revisions and ranges. The following table
- explains the available range formats:
-
- `REV1:REV2'
- Revisions REV1 to REV2 (which must be on the same branch).
-
- `:REV'
- Revisions from the beginning of the branch up to and
- including REV.
-
- `REV:'
- Revisions starting with REV to the end of the branch
- containing REV.
-
- `BRANCH'
- An argument that is a branch means all revisions on that
- branch. You can unfortunately not specify a symbolic branch
- here. You must specify the numeric branch number. *Note
- Magic branch numbers::, for an explanation.
-
- `BRANCH1:BRANCH2'
- A range of branches means all revisions on the branches in
- that range.
-
- `BRANCH.'
- The latest revision in BRANCH.
-
- A bare `-r' with no revisions means the latest revision on the
- default branch, normally the trunk.
-
-`-sSTATES'
- Print information about revisions whose state attributes match one
- of the states given in the comma-separated list STATES.
+ The `-m' option specifies a description for the file. This
+ description appears in the history log (if it is enabled, *note
+ history file::). It will also be saved in the version history
+ inside the repository when the file is committed. The `log'
+ command displays this description. The description can be changed
+ using `admin -t'. *Note admin::. If you omit the `-m
+ DESCRIPTION' flag, an empty string will be used. You will not be
+ prompted for a description.
-`-t'
- Print the same as `-h', plus the descriptive text.
+ For example, the following commands add the file `backend.c' to the
+repository:
-`-wLOGINS'
- Print information about revisions checked in by users with login
- names appearing in the comma-separated list LOGINS. If LOGINS is
- omitted, the user's login is assumed.
+ $ cvs add backend.c
+ $ cvs commit -m "Early version. Not yet compilable." backend.c
- `rlog' prints the intersection of the revisions selected with the
-options `-d', `-l', `-s', and `-w', intersected with the union of the
-revisions selected by `-b' and `-r'.
+ When you add a file it is added only on the branch which you are
+working on (*note Branching and merging::). You can later merge the
+additions to another branch if you want (*note Merging adds and
+removals::).

-File: cvs.info, Node: log examples, Prev: log options, Up: log
-
-log examples
-------------
-
- Contributed examples are gratefully accepted.
+File: cvs.info, Node: Removing files, Next: Removing directories, Prev: Adding files, Up: Adding and removing
+
+Removing files
+==============
+
+ Directories change. New files are added, and old files disappear.
+Still, you want to be able to retrieve an exact copy of old releases.
+
+ Here is what you can do to remove a file, but remain able to
+retrieve old revisions:
+
+ * Make sure that you have not made any uncommitted modifications to
+ the file. *Note Viewing differences::, for one way to do that.
+ You can also use the `status' or `update' command. If you remove
+ the file without committing your changes, you will of course not
+ be able to retrieve the file as it was immediately before you
+ deleted it.
+
+ * Remove the file from your working copy of the directory. You can
+ for instance use `rm'.
+
+ * Use `cvs remove FILENAME' to tell CVS that you really want to
+ delete the file.
+
+ * Use `cvs commit FILENAME' to actually perform the removal of the
+ file from the repository.
+
+ When you commit the removal of the file, CVS records the fact that
+the file no longer exists. It is possible for a file to exist on only
+some branches and not on others, or to re-add another file with the same
+name later. CVS will correctly create or not create the file, based on
+the `-r' and `-D' options specified to `checkout' or `update'.
+
+ - Command: cvs remove [options] files ...
+ Schedule file(s) to be removed from the repository (files which
+ have not already been removed from the working directory are not
+ processed). This command does not actually remove the file from
+ the repository until you commit the removal. For a full list of
+ options, see *Note Invoking CVS::.
+
+ Here is an example of removing several files:
+
+ $ cd test
+ $ rm *.c
+ $ cvs remove
+ cvs remove: Removing .
+ cvs remove: scheduling a.c for removal
+ cvs remove: scheduling b.c for removal
+ cvs remove: use 'cvs commit' to remove these files permanently
+ $ cvs ci -m "Removed unneeded files"
+ cvs commit: Examining .
+ cvs commit: Committing .
+
+ As a convenience you can remove the file and `cvs remove' it in one
+step, by specifying the `-f' option. For example, the above example
+could also be done like this:
+
+ $ cd test
+ $ cvs remove -f *.c
+ cvs remove: scheduling a.c for removal
+ cvs remove: scheduling b.c for removal
+ cvs remove: use 'cvs commit' to remove these files permanently
+ $ cvs ci -m "Removed unneeded files"
+ cvs commit: Examining .
+ cvs commit: Committing .
+
+ If you execute `remove' for a file, and then change your mind before
+you commit, you can undo the `remove' with an `add' command.
+
+ $ ls
+ CVS ja.h oj.c
+ $ rm oj.c
+ $ cvs remove oj.c
+ cvs remove: scheduling oj.c for removal
+ cvs remove: use 'cvs commit' to remove this file permanently
+ $ cvs add oj.c
+ U oj.c
+ cvs add: oj.c, version 1.1.1.1, resurrected
+
+ If you realize your mistake before you run the `remove' command you
+can use `update' to resurrect the file:
+
+ $ rm oj.c
+ $ cvs update oj.c
+ cvs update: warning: oj.c was lost
+ U oj.c
+
+ When you remove a file it is removed only on the branch which you
+are working on (*note Branching and merging::). You can later merge
+the removals to another branch if you want (*note Merging adds and
+removals::).

-File: cvs.info, Node: rdiff, Next: release, Prev: log, Up: Invoking CVS
-
-rdiff--'patch' format diffs between releases
-============================================
-
- * rdiff [-flags] [-V vn] [-r t|-D d [-r t2|-D d2]] modules...
+File: cvs.info, Node: Removing directories, Next: Moving files, Prev: Removing files, Up: Adding and removing
+
+Removing directories
+====================
+
+ In concept removing directories is somewhat similar to removing
+files--you want the directory to not exist in your current working
+directories, but you also want to be able to retrieve old releases in
+which the directory existed.
+
+ The way that you remove a directory is to remove all the files in
+it. You don't remove the directory itself; there is no way to do that.
+Instead you specify the `-P' option to `cvs update' or `cvs checkout',
+which will cause CVS to remove empty directories from working
+directories. (Note that `cvs export' always removes empty directories.)
+Probably the best way to do this is to always specify `-P'; if you want
+an empty directory then put a dummy file (for example `.keepme') in it
+to prevent `-P' from removing it.
+
+ Note that `-P' is implied by the `-r' or `-D' options of `checkout'.
+This way CVS will be able to correctly create the directory or not
+depending on whether the particular version you are checking out
+contains any files in that directory.
- * Requires: repository.
-
- * Changes: nothing.
-
- * Synonym: patch
+
+File: cvs.info, Node: Moving files, Next: Moving directories, Prev: Removing directories, Up: Adding and removing
- Builds a Larry Wall format patch(1) file between two releases, that
-can be fed directly into the patch program to bring an old release
-up-to-date with the new release. (This is one of the few CVS commands
-that operates directly from the repository, and doesn't require a prior
-checkout.) The diff output is sent to the standard output device.
+Moving and renaming files
+=========================
- You can specify (using the standard `-r' and `-D' options) any
-combination of one or two revisions or dates. If only one revision or
-date is specified, the patch file reflects differences between that
-revision or date and the current head revisions in the RCS file.
+ Moving files to a different directory or renaming them is not
+difficult, but some of the ways in which this works may be non-obvious.
+(Moving or renaming a directory is even harder. *Note Moving
+directories::.).
- Note that if the software release affected is contained in more than
-one directory, then it may be necessary to specify the `-p' option to
-the patch command when patching the old sources, so that patch is able
-to find the files that are located in other directories.
+ The examples below assume that the file OLD is renamed to NEW.
* Menu:
-* rdiff options:: rdiff options
-* rdiff examples:: rdiff examples
+* Outside:: The normal way to Rename
+* Inside:: A tricky, alternative way
+* Rename by copying:: Another tricky, alternative way

-File: cvs.info, Node: rdiff options, Next: rdiff examples, Up: rdiff
-
-rdiff options
--------------
-
- These standard options are supported by `rdiff' (*note Common
-options::., for a complete description of them):
+File: cvs.info, Node: Outside, Next: Inside, Up: Moving files
-`-D DATE'
- Use the most recent revision no later than DATE.
+The Normal way to Rename
+------------------------
-`-f'
- If no matching revision is found, retrieve the most recent
- revision (instead of ignoring the file).
+ The normal way to move a file is to copy OLD to NEW, and then issue
+the normal CVS commands to remove OLD from the repository, and add NEW
+to it.
-`-l'
- Local; don't descend subdirectories.
+ $ mv OLD NEW
+ $ cvs remove OLD
+ $ cvs add NEW
+ $ cvs commit -m "Renamed OLD to NEW" OLD NEW
-`-r TAG'
- Use revision TAG.
+ This is the simplest way to move a file, it is not error-prone, and
+it preserves the history of what was done. Note that to access the
+history of the file you must specify the old or the new name, depending
+on what portion of the history you are accessing. For example, `cvs
+log OLD' will give the log up until the time of the rename.
- In addition to the above, these options are available:
+ When NEW is committed its revision numbers will start again, usually
+at 1.1, so if that bothers you, use the `-r rev' option to commit. For
+more information see *Note Assigning revisions::.
-`-c'
- Use the context diff format. This is the default format.
+
+File: cvs.info, Node: Inside, Next: Rename by copying, Prev: Outside, Up: Moving files
-`-s'
- Create a summary change report instead of a patch. The summary
- includes information about files that were changed or added
- between the releases. It is sent to the standard output device.
- This is useful for finding out, for example, which files have
- changed between two dates or revisions.
+Moving the history file
+-----------------------
-`-t'
- A diff of the top two revisions is sent to the standard output
- device. This is most useful for seeing what the last change to a
- file was.
+ This method is more dangerous, since it involves moving files inside
+the repository. Read this entire section before trying it out!
-`-u'
- Use the unidiff format for the context diffs. This option is not
- available if your diff does not support the unidiff format.
- Remember that old versions of the `patch' program can't handle the
- unidiff format, so if you plan to post this patch to the net you
- should probably not use `-u'.
+ $ cd $CVSROOT/DIR
+ $ mv OLD,v NEW,v
-`-V VN'
- Expand RCS keywords according to the rules current in RCS version
- VN (the expansion format changed with RCS version 5).
+Advantages:
-
-File: cvs.info, Node: rdiff examples, Prev: rdiff options, Up: rdiff
+ * The log of changes is maintained intact.
-rdiff examples
---------------
+ * The revision numbers are not affected.
- Suppose you receive mail from foo@bar.com asking for an update from
-release 1.2 to 1.4 of the tc compiler. You have no such patches on
-hand, but with CVS that can easily be fixed with a command such as this:
+Disadvantages:
- $ cvs rdiff -c -r FOO1_2 -r FOO1_4 tc | \
- $$ Mail -s 'The patches you asked for' foo@bar.com
+ * Old releases cannot easily be fetched from the repository. (The
+ file will show up as NEW even in revisions from the time before it
+ was renamed).
- Suppose you have made release 1.3, and forked a branch called
-`R_1_3fix' for bugfixes. `R_1_3_1' corresponds to release 1.3.1, which
-was made some time ago. Now, you want to see how much development has
-been done on the branch. This command can be used:
+ * There is no log information of when the file was renamed.
- $ cvs patch -s -r R_1_3_1 -r R_1_3fix module-name
- cvs rdiff: Diffing module-name
- File ChangeLog,v changed from revision 1.52.2.5 to 1.52.2.6
- File foo.c,v changed from revision 1.52.2.3 to 1.52.2.4
- File bar.h,v changed from revision 1.29.2.1 to 1.2
+ * Nasty things might happen if someone accesses the history file
+ while you are moving it. Make sure no one else runs any of the CVS
+ commands while you move it.

-File: cvs.info, Node: release, Next: remove, Prev: rdiff, Up: Invoking CVS
+File: cvs.info, Node: Rename by copying, Prev: Inside, Up: Moving files
-release--Indicate that a Module is no longer in use
-===================================================
+Copying the history file
+------------------------
- * release [-dQq] modules...
+ This way also involves direct modifications to the repository. It
+is safe, but not without drawbacks.
- * Requires: Working directory.
+ # Copy the RCS file inside the repository
+ $ cd $CVSROOT/DIR
+ $ cp OLD,v NEW,v
+ # Remove the old file
+ $ cd ~/DIR
+ $ rm OLD
+ $ cvs remove OLD
+ $ cvs commit OLD
+ # Remove all tags from NEW
+ $ cvs update NEW
+ $ cvs log NEW # Remember the non-branch tag names
+ $ cvs tag -d TAG1 NEW
+ $ cvs tag -d TAG2 NEW
+ ...
- * Changes: Working directory, history log.
+ By removing the tags you will be able to check out old revisions.
- This command is meant to safely cancel the effect of `cvs checkout'.
-Since CVS doesn't lock files, it isn't strictly necessary to use this
-command. You can always simply delete your working directory, if you
-like; but you risk losing changes you may have forgotten, and you leave
-no trace in the CVS history file (*note history file::.) that you've
-abandoned your checkout.
+Advantages:
- Use `cvs release' to avoid these problems. This command checks that
-no uncommitted changes are present; that you are executing it from
-immediately above a CVS working directory; and that the repository
-recorded for your files is the same as the repository defined in the
-module database.
+ * Checking out old revisions works correctly, as long as you use
+ `-rTAG' and not `-DDATE' to retrieve the revisions.
- If all these conditions are true, `cvs release' leaves a record of
-its execution (attesting to your intentionally abandoning your
-checkout) in the CVS history log.
-
-* Menu:
-
-* release options:: release options
-* release output:: release options
-* release examples:: release examples
-
-
-File: cvs.info, Node: release options, Next: release output, Up: release
+ * The log of changes is maintained intact.
-release options
----------------
+ * The revision numbers are not affected.
- The `release' command supports one command option:
+Disadvantages:
-`-d'
- Delete your working copy of the file if the release succeeds. If
- this flag is not given your files will remain in your working
- directory.
+ * You cannot easily see the history of the file across the rename.
- *Warning:* The `release' command uses `rm -r `module'' to delete
- your file. This has the very serious side-effect that any
- directory that you have created inside your checked-out sources,
- and not added to the repository (using the `add' command; *note
- add::.) will be silently deleted--even if it is non-empty!
diff --git a/gnu/usr.bin/cvs/doc/cvs.info-4 b/gnu/usr.bin/cvs/doc/cvs.info-4
index dc97df8e6c8..76a4437d117 100644
--- a/gnu/usr.bin/cvs/doc/cvs.info-4
+++ b/gnu/usr.bin/cvs/doc/cvs.info-4
@@ -1,5 +1,8 @@
-This is Info file cvs.info, produced by Makeinfo-1.55 from the input
-file ./cvs.texinfo.
+This is cvs.info, produced by makeinfo version 4.0 from cvs.texinfo.
+
+START-INFO-DIR-ENTRY
+* CVS: (cvs). Concurrent Versions System
+END-INFO-DIR-ENTRY
Copyright (C) 1992, 1993 Signum Support AB Copyright (C) 1993, 1994
Free Software Foundation, Inc.
@@ -10,1264 +13,1277 @@ preserved on all copies.
Permission is granted to copy and distribute modified versions of
this manual under the conditions for verbatim copying, provided also
-that the section entitled "GNU General Public License" is included
-exactly as in the original, and provided that the entire resulting
-derived work is distributed under the terms of a permission notice
-identical to this one.
+that the entire resulting derived work is distributed under the terms
+of a permission notice identical to this one.
Permission is granted to copy and distribute translations of this
manual into another language, under the above conditions for modified
-versions, except that the section entitled "GNU General Public License"
-and this permission notice may be included in translations approved by
-the Free Software Foundation instead of in the original English.
+versions, except that this permission notice may be stated in a
+translation approved by the Free Software Foundation.

-File: cvs.info, Node: release output, Next: release examples, Prev: release options, Up: release
-
-release output
---------------
+File: cvs.info, Node: Moving directories, Prev: Moving files, Up: Adding and removing
- Before `release' releases your sources it will print a one-line
-message for any file that is not up-to-date.
-
- *Warning:* Any new directories that you have created, but not added
-to the CVS directory hierarchy with the `add' command (*note add::.)
-will be silently ignored (and deleted, if `-d' is specified), even if
-they contain files.
+Moving and renaming directories
+===============================
-`U FILE'
- There exists a newer revision of this file in the repository, and
- you have not modified your local copy of the file.
+ The normal way to rename or move a directory is to rename or move
+each file within it as described in *Note Outside::. Then check out
+with the `-P' option, as described in *Note Removing directories::.
-`A FILE'
- The file has been added to your private copy of the sources, but
- has not yet been committed to the repository. If you delete your
- copy of the sources this file will be lost.
+ If you really want to hack the repository to rename or delete a
+directory in the repository, you can do it like this:
-`R FILE'
- The file has been removed from your private copy of the sources,
- but has not yet been removed from the repository, since you have
- not yet committed the removal. *Note commit::.
+ 1. Inform everyone who has a checked out copy of the directory that
+ the directory will be renamed. They should commit all their
+ changes, and remove their working copies, before you take the
+ steps below.
-`M FILE'
- The file is modified in your working directory. There might also
- be a newer revision inside the repository.
+ 2. Rename the directory inside the repository.
-`? FILE'
- FILE is in your working directory, but does not correspond to
- anything in the source repository, and is not in the list of files
- for CVS to ignore (see the description of the `-I' option, and
- *note cvsignore::.). If you remove your working sources, this
- file will be lost.
+ $ cd $CVSROOT/PARENT-DIR
+ $ mv OLD-DIR NEW-DIR
- Note that no warning message like this is printed for spurious
- directories that CVS encounters. The directory, and all its
- contents, are silently ignored.
+ 3. Fix the CVS administrative files, if necessary (for instance if
+ you renamed an entire module).
-
-File: cvs.info, Node: release examples, Prev: release output, Up: release
+ 4. Tell everyone that they can check out again and continue working.
-release examples
-----------------
- Release the module, and delete your local working copy of the files.
+ If someone had a working copy the CVS commands will cease to work
+for him, until he removes the directory that disappeared inside the
+repository.
- $ cd .. # You must stand immediately above the
- # sources when you issue `cvs release'.
- $ cvs release -d tc
- You have [0] altered files in this repository.
- Are you sure you want to release (and delete) module `tc': y
- $
+ It is almost always better to move the files in the directory
+instead of moving the directory. If you move the directory you are
+unlikely to be able to retrieve old releases correctly, since they
+probably depend on the name of the directories.

-File: cvs.info, Node: remove, Next: rtag, Prev: release, Up: Invoking CVS
-
-remove--Remove an entry from the repository
-===========================================
-
- * remove [-lR] [files...]
-
- * Requires: Working directory.
+File: cvs.info, Node: History browsing, Next: Binary files, Prev: Adding and removing, Up: Top
- * Changes: Working directory.
+History browsing
+****************
- * Synonyms: rm, delete
-
- Use this command to declare that you wish to remove files from the
-source repository. Like most CVS commands, `cvs remove' works on files
-in your working directory, not directly on the repository. As a
-safeguard, it also requires that you first erase the specified files
-from your working directory.
-
- The files are not actually removed until you apply your changes to
-the repository with `commit'; at that point, the corresponding RCS
-files in the source repository are moved into the `Attic' directory
-(also within the source repository).
-
- This command is recursive by default, scheduling all physically
-removed files that it finds for removal by the next commit. Use the
-`-l' option to avoid this recursion, or just specify the actual files
-that you wish removed.
+ Once you have used CVS to store a version control history--what
+files have changed when, how, and by whom, there are a variety of
+mechanisms for looking through the history.
* Menu:
-* remove options:: remove options
-* remove examples:: remove examples
+* log messages:: Log messages
+* history database:: The history database
+* user-defined logging:: User-defined logging
+* annotate:: What revision modified each line of a file?

-File: cvs.info, Node: remove options, Next: remove examples, Up: remove
-
-remove options
---------------
+File: cvs.info, Node: log messages, Next: history database, Up: History browsing
- Two of the standard options are the only options supported by
-`remove'.
+Log messages
+============
-`-l'
- Local; run only in current working directory.
+ Whenever you commit a file you specify a log message.
-`-R'
- Commit directories recursively. This is on by default.
+ To look through the log messages which have been specified for every
+revision which has been committed, use the `cvs log' command (*note
+log::).

-File: cvs.info, Node: remove examples, Prev: remove options, Up: remove
-
-remove examples
----------------
-
-Remove a couple of files.
-.........................
-
- $ cd test
- $ rm ?.c
- $ cvs remove
- cvs remove: Removing .
- cvs remove: scheduling a.c for removal
- cvs remove: scheduling b.c for removal
- cvs remove: use 'cvs commit' to remove these files permanently
- $ cvs ci -m "Removed unneeded files"
- cvs commit: Examining .
- cvs commit: Committing .
-
-Resurrecting removed files
-..........................
-
- If you change your mind you can easily resurrect the file before you
-commit it, using the `add' command.
-
- $ ls
- CVS ja.h oj.c
- $ rm oj.c
- $ cvs remove oj.c
- cvs remove: scheduling oj.c for removal
- cvs remove: use 'cvs commit' to remove this file permanently
- $ cvs add oj.c
- U oj.c
- cvs add: oj.c, version 1.1.1.1, resurrected
-
- If you realize your mistake before you run the `remove' command you
-can use `update' to resurrect the file:
-
- $ rm oj.c
- $ cvs update oj.c
- cvs update: warning: oj.c was lost
- U oj.c
-
-
-File: cvs.info, Node: rtag, Next: status, Prev: remove, Up: Invoking CVS
-
-rtag--Add a tag to the RCS file
-===============================
+File: cvs.info, Node: history database, Next: user-defined logging, Prev: log messages, Up: History browsing
- * rtag [-falnRQq] [-b] [-d] [-r tag | -Ddate] symbolic_tag modules...
-
- * Requires: repository.
-
- * Changes: repository.
-
- * Synonym: rfreeze
-
- You can use this command to assign symbolic tags to particular,
-explicitly specified source revisions in the repository. `rtag' works
-directly on the repository contents (and requires no prior checkout).
-Use `tag' instead (*note tag::.), to base the selection of revisions on
-the contents of your working directory.
-
- If you attempt to use a tag name that already exists, CVS will
-complain and not overwrite that tag. Use the `-F' option to force the
-new tag value.
+The history database
+====================
-* Menu:
+ You can use the history file (*note history file::) to log various
+CVS actions. To retrieve the information from the history file, use
+the `cvs history' command (*note history::).
-* rtag options:: rtag options
+ Note: you can control what is logged to this file by using the
+`LogHistory' keyword in the `CVSROOT/config' file (*note config::).

-File: cvs.info, Node: rtag options, Up: rtag
-
-rtag options
-------------
+File: cvs.info, Node: user-defined logging, Next: annotate, Prev: history database, Up: History browsing
- These standard options are supported by `rtag' (*note Common
-options::., for a complete description of them):
-
-`-D DATE'
- Tag the most recent revision no later than DATE.
-
-`-f'
- Only useful with the `-D DATE' or `-r TAG' flags. If no matching
- revision is found, use the most recent revision (instead of
- ignoring the file).
-
-`-F'
- Overwrite an existing tag of the same name on a different
- revision. This option is new in CVS 1.4. The old behavior is
- matched by `cvs tag -F'.
+User-defined logging
+====================
-`-l'
- Local; run only in current working directory.
+ You can customize CVS to log various kinds of actions, in whatever
+manner you choose. These mechanisms operate by executing a script at
+various times. The script might append a message to a file listing the
+information and the programmer who created it, or send mail to a group
+of developers, or, perhaps, post a message to a particular newsgroup.
+To log commits, use the `loginfo' file (*note loginfo::). To log
+commits, checkouts, exports, and tags, respectively, you can also use
+the `-i', `-o', `-e', and `-t' options in the modules file. For a more
+flexible way of giving notifications to various users, which requires
+less in the way of keeping centralized scripts up to date, use the `cvs
+watch add' command (*note Getting Notified::); this command is useful
+even if you are not using `cvs watch on'.
+
+ The `taginfo' file defines programs to execute when someone executes
+a `tag' or `rtag' command. The `taginfo' file has the standard form
+for administrative files (*note Administrative files::), where each
+line is a regular expression followed by a command to execute. The
+arguments passed to the command are, in order, the TAGNAME, OPERATION
+(`add' for `tag', `mov' for `tag -F', and `del' for `tag -d'),
+REPOSITORY, and any remaining are pairs of FILENAME REVISION. A
+non-zero exit of the filter program will cause the tag to be aborted.
+
+ Here is an example of using taginfo to log tag and rtag commands.
+In the taginfo file put:
+
+ ALL /usr/local/cvsroot/CVSROOT/loggit
+
+ Where `/usr/local/cvsroot/CVSROOT/loggit' contains the following
+script:
-`-n'
- Do not run any tag program that was specified with the `-t' flag
- inside the `modules' file. (*note modules::.).
+ #!/bin/sh
+ echo "$@" >>/home/kingdon/cvsroot/CVSROOT/taglog
-`-R'
- Commit directories recursively. This is on by default.
+
+File: cvs.info, Node: annotate, Prev: user-defined logging, Up: History browsing
-`-r TAG'
- Only tag those files that contain TAG. This can be used to rename
- a tag: tag only the files identified by the old tag, then delete
- the old tag, leaving the new tag on exactly the same files as the
- old tag.
+Annotate command
+================
- In addition to the above common options, these options are available:
+ - Command: cvs annotate [`-flR'] [`-r rev'|`-D date'] files ...
+ For each file in FILES, print the head revision of the trunk,
+ together with information on the last modification for each line.
+ For example:
-`-a'
- Use the `-a' option to have `rtag' look in the `Attic' (*note
- Removing files::.) for removed files that contain the specified
- tag. The tag is removed from these files, which makes it
- convenient to re-use a symbolic tag as development continues (and
- files get removed from the up-coming distribution).
+ $ cvs annotate ssfile
+ Annotations for ssfile
+ ***************
+ 1.1 (mary 27-Mar-96): ssfile line 1
+ 1.2 (joe 28-Mar-96): ssfile line 2
-`-b'
- Make the tag a branch tag. *Note Branches::.
+ The file `ssfile' currently contains two lines. The `ssfile line
+ 1' line was checked in by `mary' on March 27. Then, on March 28,
+ `joe' added a line `ssfile line 2', without modifying the `ssfile
+ line 1' line. This report doesn't tell you anything about lines
+ which have been deleted or replaced; you need to use `cvs diff'
+ for that (*note diff::).
-`-d'
- Delete the tag instead of creating it.
- In general, tags (often the symbolic names of software
- distributions) should not be removed, but the `-d' option is
- available as a means to remove completely obsolete symbolic names
- if necessary (as might be the case for an Alpha release, or if you
- mistagged a module).
+ The options to `cvs annotate' are listed in *Note Invoking CVS::,
+and can be used to select the files and revisions to annotate. The
+options are described in more detail in *Note Common options::.

-File: cvs.info, Node: status, Next: tag, Prev: rtag, Up: Invoking CVS
-
-status--Status info on the revisions
-====================================
+File: cvs.info, Node: Binary files, Next: Multiple developers, Prev: History browsing, Up: Top
- * status [-lR] [-v] [files...]
+Handling binary files
+*********************
- * Requires: working directory, repository.
-
- * Changes: nothing.
-
- Display a brief report on the current status of files with respect
-to the source repository, including any sticky tags, dates, or `-k'
-options.
-
- You can also use this command to determine the potential impact of a
-`cvs update' on your working source directory--but remember that things
-might change in the repository before you run `update'.
+ The most common use for CVS is to store text files. With text
+files, CVS can merge revisions, display the differences between
+revisions in a human-visible fashion, and other such operations.
+However, if you are willing to give up a few of these abilities, CVS
+can store binary files. For example, one might store a web site in CVS
+including both text files and binary images.
* Menu:
-* status options:: status options
+* Binary why:: More details on issues with binary files
+* Binary howto:: How to store them

-File: cvs.info, Node: status options, Up: status
-
-status options
---------------
+File: cvs.info, Node: Binary why, Next: Binary howto, Up: Binary files
- These standard options are supported by `status' (*note Common
-options::., for a complete description of them):
-
-`-l'
- Local; run only in current working directory.
-
-`-R'
- Commit directories recursively. This is on by default.
-
- There is one additional option:
+The issues with binary files
+============================
-`-v'
- Verbose. In addition to the information normally displayed, print
- all symbolic tags, together with the numerical value of the
- revision or branch they refer to.
+ While the need to manage binary files may seem obvious if the files
+that you customarily work with are binary, putting them into version
+control does present some additional issues.
+
+ One basic function of version control is to show the differences
+between two revisions. For example, if someone else checked in a new
+version of a file, you may wish to look at what they changed and
+determine whether their changes are good. For text files, CVS provides
+this functionality via the `cvs diff' command. For binary files, it
+may be possible to extract the two revisions and then compare them with
+a tool external to CVS (for example, word processing software often has
+such a feature). If there is no such tool, one must track changes via
+other mechanisms, such as urging people to write good log messages, and
+hoping that the changes they actually made were the changes that they
+intended to make.
+
+ Another ability of a version control system is the ability to merge
+two revisions. For CVS this happens in two contexts. The first is
+when users make changes in separate working directories (*note Multiple
+developers::). The second is when one merges explicitly with the
+`update -j' command (*note Branching and merging::).
+
+ In the case of text files, CVS can merge changes made independently,
+and signal a conflict if the changes conflict. With binary files, the
+best that CVS can do is present the two different copies of the file,
+and leave it to the user to resolve the conflict. The user may choose
+one copy or the other, or may run an external merge tool which knows
+about that particular file format, if one exists. Note that having the
+user merge relies primarily on the user to not accidentally omit some
+changes, and thus is potentially error prone.
+
+ If this process is thought to be undesirable, the best choice may be
+to avoid merging. To avoid the merges that result from separate
+working directories, see the discussion of reserved checkouts (file
+locking) in *Note Multiple developers::. To avoid the merges resulting
+from branches, restrict use of branches.

-File: cvs.info, Node: tag, Next: update, Prev: status, Up: Invoking CVS
+File: cvs.info, Node: Binary howto, Prev: Binary why, Up: Binary files
-tag--Add a symbolic tag to checked out version of RCS file
-==========================================================
-
- * tag [-lQqR] [-b] [-d] symbolic_tag [files...]
-
- * Requires: working directory, repository.
-
- * Changes: repository.
-
- * Synonym: freeze
-
- Use this command to assign symbolic tags to the nearest repository
-versions to your working sources. The tags are applied immediately to
-the repository, as with `rtag', but the versions are supplied
-implicitly by the CVS records of your working files' history rather than
-applied explicitly.
-
- One use for tags is to record a snapshot of the current sources when
-the software freeze date of a project arrives. As bugs are fixed after
-the freeze date, only those changed sources that are to be part of the
-release need be re-tagged.
-
- The symbolic tags are meant to permanently record which revisions of
-which files were used in creating a software distribution. The
-`checkout' and `update' commands allow you to extract an exact copy of
-a tagged release at any time in the future, regardless of whether files
-have been changed, added, or removed since the release was tagged.
+How to store binary files
+=========================
- This command can also be used to delete a symbolic tag, or to create
-a branch. See the options section below.
+ There are two issues with using CVS to store binary files. The
+first is that CVS by default converts line endings between the
+canonical form in which they are stored in the repository (linefeed
+only), and the form appropriate to the operating system in use on the
+client (for example, carriage return followed by line feed for Windows
+NT).
+
+ The second is that a binary file might happen to contain data which
+looks like a keyword (*note Keyword substitution::), so keyword
+expansion must be turned off.
+
+ The `-kb' option available with some CVS commands insures that
+neither line ending conversion nor keyword expansion will be done.
+
+ Here is an example of how you can create a new file using the `-kb'
+flag:
+
+ $ echo '$Id: cvs.info-4,v 1.2 2001/09/29 00:00:39 tholo Exp $' > kotest
+ $ cvs add -kb -m"A test file" kotest
+ $ cvs ci -m"First checkin; contains a keyword" kotest
+
+ If a file accidentally gets added without `-kb', one can use the
+`cvs admin' command to recover. For example:
+
+ $ echo '$Id: cvs.info-4,v 1.2 2001/09/29 00:00:39 tholo Exp $' > kotest
+ $ cvs add -m"A test file" kotest
+ $ cvs ci -m"First checkin; contains a keyword" kotest
+ $ cvs admin -kb kotest
+ $ cvs update -A kotest
+ # For non-unix systems:
+ # Copy in a good copy of the file from outside CVS
+ $ cvs commit -m "make it binary" kotest
+
+ When you check in the file `kotest' the file is not preserved as a
+binary file, because you did not check it in as a binary file. The `cvs
+admin -kb' command sets the default keyword substitution method for
+this file, but it does not alter the working copy of the file that you
+have. If you need to cope with line endings (that is, you are using
+CVS on a non-unix system), then you need to check in a new copy of the
+file, as shown by the `cvs commit' command above. On unix, the `cvs
+update -A' command suffices.
+
+ However, in using `cvs admin -k' to change the keyword expansion, be
+aware that the keyword expansion mode is not version controlled. This
+means that, for example, that if you have a text file in old releases,
+and a binary file with the same name in new releases, CVS provides no
+way to check out the file in text or binary mode depending on what
+version you are checking out. There is no good workaround for this
+problem.
+
+ You can also set a default for whether `cvs add' and `cvs import'
+treat a file as binary based on its name; for example you could say
+that files who names end in `.exe' are binary. *Note Wrappers::.
+There is currently no way to have CVS detect whether a file is binary
+based on its contents. The main difficulty with designing such a
+feature is that it is not clear how to distinguish between binary and
+non-binary files, and the rules to apply would vary considerably with
+the operating system.
- If you attempt to use a tag name that already exists, CVS will
-complain and not overwrite that tag. Use the `-F' option to force the
-new tag value.
+
+File: cvs.info, Node: Multiple developers, Next: Revision management, Prev: Binary files, Up: Top
+
+Multiple developers
+*******************
+
+ When more than one person works on a software project things often
+get complicated. Often, two people try to edit the same file
+simultaneously. One solution, known as "file locking" or "reserved
+checkouts", is to allow only one person to edit each file at a time.
+This is the only solution with some version control systems, including
+RCS and SCCS. Currently the usual way to get reserved checkouts with
+CVS is the `cvs admin -l' command (*note admin options::). This is not
+as nicely integrated into CVS as the watch features, described below,
+but it seems that most people with a need for reserved checkouts find
+it adequate. It also may be possible to use the watches features
+described below, together with suitable procedures (not enforced by
+software), to avoid having two people edit at the same time.
+
+ The default model with CVS is known as "unreserved checkouts". In
+this model, developers can edit their own "working copy" of a file
+simultaneously. The first person that commits his changes has no
+automatic way of knowing that another has started to edit it. Others
+will get an error message when they try to commit the file. They must
+then use CVS commands to bring their working copy up to date with the
+repository revision. This process is almost automatic.
+
+ CVS also supports mechanisms which facilitate various kinds of
+communication, without actually enforcing rules like reserved checkouts
+do.
+
+ The rest of this chapter describes how these various models work,
+and some of the issues involved in choosing between them.
* Menu:
-* tag options:: tag options
+* File status:: A file can be in several states
+* Updating a file:: Bringing a file up-to-date
+* Conflicts example:: An informative example
+* Informing others:: To cooperate you must inform
+* Concurrency:: Simultaneous repository access
+* Watches:: Mechanisms to track who is editing files
+* Choosing a model:: Reserved or unreserved checkouts?

-File: cvs.info, Node: tag options, Up: tag
-
-tag options
------------
-
- These standard options are supported by `tag' (*note Common
-options::., for a complete description of them):
-
-`-F'
- Overwrite an existing tag of the same name on a different
- revision. This option is new in CVS 1.4. The old behavior is
- matched by `cvs tag -F'.
-
-`-l'
- Local; run only in current working directory.
-
-`-R'
- Commit directories recursively. This is on by default.
-
- Two special options are available:
-
-`-b'
- The -b option makes the tag a branch tag (*note Branches::.),
- allowing concurrent, isolated development. This is most useful
- for creating a patch to a previously released software
- distribution.
+File: cvs.info, Node: File status, Next: Updating a file, Up: Multiple developers
+
+File status
+===========
+
+ Based on what operations you have performed on a checked out file,
+and what operations others have performed to that file in the
+repository, one can classify a file in a number of states. The states,
+as reported by the `status' command, are:
+
+Up-to-date
+ The file is identical with the latest revision in the repository
+ for the branch in use.
+
+Locally Modified
+ You have edited the file, and not yet committed your changes.
+
+Locally Added
+ You have added the file with `add', and not yet committed your
+ changes.
+
+Locally Removed
+ You have removed the file with `remove', and not yet committed
+ your changes.
+
+Needs Checkout
+ Someone else has committed a newer revision to the repository.
+ The name is slightly misleading; you will ordinarily use `update'
+ rather than `checkout' to get that newer revision.
+
+Needs Patch
+ Like Needs Checkout, but the CVS server will send a patch rather
+ than the entire file. Sending a patch or sending an entire file
+ accomplishes the same thing.
+
+Needs Merge
+ Someone else has committed a newer revision to the repository, and
+ you have also made modifications to the file.
+
+File had conflicts on merge
+ This is like Locally Modified, except that a previous `update'
+ command gave a conflict. If you have not already done so, you
+ need to resolve the conflict as described in *Note Conflicts
+ example::.
+
+Unknown
+ CVS doesn't know anything about this file. For example, you have
+ created a new file and have not run `add'.
+
+ To help clarify the file status, `status' also reports the `Working
+revision' which is the revision that the file in the working directory
+derives from, and the `Repository revision' which is the latest
+revision in the repository for the branch in use.
+
+ The options to `status' are listed in *Note Invoking CVS::. For
+information on its `Sticky tag' and `Sticky date' output, see *Note
+Sticky tags::. For information on its `Sticky options' output, see the
+`-k' option in *Note update options::.
+
+ You can think of the `status' and `update' commands as somewhat
+complementary. You use `update' to bring your files up to date, and you
+can use `status' to give you some idea of what an `update' would do (of
+course, the state of the repository might change before you actually run
+`update'). In fact, if you want a command to display file status in a
+more brief format than is displayed by the `status' command, you can
+invoke
-`-d'
- Delete a tag.
+ $ cvs -n -q update
- If you use `cvs tag -d symbolic_tag', the symbolic tag you specify
- is deleted instead of being added. Warning: Be very certain of
- your ground before you delete a tag; doing this permanently
- discards some historical information, which may later turn out to
- be valuable.
+ The `-n' option means to not actually do the update, but merely to
+display statuses; the `-q' option avoids printing the name of each
+directory. For more information on the `update' command, and these
+options, see *Note Invoking CVS::.

-File: cvs.info, Node: update, Prev: tag, Up: Invoking CVS
-
-update--Bring work tree in sync with repository
-===============================================
+File: cvs.info, Node: Updating a file, Next: Conflicts example, Prev: File status, Up: Multiple developers
- * update [-AdflPpQqR] [-d] [-r tag|-D date] files...
+Bringing a file up to date
+==========================
- * Requires: repository, working directory.
+ When you want to update or merge a file, use the `update' command.
+For files that are not up to date this is roughly equivalent to a
+`checkout' command: the newest revision of the file is extracted from
+the repository and put in your working directory.
- * Changes: working directory.
+ Your modifications to a file are never lost when you use `update'.
+If no newer revision exists, running `update' has no effect. If you
+have edited the file, and a newer revision is available, CVS will merge
+all changes into your working copy.
- After you've run checkout to create your private copy of source from
-the common repository, other developers will continue changing the
-central source. From time to time, when it is convenient in your
-development process, you can use the `update' command from within your
-working directory to reconcile your work with any revisions applied to
-the source repository since your last checkout or update.
-
-* Menu:
+ For instance, imagine that you checked out revision 1.4 and started
+editing it. In the meantime someone else committed revision 1.5, and
+shortly after that revision 1.6. If you run `update' on the file now,
+CVS will incorporate all changes between revision 1.4 and 1.6 into your
+file.
-* update options:: update options
-* update output:: update output
-* update examples:: update examples
+ If any of the changes between 1.4 and 1.6 were made too close to any
+of the changes you have made, an "overlap" occurs. In such cases a
+warning is printed, and the resulting file includes both versions of
+the lines that overlap, delimited by special markers. *Note update::,
+for a complete description of the `update' command.

-File: cvs.info, Node: update options, Next: update output, Up: update
-
-update options
---------------
-
- These standard options are available with `update' (*note Common
-options::., for a complete description of them):
-
-`-D date'
- Use the most recent revision no later than DATE. This option is
- sticky, and implies `-P'.
-
-`-f'
- Only useful with the `-D DATE' or `-r TAG' flags. If no matching
- revision is found, retrieve the most recent revision (instead of
- ignoring the file).
-
-`-k KFLAG'
- Process RCS keywords according to KFLAG. See co(1). This option
- is sticky; future updates of this file in this working directory
- will use the same KFLAG. The `status' command can be viewed to
- see the sticky options. *Note status::.
-
-`-l'
- Local; run only in current working directory.
-
-`-P'
- Prune empty directories.
-
-`-p'
- Pipe files to the standard output.
-
-`-R'
- Commit directories recursively. This is on by default.
-
-`-r tag'
- Retrieve revision TAG. This option is sticky, and implies `-P'.
-
- These special options are also available with `update'.
-
-`-A'
- Reset any sticky tags, dates, or `-k' options. (If you get a
- working copy of a file by using one of the `-r', `-D', or `-k'
- options, CVS remembers the corresponding tag, date, or KFLAG and
- continues using it on future updates; use the `-A' option to make
- CVS forget these specifications, and retrieve the head revision of
- the file).
-
-`-d'
- Create any directories that exist in the repository if they're
- missing from the working directory. Normally, `update' acts only
- on directories and files that were already enrolled in your
- working directory.
-
- This is useful for updating directories that were created in the
- repository since the initial checkout; but it has an unfortunate
- side effect. If you deliberately avoided certain directories in
- the repository when you created your working directory (either
- through use of a module name or by listing explicitly the files
- and directories you wanted on the command line), then updating
- with `-d' will create those directories, which may not be what you
- want.
-
-`-I NAME'
- Ignore files whose names match NAME (in your working directory)
- during the update. You can specify `-I' more than once on the
- command line to specify several files to ignore. By default,
- `update' ignores files whose names match any of the following:
-
- RCSLOG RCS SCCS
- CVS* cvslog.*
- tags TAGS
- .make.state .nse_depinfo
- *~ #* .#* ,*
- *.old *.bak *.BAK *.orig *.rej .del-*
- *.a *.o *.so *.Z *.elc *.ln
- core
-
- Use `-I !' to avoid ignoring any files at all. *Note cvsignore::,
- for other ways to make CVS ignore some files.
-
-`-WSPEC'
- Specify file names that should be filtered during update. You can
- use this option repeatedly.
-
- SPEC can be a file name pattern of the same type that you can
- specify in the `.cvswrappers' file. *Note Wrappers::.
-
-`-jBRANCH'
- Merge the changes made between the resulting revision and the
- revision that it is based on (e.g., if the tag refers to a branch,
- CVS will merge all changes made in that branch into your working
- file).
-
- With two `-j' options, CVS will merge in the changes between the
- two respective revisions. This can be used to remove a certain
- delta from your working file; if the file `foo.c' is based on
- revision 1.6 and you want to remove the changes made between 1.3
- and 1.5, you might do:
-
- $ cvs update -j1.5 -j1.3 foo.c # note the order...
-
- In addition, each -j option can contain an optional date
- specification which, when used with branches, can limit the chosen
- revision to one within a specific date. An optional date is
- specified by adding a colon (:) to the tag:
- `-jSYMBOLIC_TAG:DATE_SPECIFIER'.
+File: cvs.info, Node: Conflicts example, Next: Informing others, Prev: Updating a file, Up: Multiple developers
-
-File: cvs.info, Node: update output, Next: update examples, Prev: update options, Up: update
-
-update output
--------------
-
- `update' keeps you informed of its progress by printing a line for
-each file, preceded by one character indicating the status of the file:
-
-`U FILE'
- The file was brought up to date with respect to the repository.
- This is done for any file that exists in the repository but not in
- your source, and for files that you haven't changed but are not
- the most recent versions available in the repository.
-
-`A FILE'
- The file has been added to your private copy of the sources, and
- will be added to the source repository when you run `commit' on
- the file. This is a reminder to you that the file needs to be
- committed.
-
-`R FILE'
- The file has been removed from your private copy of the sources,
- and will be removed from the source repository when you run
- `commit' on the file. This is a reminder to you that the file
- needs to be committed.
-
-`M FILE'
- The file is modified in your working directory.
-
- `M' can indicate one of two states for a file you're working on:
- either there were no modifications to the same file in the
- repository, so that your file remains as you last saw it; or there
- were modifications in the repository as well as in your copy, but
- they were merged successfully, without conflict, in your working
- directory.
-
- CVS will print some messages if it merges your work, and a backup
- copy of your working file (as it looked before you ran `update')
- will be made. The exact name of that file is printed while
- `update' runs.
-
-`C FILE'
- A conflict was detected while trying to merge your changes to FILE
- with changes from the source repository. FILE (the copy in your
- working directory) is now the output of the rcsmerge(1) command on
- the two revisions; an unmodified copy of your file is also in your
- working directory, with the name `.#FILE.REVISION' where REVISION
- is the RCS revision that your modified file started from. (Note
- that some systems automatically purge files that begin with `.#'
- if they have not been accessed for a few days. If you intend to
- keep a copy of your original file, it is a very good idea to rename
- it.)
-
-`? FILE'
- FILE is in your working directory, but does not correspond to
- anything in the source repository, and is not in the list of files
- for CVS to ignore (see the description of the `-I' option, and
- *note cvsignore::.).
-
- Note that no warning message like this is printed for spurious
- directories that CVS encounters. The directory, and all its
- contents, are silently ignored.
+Conflicts example
+=================
-
-File: cvs.info, Node: update examples, Prev: update output, Up: update
+ Suppose revision 1.4 of `driver.c' contains this:
-update examples
----------------
+ #include <stdio.h>
+
+ void main()
+ {
+ parse();
+ if (nerr == 0)
+ gencode();
+ else
+ fprintf(stderr, "No code generated.\n");
+ exit(nerr == 0 ? 0 : 1);
+ }
+
+Revision 1.6 of `driver.c' contains this:
+
+ #include <stdio.h>
+
+ int main(int argc,
+ char **argv)
+ {
+ parse();
+ if (argc != 1)
+ {
+ fprintf(stderr, "tc: No args expected.\n");
+ exit(1);
+ }
+ if (nerr == 0)
+ gencode();
+ else
+ fprintf(stderr, "No code generated.\n");
+ exit(!!nerr);
+ }
+
+Your working copy of `driver.c', based on revision 1.4, contains this
+before you run `cvs update':
+
+ #include <stdlib.h>
+ #include <stdio.h>
+
+ void main()
+ {
+ init_scanner();
+ parse();
+ if (nerr == 0)
+ gencode();
+ else
+ fprintf(stderr, "No code generated.\n");
+ exit(nerr == 0 ? EXIT_SUCCESS : EXIT_FAILURE);
+ }
+
+You run `cvs update':
+
+ $ cvs update driver.c
+ RCS file: /usr/local/cvsroot/yoyodyne/tc/driver.c,v
+ retrieving revision 1.4
+ retrieving revision 1.6
+ Merging differences between 1.4 and 1.6 into driver.c
+ rcsmerge warning: overlaps during merge
+ cvs update: conflicts found in driver.c
+ C driver.c
+
+CVS tells you that there were some conflicts. Your original working
+file is saved unmodified in `.#driver.c.1.4'. The new version of
+`driver.c' contains this:
+
+ #include <stdlib.h>
+ #include <stdio.h>
+
+ int main(int argc,
+ char **argv)
+ {
+ init_scanner();
+ parse();
+ if (argc != 1)
+ {
+ fprintf(stderr, "tc: No args expected.\n");
+ exit(1);
+ }
+ if (nerr == 0)
+ gencode();
+ else
+ fprintf(stderr, "No code generated.\n");
+ <<<<<<< driver.c
+ exit(nerr == 0 ? EXIT_SUCCESS : EXIT_FAILURE);
+ =======
+ exit(!!nerr);
+ >>>>>>> 1.6
+ }
+
+Note how all non-overlapping modifications are incorporated in your
+working copy, and that the overlapping section is clearly marked with
+`<<<<<<<', `=======' and `>>>>>>>'.
+
+ You resolve the conflict by editing the file, removing the markers
+and the erroneous line. Suppose you end up with this file:
+ #include <stdlib.h>
+ #include <stdio.h>
+
+ int main(int argc,
+ char **argv)
+ {
+ init_scanner();
+ parse();
+ if (argc != 1)
+ {
+ fprintf(stderr, "tc: No args expected.\n");
+ exit(1);
+ }
+ if (nerr == 0)
+ gencode();
+ else
+ fprintf(stderr, "No code generated.\n");
+ exit(nerr == 0 ? EXIT_SUCCESS : EXIT_FAILURE);
+ }
+
+You can now go ahead and commit this as revision 1.7.
+
+ $ cvs commit -m "Initialize scanner. Use symbolic exit values." driver.c
+ Checking in driver.c;
+ /usr/local/cvsroot/yoyodyne/tc/driver.c,v <-- driver.c
+ new revision: 1.7; previous revision: 1.6
+ done
- The following line will display all files which are not up-to-date
-without actually change anything in your working directory. It can be
-used to check what has been going on with the project.
+ For your protection, CVS will refuse to check in a file if a
+conflict occurred and you have not resolved the conflict. Currently to
+resolve a conflict, you must change the timestamp on the file. In
+previous versions of CVS, you also needed to insure that the file
+contains no conflict markers. Because your file may legitimately
+contain conflict markers (that is, occurrences of `>>>>>>> ' at the
+start of a line that don't mark a conflict), the current version of CVS
+will print a warning and proceed to check in the file.
- $ cvs -n -q update
+ If you use release 1.04 or later of pcl-cvs (a GNU Emacs front-end
+for CVS) you can use an Emacs package called emerge to help you resolve
+conflicts. See the documentation for pcl-cvs.

-File: cvs.info, Node: Administrative files, Next: Environment variables, Prev: Invoking CVS, Up: Top
-
-Reference manual for the Administrative files
-*********************************************
-
- Inside the repository, in the directory `$CVSROOT/CVSROOT', there
-are a number of supportive files for CVS. You can use CVS in a limited
-fashion without any of them, but if they are set up properly they can
-help make life easier.
+File: cvs.info, Node: Informing others, Next: Concurrency, Prev: Conflicts example, Up: Multiple developers
- The most important of these files is the `modules' file, which
-defines the modules inside the repository.
+Informing others about commits
+==============================
-* Menu:
-
-* modules:: Defining modules
-* Wrappers:: Treat directories as files
-* commit files:: The commit support files
-* commitinfo:: Pre-commit checking
-* editinfo:: Specifying how log messages are created
-* loginfo:: Where should log messages be sent?
-* rcsinfo:: Templates for the log messages
-* cvsignore:: Ignoring files via cvsignore
-* history file:: History information
-* Setting up:: Setting up the repository
+ It is often useful to inform others when you commit a new revision
+of a file. The `-i' option of the `modules' file, or the `loginfo'
+file, can be used to automate this process. *Note modules::. *Note
+loginfo::. You can use these features of CVS to, for instance,
+instruct CVS to mail a message to all developers, or post a message to
+a local newsgroup.

-File: cvs.info, Node: modules, Next: Wrappers, Up: Administrative files
+File: cvs.info, Node: Concurrency, Next: Watches, Prev: Informing others, Up: Multiple developers
-The modules file
-================
+Several developers simultaneously attempting to run CVS
+=======================================================
- The `modules' file records your definitions of names for collections
-of source code. CVS will use these definitions if you create a file
-with the right format in `$CVSROOT/CVSROOT/modules,v'. The
-mkmodules(1) command should be run whenever the modules file changes,
-so that the appropriate files can be generated (depending on how you
-have configured CVS operation).
-
- To allow convenient editing of the `modules' file itself, the file
-should include an entry like the following (where LOCALBIN represents
-the directory where your site installs programs like mkmodules(1)):
-
- modules -i /LOCALBIN/mkmodules CVSROOT modules
-
-This defines the name `modules' as the module name for the file itself,
-so that you can use
-
- $ cvs checkout modules
-
-to get a copy of the file that you can edit. You should define similar
-module entries for the other configuration files described in this
-appendix, except `history').
-
- The `modules' file may contain blank lines and comments (lines
-beginning with `#') as well as module definitions. Long lines can be
-continued on the next line by specifying a backslash (`\') as the last
-character on the line.
-
- A module definition is a single line of the `modules' file, in
-either of two formats. In both cases, MNAME represents the symbolic
-module name, and the remainder of the line is its definition.
-
-`MNAME -a ALIASES...'
- This represents the simplest way of defining a module MNAME. The
- `-a' flags the definition as a simple alias: CVS will treat any
- use of MNAME (as a command argument) as if the list of names
- ALIASES had been specified instead. ALIASES may contain either
- other module names or paths. When you use paths in aliases,
- `checkout' creates all intermediate directories in the working
- directory, just as if the path had been specified explicitly in
- the CVS arguments.
-
-`MNAME [ options ] DIR [ FILES... ] [ &MODULE... ]'
- In the simplest case, this form of module definition reduces to
- `MNAME DIR'. This defines all the files in directory DIR as
- module mname. DIR is a relative path (from `$CVSROOT') to a
- directory of source in the source repository. In this case, on
- checkout, a single directory called MNAME is created as a working
- directory; no intermediate directory levels are used by default,
- even if DIR was a path involving several directory levels.
-
- By explicitly specifying files in the module definition after DIR,
- you can select particular files from directory DIR. The sample
- definition for `modules' is an example of a module defined with a
- single file from a particular directory. Here is another example:
-
- m4test unsupported/gnu/m4 foreach.m4 forloop.m4
-
- With this definition, executing `cvs checkout m4test' will create
- a single working directory `m4test' containing the two files
- listed, which both come from a common directory several levels deep
- in the CVS source repository.
-
- A module definition can refer to other modules by including
- `&MODULE' in its definition. `checkout' creates a subdirectory
- for each such module, in your working directory.
-
- `-d NAME'
- Name the working directory something other than the module
- name.
-
- `-i PROG'
- Specify a program PROG to run whenever files in a module are
- committed. PROG runs with a single argument, the full
- pathname of the affected directory in a source repository.
- The `commitinfo', `loginfo', and `editinfo' files provide
- other ways to call a program on commit.
-
- `-o PROG'
- Specify a program PROG to run whenever files in a module are
- checked out. PROG runs with a single argument, the module
- name.
-
- `-s STATUS'
- Assign a status to the module. When the module file is
- printed with `cvs checkout -s' the modules are sorted
- according to primarily module status, and secondarily
- according to the module name. This option has no other
- meaning. You can use this option for several things besides
- status: for instance, list the person that is responsible for
- this module.
-
- `-t PROG'
- Specify a program PROG to run whenever files in a module are
- tagged with `rtag'. PROG runs with two arguments: the module
- name and the symbolic tag specified to `rtag'. There is no
- way to specify a program to run when `tag' is executed.
-
- `-u PROG'
- Specify a program PROG to run whenever `cvs update' is
- executed from the top-level directory of the checked-out
- module. PROG runs with a single argument, the full path to
- the source repository for this module.
+ If several developers try to run CVS at the same time, one may get
+the following message:
-
-File: cvs.info, Node: Wrappers, Next: commit files, Prev: modules, Up: Administrative files
+ [11:43:23] waiting for bach's lock in /usr/local/cvsroot/foo
-The cvswrappers file
-====================
+ CVS will try again every 30 seconds, and either continue with the
+operation or print the message again, if it still needs to wait. If a
+lock seems to stick around for an undue amount of time, find the person
+holding the lock and ask them about the cvs command they are running.
+If they aren't running a cvs command, look in the repository directory
+mentioned in the message and remove files which they own whose names
+start with `#cvs.rfl', `#cvs.wfl', or `#cvs.lock'.
- Wrappers are essentially directories that are to be treated as
-"files." This package allows such wrappers to be "processed" on the
-way in and out of CVS. The intended use is to wrap up a wrapper into a
-single tar, such that that tar can be treated as a single binary file
-in CVS. Apparently this is particularly useful on NEXTSTEP. To solve
-the problem effectively, it was also necessary to be able to prevent
-rcsmerge application at appropriate times.
+ Note that these locks are to protect CVS's internal data structures
+and have no relationship to the word "lock" in the sense used by
+RCS--which refers to reserved checkouts (*note Multiple developers::).
- The file `cvswrappers' defines the script that will be run on a file
-when its name matches a regular expresion. There are two scripts that
-can be run on a file or directory. A script to filter the
-directory/file before it gets checked in and another that is run when
-the file/directory gets checked out.
+ Any number of people can be reading from a given repository at a
+time; only when someone is writing do the locks prevent other people
+from reading or writing.
- The `cvswrappers' also specifies the merge methodology that should
-be used when the file is updated, that is should a MERGE or a straight
-COPY of the diferences be used when checking into the repository.
+ One might hope for the following property
- The basic format of the file `cvswrappers' is given as such:
+ If someone commits some changes in one cvs command,
+ then an update by someone else will either get all the
+ changes, or none of them.
- wildcard [option value][option value]...
-
- where option is one of
- -f from cvs filter value: path tofilter
- -t to cvs filter value: path to filter
- -m update methodology value: MERGE or COPY
-
- and value is a single-quote delimited value.
+ but CVS does _not_ have this property. For example, given the files
- *.nib -f 'uncom %s' -t 'comb %s %s' -m 'COPY'
- *.rtfd -f 'uncom %s' -t 'comb %s %s' -m 'COPY'
+ a/one.c
+ a/two.c
+ b/three.c
+ b/four.c
-The above example of a `cvswrappers' file states that all
-files/directories that end with a `.nib' should be filtered with the
-`comb' program before checking the file into the repository. The file
-should be filtered though the `uncom' program when the file is checked
-out of the repository. The `cvswrappers' file also states that a `COPY'
-methodology should be used when updating the files in the repository
-(that is no merging should be performed).
+ if someone runs
-The `comb' filter is called with two arguments, the first is the name
-of the file/directory to filter and the second is the pathname to where
-the resulting filtered file should be placed.
+ cvs ci a/two.c b/three.c
-The `uncom' filter is called with one argument, which is the name of
-the file to filter from. The end result of the `uncom' filter will be a
-file/directory in the users current working directory, that represents
-the source before being filtered.
+ and someone else runs `cvs update' at the same time, the person
+running `update' might get only the change to `b/three.c' and not the
+change to `a/two.c'.

-File: cvs.info, Node: commit files, Next: commitinfo, Prev: Wrappers, Up: Administrative files
-
-The commit support files
-========================
-
- The `-i' flag in the `modules' file can be used to run a certain
-program whenever files are committed (*note modules::.). The files
-described in this section provide other, more flexible, ways to run
-programs whenever something is committed.
-
- There are three kind of programs that can be run on commit. They
-are specified in files in the repository, as described below. The
-following table summarizes the file names and the purpose of the
-corresponding programs.
-
-`commitinfo'
- The program is responsible for checking that the commit is
- allowed. If it exits with a non-zero exit status the commit will
- be aborted.
-
-`editinfo'
- The specified program is used to edit the log message, and
- possibly verify that it contains all required fields. This is
- most useful in combination with the `rcsinfo' file, which can hold
- a log message template (*note rcsinfo::.).
-
-`loginfo'
- The specified program is called when the commit is complete. It
- receives the log message and some additional information and can
- store the log message in a file, or mail it to appropriate
- persons, or maybe post it to a local newsgroup, or... Your
- imagination is the limit!
+File: cvs.info, Node: Watches, Next: Choosing a model, Prev: Concurrency, Up: Multiple developers
+
+Mechanisms to track who is editing files
+========================================
+
+ For many groups, use of CVS in its default mode is perfectly
+satisfactory. Users may sometimes go to check in a modification only
+to find that another modification has intervened, but they deal with it
+and proceed with their check in. Other groups prefer to be able to
+know who is editing what files, so that if two people try to edit the
+same file they can choose to talk about who is doing what when rather
+than be surprised at check in time. The features in this section allow
+such coordination, while retaining the ability of two developers to
+edit the same file at the same time.
+
+ For maximum benefit developers should use `cvs edit' (not `chmod')
+to make files read-write to edit them, and `cvs release' (not `rm') to
+discard a working directory which is no longer in use, but CVS is not
+able to enforce this behavior.
* Menu:
-* syntax:: The common syntax
+* Setting a watch:: Telling CVS to watch certain files
+* Getting Notified:: Telling CVS to notify you
+* Editing files:: How to edit a file which is being watched
+* Watch information:: Information about who is watching and editing
+* Watches Compatibility:: Watches interact poorly with CVS 1.6 or earlier

-File: cvs.info, Node: syntax, Up: commit files
-
-The common syntax
------------------
+File: cvs.info, Node: Setting a watch, Next: Getting Notified, Up: Watches
- The four files `commitinfo', `loginfo', `rcsinfo' and `editinfo' all
-have a common format. The purpose of the files are described later on.
-The common syntax is described here.
+Telling CVS to watch certain files
+----------------------------------
- Each line contains the following:
- * A regular expression
+ To enable the watch features, you first specify that certain files
+are to be watched.
- * A whitespace separator--one or more spaces and/or tabs.
+ - Command: cvs watch on [`-lR'] files ...
+ Specify that developers should run `cvs edit' before editing
+ FILES. CVS will create working copies of FILES read-only, to
+ remind developers to run the `cvs edit' command before working on
+ them.
- * A file name or command-line template.
+ If FILES includes the name of a directory, CVS arranges to watch
+ all files added to the corresponding repository directory, and
+ sets a default for files added in the future; this allows the user
+ to set notification policies on a per-directory basis. The
+ contents of the directory are processed recursively, unless the
+ `-l' option is given. The `-R' option can be used to force
+ recursion if the `-l' option is set in `~/.cvsrc' (*note
+ ~/.cvsrc::).
-Blank lines are ignored. Lines that start with the character `#' are
-treated as comments. Long lines unfortunately can *not* be broken in
-two parts in any way.
+ If FILES is omitted, it defaults to the current directory.
- The first regular expression that matches the current directory name
-in the repository is used. The rest of the line is used as a file name
-or command-line as appropriate.
-
-File: cvs.info, Node: commitinfo, Next: editinfo, Prev: commit files, Up: Administrative files
-
-Commitinfo
-==========
-
- The `commitinfo' file defines programs to execute whenever `cvs
-commit' is about to execute. These programs are used for pre-commit
-checking to verify that the modified, added and removed files are really
-ready to be committed. This could be used, for instance, to verify
-that the changed files conform to to your site's standards for coding
-practice.
-
- As mentioned earlier, each line in the `commitinfo' file consists of
-a regular expression and a command-line template. The template can
-include a program name and any number of arguments you wish to supply
-to it. The full path to the current source repository is appended to
-the template, followed by the file names of any files involved in the
-commit (added, removed, and modified files).
+ - Command: cvs watch off [`-lR'] files ...
+ Do not create FILES read-only on checkout; thus, developers will
+ not be reminded to use `cvs edit' and `cvs unedit'.
- The first line with a regular expression matching the relative path
-to the module will be used. If the command returns a non-zero exit
-status the commit will be aborted.
+ The FILES and options are processed as for `cvs watch on'.
- If the repository name does not match any of the regular expressions
-in this file, the `DEFAULT' line is used, if it is specified.
-
- All occurances of the name `ALL' appearing as a regular expression
-are used in addition to the first matching regular expression or the
-name `DEFAULT'.
-
- Note: when CVS is accessing a remote repository, `commitinfo' will
-be run on the *remote* (i.e., server) side, not the client side (*note
-Remote repositories::.).

-File: cvs.info, Node: editinfo, Next: loginfo, Prev: commitinfo, Up: Administrative files
-
-Editinfo
-========
-
- If you want to make sure that all log messages look the same way,
-you can use the `editinfo' file to specify a program that is used to
-edit the log message. This program could be a custom-made editor that
-always enforces a certain style of the log message, or maybe a simple
-shell script that calls an editor, and checks that the entered message
-contains the required fields.
+File: cvs.info, Node: Getting Notified, Next: Editing files, Prev: Setting a watch, Up: Watches
- If no matching line is found in the `editinfo' file, the editor
-specified in the environment variable `$CVSEDITOR' is used instead. If
-that variable is not set, then the environment variable `$EDITOR' is
-used instead. If that variable is not set a precompiled default,
-normally `vi', will be used.
+Telling CVS to notify you
+-------------------------
- The `editinfo' file is often most useful together with the `rcsinfo'
-file, which can be used to specify a log message template.
+ You can tell CVS that you want to receive notifications about
+various actions taken on a file. You can do this without using `cvs
+watch on' for the file, but generally you will want to use `cvs watch
+on', so that developers use the `cvs edit' command.
- Each line in the `editinfo' file consists of a regular expression
-and a command-line template. The template must include a program name,
-and can include any number of arguments. The full path to the current
-log message template file is appended to the template.
+ - Command: cvs watch add [`-a' action] [`-lR'] files ...
+ Add the current user to the list of people to receive notification
+ of work done on FILES.
- One thing that should be noted is that the `ALL' keyword is not
-supported. If more than one matching line is found, the first one is
-used. This can be useful for specifying a default edit script in a
-module, and then overriding it in a subdirectory.
+ The `-a' option specifies what kinds of events CVS should notify
+ the user about. ACTION is one of the following:
- If the repository name does not match any of the regular expressions
-in this file, the `DEFAULT' line is used, if it is specified.
+ `edit'
+ Another user has applied the `cvs edit' command (described
+ below) to a file.
- If the edit script exits with a non-zero exit status, the commit is
-aborted.
+ `unedit'
+ Another user has applied the `cvs unedit' command (described
+ below) or the `cvs release' command to a file, or has deleted
+ the file and allowed `cvs update' to recreate it.
- Note: when CVS is accessing a remote repository, `editinfo' will be
-run on the *remote* (i.e., server) side, not the client side (*note
-Remote repositories::.).
+ `commit'
+ Another user has committed changes to a file.
-* Menu:
+ `all'
+ All of the above.
-* editinfo example:: Editinfo example
+ `none'
+ None of the above. (This is useful with `cvs edit',
+ described below.)
-
-File: cvs.info, Node: editinfo example, Up: editinfo
+ The `-a' option may appear more than once, or not at all. If
+ omitted, the action defaults to `all'.
-Editinfo example
-----------------
+ The FILES and options are processed as for the `cvs watch'
+ commands.
- The following is a little silly example of a `editinfo' file,
-together with the corresponding `rcsinfo' file, the log message
-template and an editor script. We begin with the log message template.
-We want to always record a bug-id number on the first line of the log
-message. The rest of log message is free text. The following template
-is found in the file `/usr/cvssupport/tc.template'.
- BugId:
+ - Command: cvs watch remove [`-a' action] [`-lR'] files ...
+ Remove a notification request established using `cvs watch add';
+ the arguments are the same. If the `-a' option is present, only
+ watches for the specified actions are removed.
- The script `/usr/cvssupport/bugid.edit' is used to edit the log
-message.
- #!/bin/sh
- #
- # bugid.edit filename
- #
- # Call $EDITOR on FILENAME, and verify that the
- # resulting file contains a valid bugid on the first
- # line.
- if [ "x$EDITOR" = "x" ]; then EDITOR=vi; fi
- if [ "x$CVSEDITOR" = "x" ]; then CVSEDITOR=$EDITOR; fi
- $CVSEDITOR $1
- until head -1|grep '^BugId:[ ]*[0-9][0-9]*$' < $1
- do echo -n "No BugId found. Edit again? ([y]/n)"
- read ans
- case ${ans} in
- n*) exit 1;;
- esac
- $CVSEDITOR $1
- done
+ When the conditions exist for notification, CVS calls the `notify'
+administrative file. Edit `notify' as one edits the other
+administrative files (*note Intro administrative files::). This file
+follows the usual conventions for administrative files (*note
+syntax::), where each line is a regular expression followed by a
+command to execute. The command should contain a single occurrence of
+`%s' which will be replaced by the user to notify; the rest of the
+information regarding the notification will be supplied to the command
+on standard input. The standard thing to put in the `notify' file is
+the single line:
- The `editinfo' file contains this line:
+ ALL mail %s -s "CVS notification"
- ^tc /usr/cvssupport/bugid.edit
+ This causes users to be notified by electronic mail.
- The `rcsinfo' file contains this line:
+ Note that if you set this up in the straightforward way, users
+receive notifications on the server machine. One could of course write
+a `notify' script which directed notifications elsewhere, but to make
+this easy, CVS allows you to associate a notification address for each
+user. To do so create a file `users' in `CVSROOT' with a line for each
+user in the format USER:VALUE. Then instead of passing the name of the
+user to be notified to `notify', CVS will pass the VALUE (normally an
+email address on some other machine).
- ^tc /usr/cvssupport/tc.template
+ CVS does not notify you for your own changes. Currently this check
+is done based on whether the user name of the person taking the action
+which triggers notification matches the user name of the person getting
+notification. In fact, in general, the watches features only track one
+edit by each user. It probably would be more useful if watches tracked
+each working directory separately, so this behavior might be worth
+changing.

-File: cvs.info, Node: loginfo, Next: rcsinfo, Prev: editinfo, Up: Administrative files
+File: cvs.info, Node: Editing files, Next: Watch information, Prev: Getting Notified, Up: Watches
+
+How to edit a file which is being watched
+-----------------------------------------
+
+ Since a file which is being watched is checked out read-only, you
+cannot simply edit it. To make it read-write, and inform others that
+you are planning to edit it, use the `cvs edit' command. Some systems
+call this a "checkout", but CVS uses that term for obtaining a copy of
+the sources (*note Getting the source::), an operation which those
+systems call a "get" or a "fetch".
+
+ - Command: cvs edit [options] files ...
+ Prepare to edit the working files FILES. CVS makes the FILES
+ read-write, and notifies users who have requested `edit'
+ notification for any of FILES.
+
+ The `cvs edit' command accepts the same OPTIONS as the `cvs watch
+ add' command, and establishes a temporary watch for the user on
+ FILES; CVS will remove the watch when FILES are `unedit'ed or
+ `commit'ted. If the user does not wish to receive notifications,
+ she should specify `-a none'.
+
+ The FILES and options are processed as for the `cvs watch'
+ commands.
+
+
+ Normally when you are done with a set of changes, you use the `cvs
+commit' command, which checks in your changes and returns the watched
+files to their usual read-only state. But if you instead decide to
+abandon your changes, or not to make any changes, you can use the `cvs
+unedit' command.
+
+ - Command: cvs unedit [`-lR'] files ...
+ Abandon work on the working files FILES, and revert them to the
+ repository versions on which they are based. CVS makes those
+ FILES read-only for which users have requested notification using
+ `cvs watch on'. CVS notifies users who have requested `unedit'
+ notification for any of FILES.
+
+ The FILES and options are processed as for the `cvs watch'
+ commands.
+
+ If watches are not in use, the `unedit' command probably does not
+ work, and the way to revert to the repository version is to remove
+ the file and then use `cvs update' to get a new copy. The meaning
+ is not precisely the same; removing and updating may also bring in
+ some changes which have been made in the repository since the last
+ time you updated.
+
+ When using client/server CVS, you can use the `cvs edit' and `cvs
+unedit' commands even if CVS is unable to successfully communicate with
+the server; the notifications will be sent upon the next successful CVS
+command.
-Loginfo
-=======
-
- The `loginfo' file is used to control where `cvs commit' log
-information is sent. The first entry on a line is a regular expression
-which is tested against the directory that the change is being made to,
-relative to the `$CVSROOT'. If a match is found, then the remainder of
-the line is a filter program that should expect log information on its
-standard input.
-
- The filter program may use one and only one % modifier (a la
-printf). If `%s' is specified in the filter program, a brief title is
-included (enclosed in single quotes) showing the modified file names.
+
+File: cvs.info, Node: Watch information, Next: Watches Compatibility, Prev: Editing files, Up: Watches
- If the repository name does not match any of the regular expressions
-in this file, the `DEFAULT' line is used, if it is specified.
+Information about who is watching and editing
+---------------------------------------------
- All occurances of the name `ALL' appearing as a regular expression
-are used in addition to the first matching regular expression or
-`DEFAULT'.
+ - Command: cvs watchers [`-lR'] files ...
+ List the users currently watching changes to FILES. The report
+ includes the files being watched, and the mail address of each
+ watcher.
- The first matching regular expression is used.
+ The FILES and options are processed as for the `cvs watch'
+ commands.
- *Note commit files::, for a description of the syntax of the
-`loginfo' file.
- Note: when CVS is accessing a remote repository, `loginfo' will be
-run on the *remote* (i.e., server) side, not the client side (*note
-Remote repositories::.).
+ - Command: cvs editors [`-lR'] files ...
+ List the users currently working on FILES. The report includes
+ the mail address of each user, the time when the user began
+ working with the file, and the host and path of the working
+ directory containing the file.
-* Menu:
+ The FILES and options are processed as for the `cvs watch'
+ commands.
-* loginfo example:: Loginfo example

-File: cvs.info, Node: loginfo example, Up: loginfo
+File: cvs.info, Node: Watches Compatibility, Prev: Watch information, Up: Watches
-Loginfo example
----------------
+Using watches with old versions of CVS
+--------------------------------------
- The following `loginfo' file, together with the tiny shell-script
-below, appends all log messages to the file
-`$CVSROOT/CVSROOT/commitlog', and any commits to the administrative
-files (inside the `CVSROOT' directory) are also logged in
-`/usr/adm/cvsroot-log' and mailed to ceder.
+ If you use the watch features on a repository, it creates `CVS'
+directories in the repository and stores the information about watches
+in that directory. If you attempt to use CVS 1.6 or earlier with the
+repository, you get an error message such as the following (all on one
+line):
- ALL /usr/local/bin/cvs-log $CVSROOT/CVSROOT/commitlog
- ^CVSROOT Mail -s %s ceder
- ^CVSROOT /usr/local/bin/cvs-log /usr/adm/cvsroot-log
+ cvs update: cannot open CVS/Entries for reading:
+ No such file or directory
- The shell-script `/usr/local/bin/cvs-log' looks like this:
-
- #!/bin/sh
- (echo "-----------------------------------------------------------------";
- echo -n $USER" ";
- date;
- echo;
- sed '1s+'${CVSROOT}'++') >> $1
+ and your operation will likely be aborted. To use the watch
+features, you must upgrade all copies of CVS which use that repository
+in local or server mode. If you cannot upgrade, use the `watch off' and
+`watch remove' commands to remove all watches, and that will restore
+the repository to a state which CVS 1.6 can cope with.

-File: cvs.info, Node: rcsinfo, Next: cvsignore, Prev: loginfo, Up: Administrative files
+File: cvs.info, Node: Choosing a model, Prev: Watches, Up: Multiple developers
+
+Choosing between reserved or unreserved checkouts
+=================================================
+
+ Reserved and unreserved checkouts each have pros and cons. Let it
+be said that a lot of this is a matter of opinion or what works given
+different groups' working styles, but here is a brief description of
+some of the issues. There are many ways to organize a team of
+developers. CVS does not try to enforce a certain organization. It is
+a tool that can be used in several ways.
+
+ Reserved checkouts can be very counter-productive. If two persons
+want to edit different parts of a file, there may be no reason to
+prevent either of them from doing so. Also, it is common for someone
+to take out a lock on a file, because they are planning to edit it, but
+then forget to release the lock.
+
+ People, especially people who are familiar with reserved checkouts,
+often wonder how often conflicts occur if unreserved checkouts are
+used, and how difficult they are to resolve. The experience with many
+groups is that they occur rarely and usually are relatively
+straightforward to resolve.
+
+ The rarity of serious conflicts may be surprising, until one realizes
+that they occur only when two developers disagree on the proper design
+for a given section of code; such a disagreement suggests that the team
+has not been communicating properly in the first place. In order to
+collaborate under _any_ source management regimen, developers must
+agree on the general design of the system; given this agreement,
+overlapping changes are usually straightforward to merge.
+
+ In some cases unreserved checkouts are clearly inappropriate. If no
+merge tool exists for the kind of file you are managing (for example
+word processor files or files edited by Computer Aided Design
+programs), and it is not desirable to change to a program which uses a
+mergeable data format, then resolving conflicts is going to be
+unpleasant enough that you generally will be better off to simply avoid
+the conflicts instead, by using reserved checkouts.
+
+ The watches features described above in *Note Watches:: can be
+considered to be an intermediate model between reserved checkouts and
+unreserved checkouts. When you go to edit a file, it is possible to
+find out who else is editing it. And rather than having the system
+simply forbid both people editing the file, it can tell you what the
+situation is and let you figure out whether it is a problem in that
+particular case or not. Therefore, for some groups it can be
+considered the best of both the reserved checkout and unreserved
+checkout worlds.
-Rcsinfo
-=======
-
- The `rcsinfo' file can be used to specify a form to edit when
-filling out the commit log. The `rcsinfo' file has a syntax similar to
-the `editinfo', `commitinfo' and `loginfo' files. *Note syntax::.
-Unlike the other files the second part is *not* a command-line
-template. Instead, the part after the regular expression should be a
-full pathname to a file containing the log message template.
+
+File: cvs.info, Node: Revision management, Next: Keyword substitution, Prev: Multiple developers, Up: Top
- If the repository name does not match any of the regular expressions
-in this file, the `DEFAULT' line is used, if it is specified.
+Revision management
+*******************
- All occurances of the name `ALL' appearing as a regular expression
-are used in addition to the first matching regular expression or
-`DEFAULT'.
+ If you have read this far, you probably have a pretty good grasp on
+what CVS can do for you. This chapter talks a little about things that
+you still have to decide.
- The log message template will be used as a default log message. If
-you specify a log message with `cvs commit -m MESSAGE' or `cvs commit -f
-FILE' that log message will override the template.
+ If you are doing development on your own using CVS you could
+probably skip this chapter. The questions this chapter takes up become
+more important when more than one person is working in a repository.
- *Note editinfo example::, for an example `rcsinfo' file.
+* Menu:
- Note: when CVS is accessing a remote repository, `rcsinfo' will be
-run on the *remote* (i.e., server) side, not the client side (*note
-Remote repositories::.).
+* When to commit:: Some discussion on the subject

-File: cvs.info, Node: cvsignore, Next: history file, Prev: rcsinfo, Up: Administrative files
-
-Ignoring files via cvsignore
-============================
-
- There are certain file names that frequently occur inside your
-working copy, but that you don't want to put under CVS control.
-Examples are all the object files that you get while you compile your
-sources. Normally, when you run `cvs update', it prints a line for
-each file it encounters that it doesn't know about (*note update
-output::.).
+File: cvs.info, Node: When to commit, Up: Revision management
+
+When to commit?
+===============
+
+ Your group should decide which policy to use regarding commits.
+Several policies are possible, and as your experience with CVS grows
+you will probably find out what works for you.
+
+ If you commit files too quickly you might commit files that do not
+even compile. If your partner updates his working sources to include
+your buggy file, he will be unable to compile the code. On the other
+hand, other persons will not be able to benefit from the improvements
+you make to the code if you commit very seldom, and conflicts will
+probably be more common.
+
+ It is common to only commit files after making sure that they can be
+compiled. Some sites require that the files pass a test suite.
+Policies like this can be enforced using the commitinfo file (*note
+commitinfo::), but you should think twice before you enforce such a
+convention. By making the development environment too controlled it
+might become too regimented and thus counter-productive to the real
+goal, which is to get software written.
- CVS has a list of files (or sh(1) file name patterns) that it should
-ignore while running `update', `import' and `release'. This list is
-constructed in the following way.
-
- * The list is initialized to the following file name patterns:
-
- RCSLOG RCS SCCS
- CVS* cvslog.*
- tags TAGS
- .make.state .nse_depinfo
- *~ #* .#* ,*
- *.old *.bak *.BAK *.orig *.rej .del-*
- *.a *.o *.so *.Z *.elc *.ln
- core
-
- * The per-repository list in `$CVSROOT/CVSROOT/cvsignore' is
- appended to the list, if that file exists.
+
+File: cvs.info, Node: Keyword substitution, Next: Tracking sources, Prev: Revision management, Up: Top
- * The per-user list in `.cvsignore' in your home directory is
- appended to the list, if it exists.
+Keyword substitution
+********************
- * Any entries in the environment variable `$CVSIGNORE' is appended
- to the list.
+ As long as you edit source files inside a working directory you can
+always find out the state of your files via `cvs status' and `cvs log'.
+But as soon as you export the files from your development environment
+it becomes harder to identify which revisions they are.
- * Any `-I' options given to CVS is appended.
+ CVS can use a mechanism known as "keyword substitution" (or "keyword
+expansion") to help identifying the files. Embedded strings of the form
+`$KEYWORD$' and `$KEYWORD:...$' in a file are replaced with strings of
+the form `$KEYWORD:VALUE$' whenever you obtain a new revision of the
+file.
- * As CVS traverses through your directories, the contents of any
- `.cvsignore' will be appended to the list. The patterns found in
- `.cvsignore' are only valid for the directory that contains them,
- not for any sub-directories.
+* Menu:
- In any of the 5 places listed above, a single exclamation mark (`!')
-clears the ignore list. This can be used if you want to store any file
-which normally is ignored by CVS.
+* Keyword list:: Keywords
+* Using keywords:: Using keywords
+* Avoiding substitution:: Avoiding substitution
+* Substitution modes:: Substitution modes
+* Log keyword:: Problems with the $Log: cvs.info-4,v $
+* Log keyword:: Problems with the Revision 1.2 2001/09/29 00:00:39 tholo
+* Log keyword:: Problems with the Merge remaining local changes, correct build issues
+* Log keyword:: Problems with the keyword.

-File: cvs.info, Node: history file, Next: Setting up, Prev: cvsignore, Up: Administrative files
-
-The history file
-================
-
- The file `$CVSROOT/CVSROOT/history' is used to log information for
-the `history' command (*note history::.). This file must be created to
-turn on logging. This is done automatically if the `cvsinit' script is
-used to set up the repository.
-
- The file format of the `history' file is unfortunately not yet
-documented anywhere, but it is fairly easy to understand most of it.
+File: cvs.info, Node: Keyword list, Next: Using keywords, Up: Keyword substitution
+
+Keyword List
+============
+
+ This is a list of the keywords:
+
+`$Author: tholo $'
+ The login name of the user who checked in the revision.
+
+`$Date: 2001/09/29 00:00:39 $'
+ The date and time (UTC) the revision was checked in.
+
+`$Header: /cvs/OpenBSD/src/gnu/usr.bin/cvs/doc/cvs.info-4,v 1.2 2001/09/29 00:00:39 tholo Exp $'
+ A standard header containing the full pathname of the RCS file,
+ the revision number, the date (UTC), the author, the state, and
+ the locker (if locked). Files will normally never be locked when
+ you use CVS.
+
+`$Id: cvs.info-4,v 1.2 2001/09/29 00:00:39 tholo Exp $'
+ Same as `$Header: /cvs/OpenBSD/src/gnu/usr.bin/cvs/doc/cvs.info-4,v 1.2 2001/09/29 00:00:39 tholo Exp $', except that the RCS filename is without a path.
+
+`$Name: $'
+ Tag name used to check out this file. The keyword is expanded
+ only if one checks out with an explicit tag name. For example,
+ when running the command `cvs co -r first', the keyword expands to
+ `Name: first'.
+
+`$Locker: $'
+ The login name of the user who locked the revision (empty if not
+ locked, which is the normal case unless `cvs admin -l' is in use).
+
+`$Log: cvs.info-4,v $
+`Revision 1.2 2001/09/29 00:00:39 tholo
+`Merge remaining local changes, correct build issues
+`'
+ The log message supplied during commit, preceded by a header
+ containing the RCS filename, the revision number, the author, and
+ the date (UTC). Existing log messages are _not_ replaced.
+ Instead, the new log message is inserted after `$Log: cvs.info-4,v $
+ Instead, the new log message is inserted after `Revision 1.2 2001/09/29 00:00:39 tholo
+ Instead, the new log message is inserted after `Merge remaining local changes, correct build issues
+ Instead, the new log message is inserted after `'. Each
+ new line is prefixed with the same string which precedes the
+ `$Log' keyword. For example, if the file contains
+
+ /* Here is what people have been up to:
+ *
+ * $Log: cvs.info-4,v $
+ * Revision 1.2 2001/09/29 00:00:39 tholo
+ * Merge remaining local changes, correct build issues
+ *
+ * Revision 1.1 1997/01/03 14:23:51 joe
+ * Add the superfrobnicate option
+ *
+ */
+
+ then additional lines which are added when expanding the `$Log'
+ keyword will be preceded by ` * '. Unlike previous versions of
+ CVS and RCS, the "comment leader" from the RCS file is not used.
+ The `$Log' keyword is useful for accumulating a complete change
+ log in a source file, but for several reasons it can be
+ problematic. *Note Log keyword::.
+
+`$RCSfile: cvs.info-4,v $'
+ The name of the RCS file without a path.
+
+`$Revision: 1.2 $'
+ The revision number assigned to the revision.
+
+`$Source: /cvs/OpenBSD/src/gnu/usr.bin/cvs/doc/cvs.info-4,v $'
+ The full pathname of the RCS file.
+
+`$State: Exp $'
+ The state assigned to the revision. States can be assigned with
+ `cvs admin -s'--see *Note admin options::.

-File: cvs.info, Node: Setting up, Prev: history file, Up: Administrative files
-
-Setting up the repository
-=========================
-
- When you install CVS for the first time, you should follow the
-instructions in the `INSTALL' file to set up the repository.
-
- If you want to set up another repository, the easiest way to get a
-reasonable set of working administrative files is to run the `cvsinit'
-shell script. It will set up an empty repository in the directory
-defined by the environment variable `$CVSROOT'. (`cvsinit' is careful
-to never overwrite any existing files in the repository, so no harm is
-done if you run `cvsinit' on an already set-up repository. In fact,
-running it on an already set-up repository is the best way to update
-the various scripts from the `contrib' directory.)
+File: cvs.info, Node: Using keywords, Next: Avoiding substitution, Prev: Keyword list, Up: Keyword substitution
+
+Using keywords
+==============
+
+ To include a keyword string you simply include the relevant text
+string, such as `$Id: cvs.info-4,v 1.2 2001/09/29 00:00:39 tholo Exp $', inside the file, and commit the file. CVS will
+automatically expand the string as part of the commit operation.
+
+ It is common to embed the `$Id: cvs.info-4,v 1.2 2001/09/29 00:00:39 tholo Exp $' string in the source files so that
+it gets passed through to generated files. For example, if you are
+managing computer program source code, you might include a variable
+which is initialized to contain that string. Or some C compilers may
+provide a `#pragma ident' directive. Or a document management system
+might provide a way to pass a string through to generated files.
+
+ The `ident' command (which is part of the RCS package) can be used
+to extract keywords and their values from a file. This can be handy
+for text files, but it is even more useful for extracting keywords from
+binary files.
+
+ $ ident samp.c
+ samp.c:
+ $Id: cvs.info-4,v 1.2 2001/09/29 00:00:39 tholo Exp $
+ $ gcc samp.c
+ $ ident a.out
+ a.out:
+ $Id: cvs.info-4,v 1.2 2001/09/29 00:00:39 tholo Exp $
+
+ SCCS is another popular revision control system. It has a command,
+`what', which is very similar to `ident' and used for the same purpose.
+Many sites without RCS have SCCS. Since `what' looks for the
+character sequence `@(#)' it is easy to include keywords that are
+detected by either command. Simply prefix the keyword with the magic
+SCCS phrase, like this:
+
+ static char *id="@(#) $Id: cvs.info-4,v 1.2 2001/09/29 00:00:39 tholo Exp $";

-File: cvs.info, Node: Environment variables, Next: Troubleshooting, Prev: Administrative files, Up: Top
-
-All environment variables which affect CVS
-******************************************
-
- This is a complete list of all environment variables that affect CVS.
-
-`$CVSIGNORE'
- A whitespace-separated list of file name patterns that CVS should
- ignore. *Note cvsignore::.
-
-`$CVSWRAPPERS'
- A whitespace-separated list of file name patterns that CVS should
- treat as wrappers. *Note Wrappers::.
-
-`$CVSREAD'
- If this is set, `checkout' and `update' will try hard to make the
- files in your working directory read-only. When this is not set,
- the default behavior is to permit modification of your working
- files.
-
-`$CVSROOT'
- Should contain the full pathname to the root of the CVS source
- repository (where the RCS history files are kept). This
- information must be available to CVS for most commands to execute;
- if `$CVSROOT' is not set, or if you wish to override it for one
- invocation, you can supply it on the command line: `cvs -d cvsroot
- cvs_command...' You may not need to set `$CVSROOT' if your CVS
- binary has the right path compiled in.
-
-`$EDITOR'
-`$CVSEDITOR'
- Specifies the program to use for recording log messages during
- commit. If not set, the default is `/usr/ucb/vi'. `$CVSEDITOR'
- overrides `$EDITOR'. `$CVSEDITOR' does not exist in CVS 1.3, but
- the next release will probably include it.
-
-`$PATH'
- If `$RCSBIN' is not set, and no path is compiled into CVS, it will
- use `$PATH' to try to find all programs it uses.
-
-`$RCSBIN'
- Specifies the full pathname of the location of RCS programs, such
- as co(1) and ci(1). If not set, a compiled-in value is used, or
- your `$PATH' is searched.
-
- CVS is a front-end to RCS. The following environment variables
-affect RCS:
-
-`$LOGNAME'
-`$USER'
- If set, they affect who RCS thinks you are. If you have trouble
- checking in files it might be because your login name differs from
- the setting of e.g. `$LOGNAME'.
-
-`$RCSINIT'
- Options prepended to the argument list, separated by spaces. A
- backslash escapes spaces within an option. The `$RCSINIT' options
- are prepended to the argument lists of most RCS commands.
-
-`$TMPDIR'
-`$TMP'
-`$TEMP'
- Name of the temporary directory. The environment variables are
- inspected in the order they appear above and the first value found
- is taken; if none of them are set, a host-dependent default is
- used, typically `/tmp'.
+File: cvs.info, Node: Avoiding substitution, Next: Substitution modes, Prev: Using keywords, Up: Keyword substitution
-
-File: cvs.info, Node: Troubleshooting, Next: Copying, Prev: Environment variables, Up: Top
+Avoiding substitution
+=====================
-Troubleshooting
-***************
+ Keyword substitution has its disadvantages. Sometimes you might
+want the literal text string `$Author: tholo $' to appear inside a file without
+CVS interpreting it as a keyword and expanding it into something like
+`$Author: tholo $'.
-* Menu:
+ There is unfortunately no way to selectively turn off keyword
+substitution. You can use `-ko' (*note Substitution modes::) to turn
+off keyword substitution entirely.
-* Magic branch numbers:: Magic branch numbers
+ In many cases you can avoid using keywords in the source, even
+though they appear in the final product. For example, the source for
+this manual contains `$@asis{}Author$' whenever the text `$Author: tholo $'
+should appear. In `nroff' and `troff' you can embed the null-character
+`\&' inside the keyword for a similar effect.

-File: cvs.info, Node: Magic branch numbers, Up: Troubleshooting
+File: cvs.info, Node: Substitution modes, Next: Log keyword, Prev: Avoiding substitution, Up: Keyword substitution
+
+Substitution modes
+==================
+
+ Each file has a stored default substitution mode, and each working
+directory copy of a file also has a substitution mode. The former is
+set by the `-k' option to `cvs add' and `cvs admin'; the latter is set
+by the `-k' or `-A' options to `cvs checkout' or `cvs update'. `cvs
+diff' also has a `-k' option. For some examples, see *Note Binary
+files::, and *Note Merging and keywords::.
+
+ The modes available are:
+
+`-kkv'
+ Generate keyword strings using the default form, e.g. `$Revision:
+ 5.7 $' for the `Revision' keyword.
+
+`-kkvl'
+ Like `-kkv', except that a locker's name is always inserted if the
+ given revision is currently locked. The locker's name is only
+ relevant if `cvs admin -l' is in use.
+
+`-kk'
+ Generate only keyword names in keyword strings; omit their values.
+ For example, for the `Revision' keyword, generate the string
+ `$Revision: 1.2 $' instead of `$Revision: 1.2 $'. This option is useful
+ to ignore differences due to keyword substitution when comparing
+ different revisions of a file (*note Merging and keywords::).
+
+`-ko'
+ Generate the old keyword string, present in the working file just
+ before it was checked in. For example, for the `Revision'
+ keyword, generate the string `$Revision: 1.2 $' instead of
+ `$Revision: 1.2 $' if that is how the string appeared when the
+ file was checked in.
+
+`-kb'
+ Like `-ko', but also inhibit conversion of line endings between
+ the canonical form in which they are stored in the repository
+ (linefeed only), and the form appropriate to the operating system
+ in use on the client. For systems, like unix, which use linefeed
+ only to terminate lines, this is the same as `-ko'. For more
+ information on binary files, see *Note Binary files::.
+
+`-kv'
+ Generate only keyword values for keyword strings. For example,
+ for the `Revision' keyword, generate the string `5.7' instead of
+ `$Revision: 1.2 $'. This can help generate files in programming
+ languages where it is hard to strip keyword delimiters like
+ `$Revision: 1.2 $' from a string. However, further keyword
+ substitution cannot be performed once the keyword names are
+ removed, so this option should be used with care.
+
+ One often would like to use `-kv' with `cvs export'--*note
+ export::. But be aware that doesn't handle an export containing
+ binary files correctly.
-Magic branch numbers
-====================
-
- Externally, branch numbers consist of an odd number of dot-separated
-decimal integers. *Note Revision numbers::. That is not the whole
-truth, however. For efficiency reasons CVS sometimes inserts an extra 0
-in the second rightmost position (1.2.3 becomes 1.2.0.3, 8.9.10.11.12
-becomes 8.9.10.11.0.12 and so on).
-
- CVS does a pretty good job at hiding these so called magic branches,
-but in at least four places the hiding is incomplete.
-
- * The magic branch can appear in the output from `cvs status' in
- vanilla CVS 1.3. This is fixed in CVS 1.3-s2.
+
+File: cvs.info, Node: Log keyword, Prev: Substitution modes, Up: Keyword substitution
+
+Problems with the $Log: cvs.info-4,v $
+Problems with the Revision 1.2 2001/09/29 00:00:39 tholo
+Problems with the Merge remaining local changes, correct build issues
+Problems with the keyword.
+================================
+
+ The `$Log: cvs.info-4,v $
+ The `Revision 1.2 2001/09/29 00:00:39 tholo
+ The `Merge remaining local changes, correct build issues
+ The `' keyword is somewhat controversial. As long as you are
+working on your development system the information is easily accessible
+even if you do not use the `$Log: cvs.info-4,v $
+even if you do not use the `Revision 1.2 2001/09/29 00:00:39 tholo
+even if you do not use the `Merge remaining local changes, correct build issues
+even if you do not use the `' keyword--just do a `cvs log'. Once
+you export the file the history information might be useless anyhow.
+
+ A more serious concern is that CVS is not good at handling `$Log: cvs.info-4,v $
+ A more serious concern is that CVS is not good at handling `Revision 1.2 2001/09/29 00:00:39 tholo
+ A more serious concern is that CVS is not good at handling `Merge remaining local changes, correct build issues
+ A more serious concern is that CVS is not good at handling `'
+entries when a branch is merged onto the main trunk. Conflicts often
+result from the merging operation.
+
+ People also tend to "fix" the log entries in the file (correcting
+spelling mistakes and maybe even factual errors). If that is done the
+information from `cvs log' will not be consistent with the information
+inside the file. This may or may not be a problem in real life.
+
+ It has been suggested that the `$Log: cvs.info-4,v $
+ It has been suggested that the `Revision 1.2 2001/09/29 00:00:39 tholo
+ It has been suggested that the `Merge remaining local changes, correct build issues
+ It has been suggested that the `' keyword should be inserted
+_last_ in the file, and not in the files header, if it is to be used at
+all. That way the long list of change messages will not interfere with
+everyday source file browsing.
- * The magic branch number appears in the output from `cvs log'.
- This is much harder to fix, since `cvs log' runs `rlog' (which is
- part of the RCS distribution), and modifying `rlog' to know about
- magic branches would probably break someone's habits (if they use
- branch 0 for their own purposes).
+
+File: cvs.info, Node: Tracking sources, Next: Builds, Prev: Keyword substitution, Up: Top
- * You cannot specify a symbolic branch name to `cvs log'.
+Tracking third-party sources
+****************************
- * You cannot specify a symbolic branch name to `cvs admin'.
+ If you modify a program to better fit your site, you probably want
+to include your modifications when the next release of the program
+arrives. CVS can help you with this task.
- You can use the `admin' command to reassign a symbolic name to a
-branch the way RCS expects it to be. If `R4patches' is assigned to the
-branch 1.4.2 (magic branch number 1.4.0.2) in file `numbers.c' you can
-do this:
+ In the terminology used in CVS, the supplier of the program is
+called a "vendor". The unmodified distribution from the vendor is
+checked in on its own branch, the "vendor branch". CVS reserves branch
+1.1.1 for this use.
- $ cvs admin -NR4patches:1.4.2 numbers.c
+ When you modify the source and commit it, your revision will end up
+on the main trunk. When a new release is made by the vendor, you
+commit it on the vendor branch and copy the modifications onto the main
+trunk.
- It only works if at least one revision is already committed on the
-branch. Be very careful so that you do not assign the tag to the wrong
-number. (There is no way to see how the tag was assigned yesterday).
+ Use the `import' command to create and update the vendor branch.
+When you import a new file, the vendor branch is made the `head'
+revision, so anyone that checks out a copy of the file gets that
+revision. When a local modification is committed it is placed on the
+main trunk, and made the `head' revision.
-
-File: cvs.info, Node: Copying, Next: Index, Prev: Troubleshooting, Up: Top
+* Menu:
-GNU GENERAL PUBLIC LICENSE
-**************************
+* First import:: Importing for the first time
+* Update imports:: Updating with the import command
+* Reverting local changes:: Reverting to the latest vendor release
+* Binary files in imports:: Binary files require special handling
+* Keywords in imports:: Keyword substitution might be undesirable
+* Multiple vendor branches:: What if you get sources from several places?
diff --git a/gnu/usr.bin/cvs/doc/cvs.info-5 b/gnu/usr.bin/cvs/doc/cvs.info-5
index f07f839f52b..371dd4ce8e8 100644
--- a/gnu/usr.bin/cvs/doc/cvs.info-5
+++ b/gnu/usr.bin/cvs/doc/cvs.info-5
@@ -1,5 +1,8 @@
-This is Info file cvs.info, produced by Makeinfo-1.55 from the input
-file ./cvs.texinfo.
+This is cvs.info, produced by makeinfo version 4.0 from cvs.texinfo.
+
+START-INFO-DIR-ENTRY
+* CVS: (cvs). Concurrent Versions System
+END-INFO-DIR-ENTRY
Copyright (C) 1992, 1993 Signum Support AB Copyright (C) 1993, 1994
Free Software Foundation, Inc.
@@ -10,375 +13,1180 @@ preserved on all copies.
Permission is granted to copy and distribute modified versions of
this manual under the conditions for verbatim copying, provided also
-that the section entitled "GNU General Public License" is included
-exactly as in the original, and provided that the entire resulting
-derived work is distributed under the terms of a permission notice
-identical to this one.
+that the entire resulting derived work is distributed under the terms
+of a permission notice identical to this one.
Permission is granted to copy and distribute translations of this
manual into another language, under the above conditions for modified
-versions, except that the section entitled "GNU General Public License"
-and this permission notice may be included in translations approved by
-the Free Software Foundation instead of in the original English.
+versions, except that this permission notice may be stated in a
+translation approved by the Free Software Foundation.
+
+
+File: cvs.info, Node: First import, Next: Update imports, Up: Tracking sources
+
+Importing for the first time
+============================
+
+ Use the `import' command to check in the sources for the first time.
+When you use the `import' command to track third-party sources, the
+"vendor tag" and "release tags" are useful. The "vendor tag" is a
+symbolic name for the branch (which is always 1.1.1, unless you use the
+`-b BRANCH' flag--see *Note Multiple vendor branches::.). The "release
+tags" are symbolic names for a particular release, such as `FSF_0_04'.
+
+ Note that `import' does _not_ change the directory in which you
+invoke it. In particular, it does not set up that directory as a CVS
+working directory; if you want to work with the sources import them
+first and then check them out into a different directory (*note Getting
+the source::).
+
+ Suppose you have the sources to a program called `wdiff' in a
+directory `wdiff-0.04', and are going to make private modifications
+that you want to be able to use even when new releases are made in the
+future. You start by importing the source to your repository:
+
+ $ cd wdiff-0.04
+ $ cvs import -m "Import of FSF v. 0.04" fsf/wdiff FSF_DIST WDIFF_0_04
+
+ The vendor tag is named `FSF_DIST' in the above example, and the
+only release tag assigned is `WDIFF_0_04'.
+
+
+File: cvs.info, Node: Update imports, Next: Reverting local changes, Prev: First import, Up: Tracking sources
+
+Updating with the import command
+================================
+
+ When a new release of the source arrives, you import it into the
+repository with the same `import' command that you used to set up the
+repository in the first place. The only difference is that you specify
+a different release tag this time.
+
+ $ tar xfz wdiff-0.05.tar.gz
+ $ cd wdiff-0.05
+ $ cvs import -m "Import of FSF v. 0.05" fsf/wdiff FSF_DIST WDIFF_0_05
+
+ For files that have not been modified locally, the newly created
+revision becomes the head revision. If you have made local changes,
+`import' will warn you that you must merge the changes into the main
+trunk, and tell you to use `checkout -j' to do so.
+
+ $ cvs checkout -jFSF_DIST:yesterday -jFSF_DIST wdiff
+
+The above command will check out the latest revision of `wdiff',
+merging the changes made on the vendor branch `FSF_DIST' since
+yesterday into the working copy. If any conflicts arise during the
+merge they should be resolved in the normal way (*note Conflicts
+example::). Then, the modified files may be committed.
+
+ Using a date, as suggested above, assumes that you do not import
+more than one release of a product per day. If you do, you can always
+use something like this instead:
+
+ $ cvs checkout -jWDIFF_0_04 -jWDIFF_0_05 wdiff
+
+In this case, the two above commands are equivalent.
+
+
+File: cvs.info, Node: Reverting local changes, Next: Binary files in imports, Prev: Update imports, Up: Tracking sources
+
+Reverting to the latest vendor release
+======================================
+
+ You can also revert local changes completely and return to the
+latest vendor release by changing the `head' revision back to the
+vendor branch on all files. For example, if you have a checked-out
+copy of the sources in `~/work.d/wdiff', and you want to revert to the
+vendor's version for all the files in that directory, you would type:
+
+ $ cd ~/work.d/wdiff
+ $ cvs admin -bWDIFF .
+
+You must specify the `-bWDIFF' without any space after the `-b'. *Note
+admin options::.
+
+
+File: cvs.info, Node: Binary files in imports, Next: Keywords in imports, Prev: Reverting local changes, Up: Tracking sources
+
+How to handle binary files with cvs import
+==========================================
+
+ Use the `-k' wrapper option to tell import which files are binary.
+*Note Wrappers::.
+
+
+File: cvs.info, Node: Keywords in imports, Next: Multiple vendor branches, Prev: Binary files in imports, Up: Tracking sources
+
+How to handle keyword substitution with cvs import
+==================================================
+
+ The sources which you are importing may contain keywords (*note
+Keyword substitution::). For example, the vendor may use CVS or some
+other system which uses similar keyword expansion syntax. If you just
+import the files in the default fashion, then the keyword expansions
+supplied by the vendor will be replaced by keyword expansions supplied
+by your own copy of CVS. It may be more convenient to maintain the
+expansions supplied by the vendor, so that this information can supply
+information about the sources that you imported from the vendor.
+
+ To maintain the keyword expansions supplied by the vendor, supply
+the `-ko' option to `cvs import' the first time you import the file.
+This will turn off keyword expansion for that file entirely, so if you
+want to be more selective you'll have to think about what you want and
+use the `-k' option to `cvs update' or `cvs admin' as appropriate.
+
+
+File: cvs.info, Node: Multiple vendor branches, Prev: Keywords in imports, Up: Tracking sources
+
+Multiple vendor branches
+========================
+
+ All the examples so far assume that there is only one vendor from
+which you are getting sources. In some situations you might get
+sources from a variety of places. For example, suppose that you are
+dealing with a project where many different people and teams are
+modifying the software. There are a variety of ways to handle this,
+but in some cases you have a bunch of source trees lying around and
+what you want to do more than anything else is just to all put them in
+CVS so that you at least have them in one place.
+
+ For handling situations in which there may be more than one vendor,
+you may specify the `-b' option to `cvs import'. It takes as an
+argument the vendor branch to import to. The default is `-b 1.1.1'.
+
+ For example, suppose that there are two teams, the red team and the
+blue team, that are sending you sources. You want to import the red
+team's efforts to branch 1.1.1 and use the vendor tag RED. You want to
+import the blue team's efforts to branch 1.1.3 and use the vendor tag
+BLUE. So the commands you might use are:
+
+ $ cvs import dir RED RED_1-0
+ $ cvs import -b 1.1.3 dir BLUE BLUE_1-5
+
+ Note that if your vendor tag does not match your `-b' option, CVS
+will not detect this case! For example,
+
+ $ cvs import -b 1.1.3 dir RED RED_1-0
+
+Be careful; this kind of mismatch is sure to sow confusion or worse. I
+can't think of a useful purpose for the ability to specify a mismatch
+here, but if you discover such a use, don't. CVS is likely to make this
+an error in some future release.
+
+
+File: cvs.info, Node: Builds, Next: Special Files, Prev: Tracking sources, Up: Top
+
+How your build system interacts with CVS
+****************************************
+
+ As mentioned in the introduction, CVS does not contain software for
+building your software from source code. This section describes how
+various aspects of your build system might interact with CVS.
+
+ One common question, especially from people who are accustomed to
+RCS, is how to make their build get an up to date copy of the sources.
+The answer to this with CVS is two-fold. First of all, since CVS
+itself can recurse through directories, there is no need to modify your
+`Makefile' (or whatever configuration file your build tool uses) to
+make sure each file is up to date. Instead, just use two commands,
+first `cvs -q update' and then `make' or whatever the command is to
+invoke your build tool. Secondly, you do not necessarily _want_ to get
+a copy of a change someone else made until you have finished your own
+work. One suggested approach is to first update your sources, then
+implement, build and test the change you were thinking of, and then
+commit your sources (updating first if necessary). By periodically (in
+between changes, using the approach just described) updating your
+entire tree, you ensure that your sources are sufficiently up to date.
+
+ One common need is to record which versions of which source files
+went into a particular build. This kind of functionality is sometimes
+called "bill of materials" or something similar. The best way to do
+this with CVS is to use the `tag' command to record which versions went
+into a given build (*note Tags::).
+
+ Using CVS in the most straightforward manner possible, each
+developer will have a copy of the entire source tree which is used in a
+particular build. If the source tree is small, or if developers are
+geographically dispersed, this is the preferred solution. In fact one
+approach for larger projects is to break a project down into smaller
+separately-compiled subsystems, and arrange a way of releasing them
+internally so that each developer need check out only those subsystems
+which are they are actively working on.
+
+ Another approach is to set up a structure which allows developers to
+have their own copies of some files, and for other files to access
+source files from a central location. Many people have come up with
+some such a system using features such as the symbolic link feature
+found in many operating systems, or the `VPATH' feature found in many
+versions of `make'. One build tool which is designed to help with this
+kind of thing is Odin (see
+`ftp://ftp.cs.colorado.edu/pub/distribs/odin').

-File: cvs.info, Node: Index, Prev: Copying, Up: Top
+File: cvs.info, Node: Special Files, Next: CVS commands, Prev: Builds, Up: Top
+
+Special Files
+*************
-Index
-*****
+ In normal circumstances, CVS works only with regular files. Every
+file in a project is assumed to be persistent; it must be possible to
+open, read and close them; and so on. CVS also ignores file
+permissions and ownerships, leaving such issues to be resolved by the
+developer at installation time. In other words, it is not possible to
+"check in" a device into a repository; if the device file cannot be
+opened, CVS will refuse to handle it. Files also lose their ownerships
+and permissions during repository transactions.
+
+
+File: cvs.info, Node: CVS commands, Next: Invoking CVS, Prev: Special Files, Up: Top
- If you cannot find what you are looking for here write to
-<ceder@signum.se> so that an entry can be added to the next release of
-this manual.
+Guide to CVS commands
+*********************
+
+ This appendix describes the overall structure of CVS commands, and
+describes some commands in detail (others are described elsewhere; for
+a quick reference to CVS commands, *note Invoking CVS::).
* Menu:
-* -j (merging branches): Merging a branch.
-* -k (RCS kflags): Substitution modes.
-* .bashrc: Repository.
-* .cshrc: Repository.
-* .cvsrc file: ~/.cvsrc.
-* .profile: Repository.
-* .tcshrc: Repository.
-* /usr/local/cvsroot: Repository.
-* <<<<<<<: Conflicts example.
-* =======: Conflicts example.
-* >>>>>>>: Conflicts example.
-* A sample session: A sample session.
-* About this manual: Preface.
-* Add (subcommand): add.
-* Add options: add options.
-* Adding a tag: Tags.
-* Adding files: Adding files.
-* Admin (subcommand): admin.
-* Administrative files (intro): Intro administrative files.
-* Administrative files (reference): Administrative files.
-* Administrative files, editing them: Intro administrative files.
-* ALL in commitinfo: commitinfo.
-* Author keyword: Keyword list.
-* Automatically ignored files: cvsignore.
-* Avoiding editor invocation: Common options.
-* Binary files (inhibit keyword expansion): admin examples.
-* Branch merge example: Merging a branch.
-* Branch number: Revision numbers.
-* Branch numbers: Creating a branch.
-* Branch, creating a: Creating a branch.
-* Branch, vendor-: Tracking sources.
-* Branches: Branches.
-* Branches motivation: Branches motivation.
-* Branches, copying changes between: Merging.
-* Branches, sticky: Sticky tags.
-* Bringing a file up to date: Updating a file.
-* Bugs, known in this manual: BUGS.
-* Bugs, reporting (manual): BUGS.
-* Changes, copying between branches: Merging.
-* Changing a log message: admin options.
-* Checkin program: modules.
-* Checking commits: commitinfo.
-* Checking out source: Getting the source.
-* Checkout (subcommand): checkout.
-* Checkout program: modules.
-* Checkout, example: Getting the source.
-* Cleaning up: Cleaning up.
-* Client/Server Operation: Remote repositories.
-* Co (subcommand): checkout.
-* Command reference: Invoking CVS.
-* Command structure: Structure.
-* Comment leader: admin examples.
-* Commit (subcommand): commit.
-* Commit files: commit files.
-* Commit, when to: When to commit.
-* Commitinfo: commitinfo.
-* Committing changes: Committing your changes.
-* Common options: Common options.
-* Common syntax of info files: syntax.
-* Conflict markers: Conflicts example.
-* Conflict resolution: Conflicts example.
-* Conflicts (merge example): Conflicts example.
-* Contributors (CVS program): What is CVS?.
-* Contributors (manual): Credits.
-* Copying changes: Merging.
-* Correcting a log message: admin options.
-* Creating a branch: Creating a branch.
-* Creating a project: Starting a new project.
-* Creating a repository: Setting up.
-* Credits (CVS program): What is CVS?.
-* Credits (manual): Credits.
-* CVS command structure: Structure.
-* CVS FAQ: What is CVS?.
-* CVS FTP site: What is CVS?.
-* CVS, history of: What is CVS?.
-* CVS, introduction to: What is CVS?.
-* CVSEDITOR: Environment variables.
-* CVSEDITOR, environment variable: Committing your changes.
-* CVSIGNORE: Environment variables.
-* Cvsignore, global: cvsignore.
-* CVSREAD: Environment variables.
-* CVSREAD, overriding: Global options.
-* CVSROOT: Environment variables.
-* cvsroot: Repository.
-* CVSROOT (file): Administrative files.
-* CVSROOT, environment variable: Repository.
-* CVSROOT, module name: Intro administrative files.
-* CVSROOT, multiple repositories: Multiple repositories.
-* CVSROOT, overriding: Global options.
-* cvswrappers (admin file): Wrappers.
-* CVSWRAPPERS, environment variable: Wrappers.
-* Date keyword: Keyword list.
-* Dates: Common options.
-* Decimal revision number: Revision numbers.
-* DEFAULT in commitinfo: commitinfo.
-* DEFAULT in editinfo: editinfo.
-* Defining a module: Defining the module.
-* Defining modules (intro): Intro administrative files.
-* Defining modules (reference manual): modules.
-* Deleting files: Removing files.
-* Deleting revisions: admin options.
-* Deleting sticky tags: Sticky tags.
-* Descending directories: Recursive behavior.
-* Diff: Viewing differences.
-* Diff (subcommand): diff.
-* Differences, merging: Merging two revisions.
-* Directories, moving: Moving directories.
-* Directory, descending: Recursive behavior.
-* Disjoint repositories: Multiple repositories.
-* Distributing log messages: loginfo.
-* driver.c (merge example): Conflicts example.
-* Editinfo: editinfo.
-* Editing administrative files: Intro administrative files.
-* Editing the modules file: Defining the module.
-* EDITOR: Environment variables.
-* Editor, avoiding invocation of: Common options.
-* EDITOR, environment variable: Committing your changes.
-* EDITOR, overriding: Global options.
-* Editor, specifying per module: editinfo.
-* emerge: Conflicts example.
-* Environment variables: Environment variables.
-* Errors, reporting (manual): BUGS.
-* Example of a work-session: A sample session.
-* Example of merge: Conflicts example.
-* Example, branch merge: Merging a branch.
-* Export (subcommand): export.
-* FAQ: What is CVS?.
-* Fetching source: Getting the source.
-* File locking: Multiple developers.
-* File permissions: File permissions.
-* File status: File status.
-* Files, moving: Moving files.
-* Files, reference manual: Administrative files.
-* Fixes to CVS: What is CVS?.
-* Fixing a log message: admin options.
-* Forcing a tag match: Common options.
-* Form for log message: rcsinfo.
-* Format of CVS commands: Structure.
-* Four states of a file: File status.
-* FTP site: What is CVS?.
-* Getting started: A sample session.
-* Getting the source: Getting the source.
-* Global cvsignore: cvsignore.
-* Global options: Global options.
-* Group: File permissions.
-* Header keyword: Keyword list.
-* History (subcommand): history.
-* History file: history file.
-* History files: User modules.
-* History of CVS: What is CVS?.
-* Id keyword: Keyword list.
-* Ident (shell command): Using keywords.
-* Identifying files: Keyword substitution.
-* Ignored files: cvsignore.
-* Ignoring files: cvsignore.
-* Import (subcommand): import.
-* Importing files: From files.
-* Importing modules: First import.
-* Index: Index.
-* Info files (syntax): syntax.
-* Informing others: Informing others.
-* Inhibiting keyword expansion: admin examples.
-* Introduction to CVS: What is CVS?.
-* Invoking CVS: Invoking CVS.
-* Join: Merging a branch.
-* Keyword expansion: Keyword substitution.
-* Keyword expansion, inhibiting: admin examples.
-* Keyword substitution: Keyword substitution.
-* Kflag: Substitution modes.
-* Known bugs in this manual: BUGS.
-* Layout of repository: Repository.
-* Left-hand options: Global options.
-* Linear development: Revision numbers.
-* List, mailing list: What is CVS?.
-* Locally modified: File status.
-* Locker keyword: Keyword list.
-* Locking files: Multiple developers.
-* Log (subcommand): log.
-* Log information, saving: history file.
-* Log keyword: Keyword list.
-* Log keyword, selecting comment leader: admin examples.
-* Log message entry: Committing your changes.
-* Log message template: rcsinfo.
-* Log message, correcting: admin options.
-* Log messages: loginfo.
-* Log messages, editing: editinfo.
-* Loginfo: loginfo.
-* LOGNAME: Environment variables.
-* Mail, automatic mail on commit: Informing others.
-* Mailing list: What is CVS?.
-* Mailing log messages: loginfo.
-* Main trunk (intro): Revision numbers.
-* Main trunk and branches: Branches.
-* Many repositories: Multiple repositories.
-* Markers, conflict: Conflicts example.
-* Merge, an example: Conflicts example.
-* Merge, branch example: Merging a branch.
-* Merging: Merging.
-* Merging a branch: Merging a branch.
-* Merging a file: Updating a file.
-* Merging two revisions: Merging two revisions.
-* mkmodules: Intro administrative files.
-* Modifications, copying between branches: Merging.
-* Module status: modules.
-* Module, defining: Defining the module.
-* Modules (admin file): modules.
-* Modules (intro): Basic concepts.
-* Modules file: Intro administrative files.
-* Modules file, changing: Defining the module.
-* Motivation for branches: Branches motivation.
-* Moving directories: Moving directories.
-* Moving files: Moving files.
-* Multiple developers: Multiple developers.
-* Multiple repositories: Multiple repositories.
-* Name, symbolic (tag): Tags.
-* Needing merge: File status.
-* Needing update: File status.
-* Nroff (selecting comment leader): admin examples.
-* Number, branch: Revision numbers.
-* Number, revision-: Revision numbers.
-* option defaults: ~/.cvsrc.
-* Options, global: Global options.
-* Outdating revisions: admin options.
-* Overlap: Updating a file.
-* Overriding CVSREAD: Global options.
-* Overriding CVSROOT: Global options.
-* Overriding EDITOR: Global options.
-* Overriding RCSBIN: Global options.
-* Parallel repositories: Multiple repositories.
-* Patches to CVS: What is CVS?.
-* PATH: Environment variables.
-* Per-module editor: editinfo.
-* Policy: When to commit.
-* Precommit checking: commitinfo.
-* Preface: Preface.
-* RCS history files: User modules.
-* RCS keywords: Keyword list.
-* RCS revision numbers: Tags.
-* RCS, CVS uses RCS: User modules.
-* RCSBIN: Environment variables.
-* RCSBIN, overriding: Global options.
-* RCSfile keyword: Keyword list.
-* Rcsinfo: rcsinfo.
-* RCSINIT: Environment variables.
-* Rdiff (subcommand): rdiff.
-* Read-only files: Global options.
-* Read-only mode: Global options.
-* Recursive (directory descending): Recursive behavior.
-* Reference manual (files): Administrative files.
-* Reference manual for variables: Environment variables.
-* Reference, commands: Invoking CVS.
-* Release (subcommand): release.
-* Releases, revisions and versions: Versions revisions releases.
-* Releasing your working copy: Cleaning up.
-* Remote repositories: Remote repositories.
-* Remove (subcommand): remove.
-* Removing a change: Merging two revisions.
-* Removing files: Removing files.
-* Removing your working copy: Cleaning up.
-* Renaming directories: Moving directories.
-* Renaming files: Moving files.
-* Replacing a log message: admin options.
-* Reporting bugs (manual): BUGS.
-* Repositories, multiple: Multiple repositories.
-* Repositories, remote: Remote repositories.
-* Repository (intro): Basic concepts.
-* Repository, example: Repository.
-* Repository, setting up: Setting up.
-* Repository, user parts: User modules.
-* Resetting sticky tags: Sticky tags.
-* Resolving a conflict: Conflicts example.
-* Retrieving an old revision using tags: Tags.
-* Revision keyword: Keyword list.
-* Revision management: Revision management.
-* Revision numbers: Revision numbers.
-* Revision tree: Revision numbers.
-* Revision tree, making branches: Branches.
-* Revisions, merging differences between: Merging two revisions.
-* Revisions, versions and releases: Versions revisions releases.
-* Right-hand options: Common options.
-* Rtag (subcommand): rtag.
-* rtag, creating a branch using: Creating a branch.
-* Saving space: admin options.
-* Security: File permissions.
-* setgid: File permissions.
-* Setting up a repository: Setting up.
-* setuid: File permissions.
-* Signum Support: Preface.
-* Source keyword: Keyword list.
-* Source, getting CVS source: What is CVS?.
-* Source, getting from CVS: Getting the source.
-* Specifying dates: Common options.
-* Spreading information: Informing others.
-* Starting a project with CVS: Starting a new project.
-* State keyword: Keyword list.
-* Status (subcommand): status.
-* Status of a file: File status.
-* Status of a module: modules.
-* Sticky tags: Sticky tags.
-* Sticky tags, resetting: Sticky tags.
-* Storing log messages: loginfo.
-* Structure: Structure.
-* Subdirectories: Recursive behavior.
-* Support, getting CVS support: Preface.
-* Symbolic name (tag): Tags.
-* Syntax of info files: syntax.
-* Tag (subcommand): tag.
-* Tag program: modules.
-* tag, command, introduction: Tags.
-* tag, example: Tags.
-* Tag, retrieving old revisions: Tags.
-* Tag, symbolic name: Tags.
-* Tags: Tags.
-* Tags, sticky: Sticky tags.
-* tc, Trivial Compiler (example): A sample session.
-* Team of developers: Multiple developers.
-* TEMP: Environment variables.
-* Template for log message: rcsinfo.
-* Third-party sources: Tracking sources.
-* Time: Common options.
-* TMP: Environment variables.
-* TMPDIR: Environment variables.
-* Trace: Global options.
-* Tracking sources: Tracking sources.
-* Trivial Compiler (example): A sample session.
-* Typical repository: Repository.
-* Undoing a change: Merging two revisions.
-* Up-to-date: File status.
-* Update (subcommand): update.
-* Update program: modules.
-* update, introduction: Updating a file.
-* Updating a file: Updating a file.
-* USER: Environment variables.
-* User modules: User modules.
-* Vendor: Tracking sources.
-* Vendor branch: Tracking sources.
-* Versions, revisions and releases: Versions revisions releases.
-* Viewing differences: Viewing differences.
-* Wdiff (import example): First import.
-* What (shell command): Using keywords.
-* What branches are good for: Branches motivation.
-* What is CVS?: What is CVS?.
-* When to commit: When to commit.
-* Work-session, example of: A sample session.
-* Working copy: Multiple developers.
-* Working copy, removing: Cleaning up.
-* Wrappers: Wrappers.
+* Structure:: Overall structure of CVS commands
+* Exit status:: Indicating CVS's success or failure
+* ~/.cvsrc:: Default options with the ~/.csvrc file
+* Global options:: Options you give to the left of cvs_command
+* Common options:: Options you give to the right of cvs_command
+* admin:: Administration
+* checkout:: Checkout sources for editing
+* commit:: Check files into the repository
+* diff:: Show differences between revisions
+* export:: Export sources from CVS, similar to checkout
+* history:: Show status of files and users
+* import:: Import sources into CVS, using vendor branches
+* log:: Show log messages for files
+* rdiff:: 'patch' format diffs between releases
+* release:: Indicate that a directory is no longer in use
+* update:: Bring work tree in sync with repository
+
+
+File: cvs.info, Node: Structure, Next: Exit status, Up: CVS commands
+
+Overall structure of CVS commands
+=================================
+
+ The overall format of all CVS commands is:
+
+ cvs [ cvs_options ] cvs_command [ command_options ] [ command_args ]
+
+`cvs'
+ The name of the CVS program.
+
+`cvs_options'
+ Some options that affect all sub-commands of CVS. These are
+ described below.
+
+`cvs_command'
+ One of several different sub-commands. Some of the commands have
+ aliases that can be used instead; those aliases are noted in the
+ reference manual for that command. There are only two situations
+ where you may omit `cvs_command': `cvs -H' elicits a list of
+ available commands, and `cvs -v' displays version information on
+ CVS itself.
+
+`command_options'
+ Options that are specific for the command.
+
+`command_args'
+ Arguments to the commands.
+
+ There is unfortunately some confusion between `cvs_options' and
+`command_options'. `-l', when given as a `cvs_option', only affects
+some of the commands. When it is given as a `command_option' is has a
+different meaning, and is accepted by more commands. In other words,
+do not take the above categorization too seriously. Look at the
+documentation instead.
+
+
+File: cvs.info, Node: Exit status, Next: ~/.cvsrc, Prev: Structure, Up: CVS commands
+
+CVS's exit status
+=================
+
+ CVS can indicate to the calling environment whether it succeeded or
+failed by setting its "exit status". The exact way of testing the exit
+status will vary from one operating system to another. For example in
+a unix shell script the `$?' variable will be 0 if the last command
+returned a successful exit status, or greater than 0 if the exit status
+indicated failure.
+
+ If CVS is successful, it returns a successful status; if there is an
+error, it prints an error message and returns a failure status. The
+one exception to this is the `cvs diff' command. It will return a
+successful status if it found no differences, or a failure status if
+there were differences or if there was an error. Because this behavior
+provides no good way to detect errors, in the future it is possible that
+`cvs diff' will be changed to behave like the other CVS commands.
+
+
+File: cvs.info, Node: ~/.cvsrc, Next: Global options, Prev: Exit status, Up: CVS commands
+
+Default options and the ~/.cvsrc file
+=====================================
+
+ There are some `command_options' that are used so often that you
+might have set up an alias or some other means to make sure you always
+specify that option. One example (the one that drove the
+implementation of the `.cvsrc' support, actually) is that many people
+find the default output of the `diff' command to be very hard to read,
+and that either context diffs or unidiffs are much easier to understand.
+
+ The `~/.cvsrc' file is a way that you can add default options to
+`cvs_commands' within cvs, instead of relying on aliases or other shell
+scripts.
+
+ The format of the `~/.cvsrc' file is simple. The file is searched
+for a line that begins with the same name as the `cvs_command' being
+executed. If a match is found, then the remainder of the line is split
+up (at whitespace characters) into separate options and added to the
+command arguments _before_ any options from the command line.
+
+ If a command has two names (e.g., `checkout' and `co'), the official
+name, not necessarily the one used on the command line, will be used to
+match against the file. So if this is the contents of the user's
+`~/.cvsrc' file:
+
+ log -N
+ diff -u
+ update -P
+ checkout -P
+
+the command `cvs checkout foo' would have the `-P' option added to the
+arguments, as well as `cvs co foo'.
+
+ With the example file above, the output from `cvs diff foobar' will
+be in unidiff format. `cvs diff -c foobar' will provide context diffs,
+as usual. Getting "old" format diffs would be slightly more
+complicated, because `diff' doesn't have an option to specify use of
+the "old" format, so you would need `cvs -f diff foobar'.
+
+ In place of the command name you can use `cvs' to specify global
+options (*note Global options::). For example the following line in
+`.cvsrc'
+
+ cvs -z6
+
+ causes CVS to use compression level 6.
+
+
+File: cvs.info, Node: Global options, Next: Common options, Prev: ~/.cvsrc, Up: CVS commands
+
+Global options
+==============
+
+ The available `cvs_options' (that are given to the left of
+`cvs_command') are:
+
+`--allow-root=ROOTDIR'
+ Specify legal CVSROOT directory. See *Note Password
+ authentication server::.
+
+`-a'
+ Authenticate all communication between the client and the server.
+ Only has an effect on the CVS client. As of this writing, this is
+ only implemented when using a GSSAPI connection (*note GSSAPI
+ authenticated::). Authentication prevents certain sorts of attacks
+ involving hijacking the active TCP connection. Enabling
+ authentication does not enable encryption.
+
+`-b BINDIR'
+ In CVS 1.9.18 and older, this specified that RCS programs are in
+ the BINDIR directory. Current versions of CVS do not run RCS
+ programs; for compatibility this option is accepted, but it does
+ nothing.
+
+`-T TEMPDIR'
+ Use TEMPDIR as the directory where temporary files are located.
+ Overrides the setting of the `$TMPDIR' environment variable and
+ any precompiled directory. This parameter should be specified as
+ an absolute pathname.
+
+`-d CVS_ROOT_DIRECTORY'
+ Use CVS_ROOT_DIRECTORY as the root directory pathname of the
+ repository. Overrides the setting of the `$CVSROOT' environment
+ variable. *Note Repository::.
+
+`-e EDITOR'
+ Use EDITOR to enter revision log information. Overrides the
+ setting of the `$CVSEDITOR' and `$EDITOR' environment variables.
+ For more information, see *Note Committing your changes::.
+
+`-f'
+ Do not read the `~/.cvsrc' file. This option is most often used
+ because of the non-orthogonality of the CVS option set. For
+ example, the `cvs log' option `-N' (turn off display of tag names)
+ does not have a corresponding option to turn the display on. So
+ if you have `-N' in the `~/.cvsrc' entry for `log', you may need
+ to use `-f' to show the tag names.
+
+`-H'
+`--help'
+ Display usage information about the specified `cvs_command' (but
+ do not actually execute the command). If you don't specify a
+ command name, `cvs -H' displays overall help for CVS, including a
+ list of other help options.
+
+`-l'
+ Do not log the `cvs_command' in the command history (but execute it
+ anyway). *Note history::, for information on command history.
+
+`-n'
+ Do not change any files. Attempt to execute the `cvs_command',
+ but only to issue reports; do not remove, update, or merge any
+ existing files, or create any new files.
+
+ Note that CVS will not necessarily produce exactly the same output
+ as without `-n'. In some cases the output will be the same, but
+ in other cases CVS will skip some of the processing that would
+ have been required to produce the exact same output.
+
+`-Q'
+ Cause the command to be really quiet; the command will only
+ generate output for serious problems.
+
+`-q'
+ Cause the command to be somewhat quiet; informational messages,
+ such as reports of recursion through subdirectories, are
+ suppressed.
+
+`-r'
+ Make new working files read-only. Same effect as if the
+ `$CVSREAD' environment variable is set (*note Environment
+ variables::). The default is to make working files writable,
+ unless watches are on (*note Watches::).
+
+`-s VARIABLE=VALUE'
+ Set a user variable (*note Variables::).
+
+`-t'
+ Trace program execution; display messages showing the steps of CVS
+ activity. Particularly useful with `-n' to explore the potential
+ impact of an unfamiliar command.
+
+`-v'
+
+`--version'
+ Display version and copyright information for CVS.
+
+`-w'
+ Make new working files read-write. Overrides the setting of the
+ `$CVSREAD' environment variable. Files are created read-write by
+ default, unless `$CVSREAD' is set or `-r' is given.
+
+`-x'
+ Encrypt all communication between the client and the server. Only
+ has an effect on the CVS client. As of this writing, this is only
+ implemented when using a GSSAPI connection (*note GSSAPI
+ authenticated::) or a Kerberos connection (*note Kerberos
+ authenticated::). Enabling encryption implies that message
+ traffic is also authenticated. Encryption support is not
+ available by default; it must be enabled using a special configure
+ option, `--enable-encryption', when you build CVS.
+
+`-z GZIP-LEVEL'
+ Set the compression level. Valid levels are 1 (high speed, low
+ compression) to 9 (low speed, high compression), or 0 to disable
+ compression (the default). Only has an effect on the CVS client.
+
+
+File: cvs.info, Node: Common options, Next: admin, Prev: Global options, Up: CVS commands
+
+Common command options
+======================
+
+ This section describes the `command_options' that are available
+across several CVS commands. These options are always given to the
+right of `cvs_command'. Not all commands support all of these options;
+each option is only supported for commands where it makes sense.
+However, when a command has one of these options you can almost always
+count on the same behavior of the option as in other commands. (Other
+command options, which are listed with the individual commands, may have
+different behavior from one CVS command to the other).
+
+ *Warning:* the `history' command is an exception; it supports many
+options that conflict even with these standard options.
+
+`-D DATE_SPEC'
+ Use the most recent revision no later than DATE_SPEC. DATE_SPEC
+ is a single argument, a date description specifying a date in the
+ past.
+
+ The specification is "sticky" when you use it to make a private
+ copy of a source file; that is, when you get a working file using
+ `-D', CVS records the date you specified, so that further updates
+ in the same directory will use the same date (for more information
+ on sticky tags/dates, *note Sticky tags::).
+
+ `-D' is available with the `checkout', `diff', `export', `history',
+ `rdiff', `rtag', and `update' commands. (The `history' command
+ uses this option in a slightly different way; *note history
+ options::).
+
+ A wide variety of date formats are supported by CVS. The most
+ standard ones are ISO8601 (from the International Standards
+ Organization) and the Internet e-mail standard (specified in
+ RFC822 as amended by RFC1123).
+
+ ISO8601 dates have many variants but a few examples are:
+
+ 1972-09-24
+ 1972-09-24 20:05
+
+ There are a lot more ISO8601 date formats, and CVS accepts many of
+ them, but you probably don't want to hear the _whole_ long story
+ :-).
+
+ In addition to the dates allowed in Internet e-mail itself, CVS
+ also allows some of the fields to be omitted. For example:
+
+ 24 Sep 1972 20:05
+ 24 Sep
+
+ The date is interpreted as being in the local timezone, unless a
+ specific timezone is specified.
+
+ These two date formats are preferred. However, CVS currently
+ accepts a wide variety of other date formats. They are
+ intentionally not documented here in any detail, and future
+ versions of CVS might not accept all of them.
+
+ One such format is `MONTH/DAY/YEAR'. This may confuse people who
+ are accustomed to having the month and day in the other order;
+ `1/4/96' is January 4, not April 1.
+
+ Remember to quote the argument to the `-D' flag so that your shell
+ doesn't interpret spaces as argument separators. A command using
+ the `-D' flag can look like this:
+
+ $ cvs diff -D "1 hour ago" cvs.texinfo
+
+`-f'
+ When you specify a particular date or tag to CVS commands, they
+ normally ignore files that do not contain the tag (or did not
+ exist prior to the date) that you specified. Use the `-f' option
+ if you want files retrieved even when there is no match for the
+ tag or date. (The most recent revision of the file will be used).
+
+ Note that even with `-f', a tag that you specify must exist (that
+ is, in some file, not necessary in every file). This is so that
+ CVS will continue to give an error if you mistype a tag name.
+
+ `-f' is available with these commands: `annotate', `checkout',
+ `export', `rdiff', `rtag', and `update'.
+
+ *Warning:* The `commit' and `remove' commands also have a `-f'
+ option, but it has a different behavior for those commands. See
+ *Note commit options::, and *Note Removing files::.
+
+`-k KFLAG'
+ Alter the default processing of keywords. *Note Keyword
+ substitution::, for the meaning of KFLAG. Your KFLAG
+ specification is "sticky" when you use it to create a private copy
+ of a source file; that is, when you use this option with the
+ `checkout' or `update' commands, CVS associates your selected
+ KFLAG with the file, and continues to use it with future update
+ commands on the same file until you specify otherwise.
+
+ The `-k' option is available with the `add', `checkout', `diff',
+ `import' and `update' commands.
+
+`-l'
+ Local; run only in current working directory, rather than
+ recursing through subdirectories.
+
+ *Warning:* this is not the same as the overall `cvs -l' option,
+ which you can specify to the left of a cvs command!
+
+ Available with the following commands: `annotate', `checkout',
+ `commit', `diff', `edit', `editors', `export', `log', `rdiff',
+ `remove', `rtag', `status', `tag', `unedit', `update', `watch',
+ and `watchers'.
+
+`-m MESSAGE'
+ Use MESSAGE as log information, instead of invoking an editor.
+
+ Available with the following commands: `add', `commit' and
+ `import'.
+
+`-n'
+ Do not run any checkout/commit/tag program. (A program can be
+ specified to run on each of these activities, in the modules
+ database (*note modules::); this option bypasses it).
+
+ *Warning:* this is not the same as the overall `cvs -n' option,
+ which you can specify to the left of a cvs command!
+
+ Available with the `checkout', `commit', `export', and `rtag'
+ commands.
+
+`-P'
+ Prune empty directories. See *Note Removing directories::.
+
+`-p'
+ Pipe the files retrieved from the repository to standard output,
+ rather than writing them in the current directory. Available with
+ the `checkout' and `update' commands.
+
+`-R'
+ Process directories recursively. This is on by default.
+
+ Available with the following commands: `annotate', `checkout',
+ `commit', `diff', `edit', `editors', `export', `rdiff', `remove',
+ `rtag', `status', `tag', `unedit', `update', `watch', and
+ `watchers'.
+
+`-r TAG'
+ Use the revision specified by the TAG argument instead of the
+ default "head" revision. As well as arbitrary tags defined with
+ the `tag' or `rtag' command, two special tags are always
+ available: `HEAD' refers to the most recent version available in
+ the repository, and `BASE' refers to the revision you last checked
+ out into the current working directory.
+
+ The tag specification is sticky when you use this with `checkout'
+ or `update' to make your own copy of a file: CVS remembers the tag
+ and continues to use it on future update commands, until you
+ specify otherwise (for more information on sticky tags/dates,
+ *note Sticky tags::).
+
+ The tag can be either a symbolic or numeric tag, as described in
+ *Note Tags::, or the name of a branch, as described in *Note
+ Branching and merging::.
+
+ Specifying the `-q' global option along with the `-r' command
+ option is often useful, to suppress the warning messages when the
+ RCS file does not contain the specified tag.
+
+ *Warning:* this is not the same as the overall `cvs -r' option,
+ which you can specify to the left of a CVS command!
+
+ `-r' is available with the `checkout', `commit', `diff',
+ `history', `export', `rdiff', `rtag', and `update' commands.
+
+`-W'
+ Specify file names that should be filtered. You can use this
+ option repeatedly. The spec can be a file name pattern of the
+ same type that you can specify in the `.cvswrappers' file.
+ Available with the following commands: `import', and `update'.
+
+
+File: cvs.info, Node: admin, Next: checkout, Prev: Common options, Up: CVS commands
+
+admin--Administration
+=====================
+
+ * Requires: repository, working directory.
+
+ * Changes: repository.
+
+ * Synonym: rcs
+
+ This is the CVS interface to assorted administrative facilities.
+Some of them have questionable usefulness for CVS but exist for
+historical purposes. Some of the questionable options are likely to
+disappear in the future. This command _does_ work recursively, so
+extreme care should be used.
+
+ On unix, if there is a group named `cvsadmin', only members of that
+group can run `cvs admin' (except for the `cvs admin -k' command, which
+can be run by anybody). This group should exist on the server, or any
+system running the non-client/server CVS. To disallow `cvs admin' for
+all users, create a group with no users in it. On NT, the `cvsadmin'
+feature does not exist and all users can run `cvs admin'.
+
+* Menu:
+
+* admin options:: admin options
+
+
+File: cvs.info, Node: admin options, Up: admin
+
+admin options
+-------------
+
+ Some of these options have questionable usefulness for CVS but exist
+for historical purposes. Some even make it impossible to use CVS until
+you undo the effect!
+
+`-AOLDFILE'
+ Might not work together with CVS. Append the access list of
+ OLDFILE to the access list of the RCS file.
+
+`-aLOGINS'
+ Might not work together with CVS. Append the login names
+ appearing in the comma-separated list LOGINS to the access list of
+ the RCS file.
+
+`-b[REV]'
+ Set the default branch to REV. In CVS, you normally do not
+ manipulate default branches; sticky tags (*note Sticky tags::) are
+ a better way to decide which branch you want to work on. There is
+ one reason to run `cvs admin -b': to revert to the vendor's
+ version when using vendor branches (*note Reverting local
+ changes::). There can be no space between `-b' and its argument.
+
+`-cSTRING'
+ Sets the comment leader to STRING. The comment leader is not used
+ by current versions of CVS or RCS 5.7. Therefore, you can almost
+ surely not worry about it. *Note Keyword substitution::.
+
+`-e[LOGINS]'
+ Might not work together with CVS. Erase the login names appearing
+ in the comma-separated list LOGINS from the access list of the RCS
+ file. If LOGINS is omitted, erase the entire access list. There
+ can be no space between `-e' and its argument.
+
+`-I'
+ Run interactively, even if the standard input is not a terminal.
+ This option does not work with the client/server CVS and is likely
+ to disappear in a future release of CVS.
+
+`-i'
+ Useless with CVS. This creates and initializes a new RCS file,
+ without depositing a revision. With CVS, add files with the `cvs
+ add' command (*note Adding files::).
+
+`-kSUBST'
+ Set the default keyword substitution to SUBST. *Note Keyword
+ substitution::. Giving an explicit `-k' option to `cvs update',
+ `cvs export', or `cvs checkout' overrides this default.
+
+`-l[REV]'
+ Lock the revision with number REV. If a branch is given, lock the
+ latest revision on that branch. If REV is omitted, lock the
+ latest revision on the default branch. There can be no space
+ between `-l' and its argument.
+
+ This can be used in conjunction with the `rcslock.pl' script in
+ the `contrib' directory of the CVS source distribution to provide
+ reserved checkouts (where only one user can be editing a given
+ file at a time). See the comments in that file for details (and
+ see the `README' file in that directory for disclaimers about the
+ unsupported nature of contrib). According to comments in that
+ file, locking must set to strict (which is the default).
+
+`-L'
+ Set locking to strict. Strict locking means that the owner of an
+ RCS file is not exempt from locking for checkin. For use with
+ CVS, strict locking must be set; see the discussion under the `-l'
+ option above.
+
+`-mREV:MSG'
+ Replace the log message of revision REV with MSG.
+
+`-NNAME[:[REV]]'
+ Act like `-n', except override any previous assignment of NAME.
+ For use with magic branches, see *Note Magic branch numbers::.
+
+`-nNAME[:[REV]]'
+ Associate the symbolic name NAME with the branch or revision REV.
+ It is normally better to use `cvs tag' or `cvs rtag' instead.
+ Delete the symbolic name if both `:' and REV are omitted;
+ otherwise, print an error message if NAME is already associated
+ with another number. If REV is symbolic, it is expanded before
+ association. A REV consisting of a branch number followed by a
+ `.' stands for the current latest revision in the branch. A `:'
+ with an empty REV stands for the current latest revision on the
+ default branch, normally the trunk. For example, `cvs admin
+ -nNAME:' associates NAME with the current latest revision of all
+ the RCS files; this contrasts with `cvs admin -nNAME:$' which
+ associates NAME with the revision numbers extracted from keyword
+ strings in the corresponding working files.
+
+`-oRANGE'
+ Deletes ("outdates") the revisions given by RANGE.
+
+ Note that this command can be quite dangerous unless you know
+ _exactly_ what you are doing (for example see the warnings below
+ about how the REV1:REV2 syntax is confusing).
+
+ If you are short on disc this option might help you. But think
+ twice before using it--there is no way short of restoring the
+ latest backup to undo this command! If you delete different
+ revisions than you planned, either due to carelessness or (heaven
+ forbid) a CVS bug, there is no opportunity to correct the error
+ before the revisions are deleted. It probably would be a good
+ idea to experiment on a copy of the repository first.
+
+ Specify RANGE in one of the following ways:
+
+ `REV1::REV2'
+ Collapse all revisions between rev1 and rev2, so that CVS
+ only stores the differences associated with going from rev1
+ to rev2, not intermediate steps. For example, after `-o
+ 1.3::1.5' one can retrieve revision 1.3, revision 1.5, or the
+ differences to get from 1.3 to 1.5, but not the revision 1.4,
+ or the differences between 1.3 and 1.4. Other examples: `-o
+ 1.3::1.4' and `-o 1.3::1.3' have no effect, because there are
+ no intermediate revisions to remove.
+
+ `::REV'
+ Collapse revisions between the beginning of the branch
+ containing REV and REV itself. The branchpoint and REV are
+ left intact. For example, `-o ::1.3.2.6' deletes revision
+ 1.3.2.1, revision 1.3.2.5, and everything in between, but
+ leaves 1.3 and 1.3.2.6 intact.
+
+ `REV::'
+ Collapse revisions between REV and the end of the branch
+ containing REV. Revision REV is left intact but the head
+ revision is deleted.
+
+ `REV'
+ Delete the revision REV. For example, `-o 1.3' is equivalent
+ to `-o 1.2::1.4'.
+
+ `REV1:REV2'
+ Delete the revisions from REV1 to REV2, inclusive, on the
+ same branch. One will not be able to retrieve REV1 or REV2
+ or any of the revisions in between. For example, the command
+ `cvs admin -oR_1_01:R_1_02 .' is rarely useful. It means to
+ delete revisions up to, and including, the tag R_1_02. But
+ beware! If there are files that have not changed between
+ R_1_02 and R_1_03 the file will have _the same_ numerical
+ revision number assigned to the tags R_1_02 and R_1_03. So
+ not only will it be impossible to retrieve R_1_02; R_1_03
+ will also have to be restored from the tapes! In most cases
+ you want to specify REV1::REV2 instead.
+
+ `:REV'
+ Delete revisions from the beginning of the branch containing
+ REV up to and including REV.
+
+ `REV:'
+ Delete revisions from revision REV, including REV itself, to
+ the end of the branch containing REV.
+
+ None of the revisions to be deleted may have branches or locks.
+
+ If any of the revisions to be deleted have symbolic names, and one
+ specifies one of the `::' syntaxes, then CVS will give an error
+ and not delete any revisions. If you really want to delete both
+ the symbolic names and the revisions, first delete the symbolic
+ names with `cvs tag -d', then run `cvs admin -o'. If one
+ specifies the non-`::' syntaxes, then CVS will delete the
+ revisions but leave the symbolic names pointing to nonexistent
+ revisions. This behavior is preserved for compatibility with
+ previous versions of CVS, but because it isn't very useful, in the
+ future it may change to be like the `::' case.
+
+ Due to the way CVS handles branches REV cannot be specified
+ symbolically if it is a branch. *Note Magic branch numbers::, for
+ an explanation.
+
+ Make sure that no-one has checked out a copy of the revision you
+ outdate. Strange things will happen if he starts to edit it and
+ tries to check it back in. For this reason, this option is not a
+ good way to take back a bogus commit; commit a new revision
+ undoing the bogus change instead (*note Merging two revisions::).
+
+`-q'
+ Run quietly; do not print diagnostics.
+
+`-sSTATE[:REV]'
+ Useful with CVS. Set the state attribute of the revision REV to
+ STATE. If REV is a branch number, assume the latest revision on
+ that branch. If REV is omitted, assume the latest revision on the
+ default branch. Any identifier is acceptable for STATE. A useful
+ set of states is `Exp' (for experimental), `Stab' (for stable),
+ and `Rel' (for released). By default, the state of a new revision
+ is set to `Exp' when it is created. The state is visible in the
+ output from CVS LOG (*note log::), and in the `$Log: cvs.info-5,v $
+ output from CVS LOG (*note log::), and in the `Revision 1.2 2001/09/29 00:00:39 tholo
+ output from CVS LOG (*note log::), and in the `Merge remaining local changes, correct build issues
+ output from CVS LOG (*note log::), and in the `' and
+ `$State: Exp $' keywords (*note Keyword substitution::). Note that CVS
+ uses the `dead' state for its own purposes; to take a file to or
+ from the `dead' state use commands like `cvs remove' and `cvs
+ add', not `cvs admin -s'.
+
+`-t[FILE]'
+ Useful with CVS. Write descriptive text from the contents of the
+ named FILE into the RCS file, deleting the existing text. The
+ FILE pathname may not begin with `-'. The descriptive text can be
+ seen in the output from `cvs log' (*note log::). There can be no
+ space between `-t' and its argument.
+
+ If FILE is omitted, obtain the text from standard input,
+ terminated by end-of-file or by a line containing `.' by itself.
+ Prompt for the text if interaction is possible; see `-I'.
+
+`-t-STRING'
+ Similar to `-tFILE'. Write descriptive text from the STRING into
+ the RCS file, deleting the existing text. There can be no space
+ between `-t' and its argument.
+
+`-U'
+ Set locking to non-strict. Non-strict locking means that the
+ owner of a file need not lock a revision for checkin. For use
+ with CVS, strict locking must be set; see the discussion under the
+ `-l' option above.
+
+`-u[REV]'
+ See the option `-l' above, for a discussion of using this option
+ with CVS. Unlock the revision with number REV. If a branch is
+ given, unlock the latest revision on that branch. If REV is
+ omitted, remove the latest lock held by the caller. Normally,
+ only the locker of a revision may unlock it; somebody else
+ unlocking a revision breaks the lock. This causes the original
+ locker to be sent a `commit' notification (*note Getting
+ Notified::). There can be no space between `-u' and its argument.
+
+`-VN'
+ In previous versions of CVS, this option meant to write an RCS
+ file which would be acceptable to RCS version N, but it is now
+ obsolete and specifying it will produce an error.
+
+`-xSUFFIXES'
+ In previous versions of CVS, this was documented as a way of
+ specifying the names of the RCS files. However, CVS has always
+ required that the RCS files used by CVS end in `,v', so this
+ option has never done anything useful.
+
+
+File: cvs.info, Node: checkout, Next: commit, Prev: admin, Up: CVS commands
+
+checkout--Check out sources for editing
+=======================================
+
+ * Synopsis: checkout [options] modules...
+
+ * Requires: repository.
+
+ * Changes: working directory.
+
+ * Synonyms: co, get
+
+ Create or update a working directory containing copies of the source
+files specified by MODULES. You must execute `checkout' before using
+most of the other CVS commands, since most of them operate on your
+working directory.
+
+ The MODULES are either symbolic names for some collection of source
+directories and files, or paths to directories or files in the
+repository. The symbolic names are defined in the `modules' file.
+*Note modules::.
+
+ Depending on the modules you specify, `checkout' may recursively
+create directories and populate them with the appropriate source files.
+You can then edit these source files at any time (regardless of
+whether other software developers are editing their own copies of the
+sources); update them to include new changes applied by others to the
+source repository; or commit your work as a permanent change to the
+source repository.
+
+ Note that `checkout' is used to create directories. The top-level
+directory created is always added to the directory where `checkout' is
+invoked, and usually has the same name as the specified module. In the
+case of a module alias, the created sub-directory may have a different
+name, but you can be sure that it will be a sub-directory, and that
+`checkout' will show the relative path leading to each file as it is
+extracted into your private work area (unless you specify the `-Q'
+global option).
+
+ The files created by `checkout' are created read-write, unless the
+`-r' option to CVS (*note Global options::) is specified, the `CVSREAD'
+environment variable is specified (*note Environment variables::), or a
+watch is in effect for that file (*note Watches::).
+
+ Note that running `checkout' on a directory that was already built
+by a prior `checkout' is also permitted. This is similar to specifying
+the `-d' option to the `update' command in the sense that new
+directories that have been created in the repository will appear in
+your work area. However, `checkout' takes a module name whereas
+`update' takes a directory name. Also to use `checkout' this way it
+must be run from the top level directory (where you originally ran
+`checkout' from), so before you run `checkout' to update an existing
+directory, don't forget to change your directory to the top level
+directory.
+
+ For the output produced by the `checkout' command see *Note update
+output::.
+
+* Menu:
+
+* checkout options:: checkout options
+* checkout examples:: checkout examples
+
+
+File: cvs.info, Node: checkout options, Next: checkout examples, Up: checkout
+
+checkout options
+----------------
+
+ These standard options are supported by `checkout' (*note Common
+options::, for a complete description of them):
+
+`-D DATE'
+ Use the most recent revision no later than DATE. This option is
+ sticky, and implies `-P'. See *Note Sticky tags::, for more
+ information on sticky tags/dates.
+
+`-f'
+ Only useful with the `-D DATE' or `-r TAG' flags. If no matching
+ revision is found, retrieve the most recent revision (instead of
+ ignoring the file).
+
+`-k KFLAG'
+ Process keywords according to KFLAG. See *Note Keyword
+ substitution::. This option is sticky; future updates of this
+ file in this working directory will use the same KFLAG. The
+ `status' command can be viewed to see the sticky options. See
+ *Note Invoking CVS::, for more information on the `status' command.
+
+`-l'
+ Local; run only in current working directory.
+
+`-n'
+ Do not run any checkout program (as specified with the `-o' option
+ in the modules file; *note modules::).
+
+`-P'
+ Prune empty directories. See *Note Moving directories::.
+
+`-p'
+ Pipe files to the standard output.
+
+`-R'
+ Checkout directories recursively. This option is on by default.
+
+`-r TAG'
+ Use revision TAG. This option is sticky, and implies `-P'. See
+ *Note Sticky tags::, for more information on sticky tags/dates.
+
+ In addition to those, you can use these special command options with
+`checkout':
+
+`-A'
+ Reset any sticky tags, dates, or `-k' options. See *Note Sticky
+ tags::, for more information on sticky tags/dates.
+
+`-c'
+ Copy the module file, sorted, to the standard output, instead of
+ creating or modifying any files or directories in your working
+ directory.
+
+`-d DIR'
+ Create a directory called DIR for the working files, instead of
+ using the module name. In general, using this flag is equivalent
+ to using `mkdir DIR; cd DIR' followed by the checkout command
+ without the `-d' flag.
+
+ There is an important exception, however. It is very convenient
+ when checking out a single item to have the output appear in a
+ directory that doesn't contain empty intermediate directories. In
+ this case _only_, CVS tries to "shorten" pathnames to avoid those
+ empty directories.
+
+ For example, given a module `foo' that contains the file `bar.c',
+ the command `cvs co -d dir foo' will create directory `dir' and
+ place `bar.c' inside. Similarly, given a module `bar' which has
+ subdirectory `baz' wherein there is a file `quux.c', the command
+ `cvs -d dir co bar/baz' will create directory `dir' and place
+ `quux.c' inside.
+
+ Using the `-N' flag will defeat this behavior. Given the same
+ module definitions above, `cvs co -N -d dir foo' will create
+ directories `dir/foo' and place `bar.c' inside, while `cvs co -N -d
+ dir bar/baz' will create directories `dir/bar/baz' and place
+ `quux.c' inside.
+
+`-j TAG'
+ With two `-j' options, merge changes from the revision specified
+ with the first `-j' option to the revision specified with the
+ second `j' option, into the working directory.
+
+ With one `-j' option, merge changes from the ancestor revision to
+ the revision specified with the `-j' option, into the working
+ directory. The ancestor revision is the common ancestor of the
+ revision which the working directory is based on, and the revision
+ specified in the `-j' option.
+
+ In addition, each -j option can contain an optional date
+ specification which, when used with branches, can limit the chosen
+ revision to one within a specific date. An optional date is
+ specified by adding a colon (:) to the tag:
+ `-jSYMBOLIC_TAG:DATE_SPECIFIER'.
+
+ *Note Branching and merging::.
+
+`-N'
+ Only useful together with `-d DIR'. With this option, CVS will
+ not "shorten" module paths in your working directory when you
+ check out a single module. See the `-d' flag for examples and a
+ discussion.
+
+`-s'
+ Like `-c', but include the status of all modules, and sort it by
+ the status string. *Note modules::, for info about the `-s'
+ option that is used inside the modules file to set the module
+ status.
+
+
+File: cvs.info, Node: checkout examples, Prev: checkout options, Up: checkout
+
+checkout examples
+-----------------
+
+ Get a copy of the module `tc':
+
+ $ cvs checkout tc
+
+ Get a copy of the module `tc' as it looked one day ago:
+
+ $ cvs checkout -D yesterday tc
+
+
+File: cvs.info, Node: commit, Next: diff, Prev: checkout, Up: CVS commands
+
+commit--Check files into the repository
+=======================================
+
+ * Synopsis: commit [-lnRf] [-m 'log_message' | -F file] [-r
+ revision] [files...]
+
+ * Requires: working directory, repository.
+
+ * Changes: repository.
+
+ * Synonym: ci
+
+ Use `commit' when you want to incorporate changes from your working
+source files into the source repository.
+
+ If you don't specify particular files to commit, all of the files in
+your working current directory are examined. `commit' is careful to
+change in the repository only those files that you have really changed.
+By default (or if you explicitly specify the `-R' option), files in
+subdirectories are also examined and committed if they have changed;
+you can use the `-l' option to limit `commit' to the current directory
+only.
+
+ `commit' verifies that the selected files are up to date with the
+current revisions in the source repository; it will notify you, and
+exit without committing, if any of the specified files must be made
+current first with `update' (*note update::). `commit' does not call
+the `update' command for you, but rather leaves that for you to do when
+the time is right.
+
+ When all is well, an editor is invoked to allow you to enter a log
+message that will be written to one or more logging programs (*note
+modules::, and *note loginfo::) and placed in the RCS file inside the
+repository. This log message can be retrieved with the `log' command;
+see *Note log::. You can specify the log message on the command line
+with the `-m MESSAGE' option, and thus avoid the editor invocation, or
+use the `-F FILE' option to specify that the argument file contains the
+log message.
+
+* Menu:
+* commit options:: commit options
+* commit examples:: commit examples
diff --git a/gnu/usr.bin/cvs/doc/cvs.info-7 b/gnu/usr.bin/cvs/doc/cvs.info-7
index d3ea494bcf8..9f375050b04 100644
--- a/gnu/usr.bin/cvs/doc/cvs.info-7
+++ b/gnu/usr.bin/cvs/doc/cvs.info-7
@@ -1,5 +1,8 @@
-This is Info file cvs.info, produced by Makeinfo-1.64 from the input
-file ../../work/ccvs/doc/cvs.texinfo.
+This is cvs.info, produced by makeinfo version 4.0 from cvs.texinfo.
+
+START-INFO-DIR-ENTRY
+* CVS: (cvs). Concurrent Versions System
+END-INFO-DIR-ENTRY
Copyright (C) 1992, 1993 Signum Support AB Copyright (C) 1993, 1994
Free Software Foundation, Inc.
@@ -10,826 +13,1493 @@ preserved on all copies.
Permission is granted to copy and distribute modified versions of
this manual under the conditions for verbatim copying, provided also
-that the section entitled "GNU General Public License" is included
-exactly as in the original, and provided that the entire resulting
-derived work is distributed under the terms of a permission notice
-identical to this one.
+that the entire resulting derived work is distributed under the terms
+of a permission notice identical to this one.
Permission is granted to copy and distribute translations of this
manual into another language, under the above conditions for modified
-versions, except that the section entitled "GNU General Public License"
-and this permission notice may be included in translations approved by
-the Free Software Foundation instead of in the original English.
+versions, except that this permission notice may be stated in a
+translation approved by the Free Software Foundation.

-File: cvs.info, Node: Copying, Next: Index, Prev: Troubleshooting, Up: Top
+File: cvs.info, Node: Invoking CVS, Next: Administrative files, Prev: CVS commands, Up: Top
-GNU GENERAL PUBLIC LICENSE
-**************************
+Quick reference to CVS commands
+*******************************
- Version 2, June 1991
+ This appendix describes how to invoke CVS, with references to where
+each command or feature is described in detail. For other references
+run the `cvs --help' command, or see *Note Index::.
- Copyright (C) 1989, 1991 Free Software Foundation, Inc.
- 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
-
- Everyone is permitted to copy and distribute verbatim copies
- of this license document, but changing it is not allowed.
+ A CVS command looks like:
-Preamble
-========
+ cvs [ GLOBAL_OPTIONS ] COMMAND [ COMMAND_OPTIONS ] [ COMMAND_ARGS ]
- The licenses for most software are designed to take away your
-freedom to share and change it. By contrast, the GNU General Public
-License is intended to guarantee your freedom to share and change free
-software--to make sure the software is free for all its users. This
-General Public License applies to most of the Free Software
-Foundation's software and to any other program whose authors commit to
-using it. (Some other Free Software Foundation software is covered by
-the GNU Library General Public License instead.) You can apply it to
-your programs, too.
-
- When we speak of free software, we are referring to freedom, not
-price. Our General Public Licenses are designed to make sure that you
-have the freedom to distribute copies of free software (and charge for
-this service if you wish), that you receive source code or can get it
-if you want it, that you can change the software or use pieces of it in
-new free programs; and that you know you can do these things.
-
- To protect your rights, we need to make restrictions that forbid
-anyone to deny you these rights or to ask you to surrender the rights.
-These restrictions translate to certain responsibilities for you if you
-distribute copies of the software, or if you modify it.
-
- For example, if you distribute copies of such a program, whether
-gratis or for a fee, you must give the recipients all the rights that
-you have. You must make sure that they, too, receive or can get the
-source code. And you must show them these terms so they know their
-rights.
-
- We protect your rights with two steps: (1) copyright the software,
-and (2) offer you this license which gives you legal permission to copy,
-distribute and/or modify the software.
-
- Also, for each author's protection and ours, we want to make certain
-that everyone understands that there is no warranty for this free
-software. If the software is modified by someone else and passed on, we
-want its recipients to know that what they have is not the original, so
-that any problems introduced by others will not reflect on the original
-authors' reputations.
-
- Finally, any free program is threatened constantly by software
-patents. We wish to avoid the danger that redistributors of a free
-program will individually obtain patent licenses, in effect making the
-program proprietary. To prevent this, we have made it clear that any
-patent must be licensed for everyone's free use or not licensed at all.
-
- The precise terms and conditions for copying, distribution and
-modification follow.
-
- TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
-
- 0. This License applies to any program or other work which contains a
- notice placed by the copyright holder saying it may be distributed
- under the terms of this General Public License. The "Program",
- below, refers to any such program or work, and a "work based on
- the Program" means either the Program or any derivative work under
- copyright law: that is to say, a work containing the Program or a
- portion of it, either verbatim or with modifications and/or
- translated into another language. (Hereinafter, translation is
- included without limitation in the term "modification".) Each
- licensee is addressed as "you".
-
- Activities other than copying, distribution and modification are
- not covered by this License; they are outside its scope. The act
- of running the Program is not restricted, and the output from the
- Program is covered only if its contents constitute a work based on
- the Program (independent of having been made by running the
- Program). Whether that is true depends on what the Program does.
-
- 1. You may copy and distribute verbatim copies of the Program's
- source code as you receive it, in any medium, provided that you
- conspicuously and appropriately publish on each copy an appropriate
- copyright notice and disclaimer of warranty; keep intact all the
- notices that refer to this License and to the absence of any
- warranty; and give any other recipients of the Program a copy of
- this License along with the Program.
-
- You may charge a fee for the physical act of transferring a copy,
- and you may at your option offer warranty protection in exchange
- for a fee.
-
- 2. You may modify your copy or copies of the Program or any portion
- of it, thus forming a work based on the Program, and copy and
- distribute such modifications or work under the terms of Section 1
- above, provided that you also meet all of these conditions:
-
- a. You must cause the modified files to carry prominent notices
- stating that you changed the files and the date of any change.
-
- b. You must cause any work that you distribute or publish, that
- in whole or in part contains or is derived from the Program
- or any part thereof, to be licensed as a whole at no charge
- to all third parties under the terms of this License.
-
- c. If the modified program normally reads commands interactively
- when run, you must cause it, when started running for such
- interactive use in the most ordinary way, to print or display
- an announcement including an appropriate copyright notice and
- a notice that there is no warranty (or else, saying that you
- provide a warranty) and that users may redistribute the
- program under these conditions, and telling the user how to
- view a copy of this License. (Exception: if the Program
- itself is interactive but does not normally print such an
- announcement, your work based on the Program is not required
- to print an announcement.)
-
- These requirements apply to the modified work as a whole. If
- identifiable sections of that work are not derived from the
- Program, and can be reasonably considered independent and separate
- works in themselves, then this License, and its terms, do not
- apply to those sections when you distribute them as separate
- works. But when you distribute the same sections as part of a
- whole which is a work based on the Program, the distribution of
- the whole must be on the terms of this License, whose permissions
- for other licensees extend to the entire whole, and thus to each
- and every part regardless of who wrote it.
-
- Thus, it is not the intent of this section to claim rights or
- contest your rights to work written entirely by you; rather, the
- intent is to exercise the right to control the distribution of
- derivative or collective works based on the Program.
-
- In addition, mere aggregation of another work not based on the
- Program with the Program (or with a work based on the Program) on
- a volume of a storage or distribution medium does not bring the
- other work under the scope of this License.
-
- 3. You may copy and distribute the Program (or a work based on it,
- under Section 2) in object code or executable form under the terms
- of Sections 1 and 2 above provided that you also do one of the
- following:
-
- a. Accompany it with the complete corresponding machine-readable
- source code, which must be distributed under the terms of
- Sections 1 and 2 above on a medium customarily used for
- software interchange; or,
-
- b. Accompany it with a written offer, valid for at least three
- years, to give any third party, for a charge no more than your
- cost of physically performing source distribution, a complete
- machine-readable copy of the corresponding source code, to be
- distributed under the terms of Sections 1 and 2 above on a
- medium customarily used for software interchange; or,
-
- c. Accompany it with the information you received as to the offer
- to distribute corresponding source code. (This alternative is
- allowed only for noncommercial distribution and only if you
- received the program in object code or executable form with
- such an offer, in accord with Subsection b above.)
-
- The source code for a work means the preferred form of the work for
- making modifications to it. For an executable work, complete
- source code means all the source code for all modules it contains,
- plus any associated interface definition files, plus the scripts
- used to control compilation and installation of the executable.
- However, as a special exception, the source code distributed need
- not include anything that is normally distributed (in either
- source or binary form) with the major components (compiler,
- kernel, and so on) of the operating system on which the executable
- runs, unless that component itself accompanies the executable.
-
- If distribution of executable or object code is made by offering
- access to copy from a designated place, then offering equivalent
- access to copy the source code from the same place counts as
- distribution of the source code, even though third parties are not
- compelled to copy the source along with the object code.
-
- 4. You may not copy, modify, sublicense, or distribute the Program
- except as expressly provided under this License. Any attempt
- otherwise to copy, modify, sublicense or distribute the Program is
- void, and will automatically terminate your rights under this
- License. However, parties who have received copies, or rights,
- from you under this License will not have their licenses
- terminated so long as such parties remain in full compliance.
-
- 5. You are not required to accept this License, since you have not
- signed it. However, nothing else grants you permission to modify
- or distribute the Program or its derivative works. These actions
- are prohibited by law if you do not accept this License.
- Therefore, by modifying or distributing the Program (or any work
- based on the Program), you indicate your acceptance of this
- License to do so, and all its terms and conditions for copying,
- distributing or modifying the Program or works based on it.
-
- 6. Each time you redistribute the Program (or any work based on the
- Program), the recipient automatically receives a license from the
- original licensor to copy, distribute or modify the Program
- subject to these terms and conditions. You may not impose any
- further restrictions on the recipients' exercise of the rights
- granted herein. You are not responsible for enforcing compliance
- by third parties to this License.
-
- 7. If, as a consequence of a court judgment or allegation of patent
- infringement or for any other reason (not limited to patent
- issues), conditions are imposed on you (whether by court order,
- agreement or otherwise) that contradict the conditions of this
- License, they do not excuse you from the conditions of this
- License. If you cannot distribute so as to satisfy simultaneously
- your obligations under this License and any other pertinent
- obligations, then as a consequence you may not distribute the
- Program at all. For example, if a patent license would not permit
- royalty-free redistribution of the Program by all those who
- receive copies directly or indirectly through you, then the only
- way you could satisfy both it and this License would be to refrain
- entirely from distribution of the Program.
-
- If any portion of this section is held invalid or unenforceable
- under any particular circumstance, the balance of the section is
- intended to apply and the section as a whole is intended to apply
- in other circumstances.
-
- It is not the purpose of this section to induce you to infringe any
- patents or other property right claims or to contest validity of
- any such claims; this section has the sole purpose of protecting
- the integrity of the free software distribution system, which is
- implemented by public license practices. Many people have made
- generous contributions to the wide range of software distributed
- through that system in reliance on consistent application of that
- system; it is up to the author/donor to decide if he or she is
- willing to distribute software through any other system and a
- licensee cannot impose that choice.
-
- This section is intended to make thoroughly clear what is believed
- to be a consequence of the rest of this License.
-
- 8. If the distribution and/or use of the Program is restricted in
- certain countries either by patents or by copyrighted interfaces,
- the original copyright holder who places the Program under this
- License may add an explicit geographical distribution limitation
- excluding those countries, so that distribution is permitted only
- in or among countries not thus excluded. In such case, this
- License incorporates the limitation as if written in the body of
- this License.
-
- 9. The Free Software Foundation may publish revised and/or new
- versions of the General Public License from time to time. Such
- new versions will be similar in spirit to the present version, but
- may differ in detail to address new problems or concerns.
-
- Each version is given a distinguishing version number. If the
- Program specifies a version number of this License which applies
- to it and "any later version", you have the option of following
- the terms and conditions either of that version or of any later
- version published by the Free Software Foundation. If the Program
- does not specify a version number of this License, you may choose
- any version ever published by the Free Software Foundation.
-
- 10. If you wish to incorporate parts of the Program into other free
- programs whose distribution conditions are different, write to the
- author to ask for permission. For software which is copyrighted
- by the Free Software Foundation, write to the Free Software
- Foundation; we sometimes make exceptions for this. Our decision
- will be guided by the two goals of preserving the free status of
- all derivatives of our free software and of promoting the sharing
- and reuse of software generally.
-
- NO WARRANTY
-
- 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO
- WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE
- LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
- HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT
- WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT
- NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
- FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE
- QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
- PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY
- SERVICING, REPAIR OR CORRECTION.
-
- 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
- WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY
- MODIFY AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE
- LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL,
- INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR
- INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
- DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU
- OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY
- OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN
- ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
-
- END OF TERMS AND CONDITIONS
-
-How to Apply These Terms to Your New Programs
-=============================================
-
- If you develop a new program, and you want it to be of the greatest
-possible use to the public, the best way to achieve this is to make it
-free software which everyone can redistribute and change under these
-terms.
-
- To do so, attach the following notices to the program. It is safest
-to attach them to the start of each source file to most effectively
-convey the exclusion of warranty; and each file should have at least
-the "copyright" line and a pointer to where the full notice is found.
-
- ONE LINE TO GIVE THE PROGRAM'S NAME AND A BRIEF IDEA OF WHAT IT DOES.
- Copyright (C) 19YY NAME OF AUTHOR
-
- This program is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 2 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
+ Global options:
+
+`--allow-root=ROOTDIR'
+ Specify legal CVSROOT directory (server only) (not in CVS 1.9 and
+ older). See *Note Password authentication server::.
+
+`-a'
+ Authenticate all communication (client only) (not in CVS 1.9 and
+ older). See *Note Global options::.
+
+`-b'
+ Specify RCS location (CVS 1.9 and older). See *Note Global
+ options::.
+
+`-d ROOT'
+ Specify the CVSROOT. See *Note Repository::.
+
+`-e EDITOR'
+ Edit messages with EDITOR. See *Note Committing your changes::.
+
+`-f'
+ Do not read the `~/.cvsrc' file. See *Note Global options::.
+
+`-H'
+`--help'
+ Print a help message. See *Note Global options::.
+
+`-l'
+ Do not log in `$CVSROOT/CVSROOT/history' file. See *Note Global
+ options::.
+
+`-n'
+ Do not change any files. See *Note Global options::.
+
+`-Q'
+ Be really quiet. See *Note Global options::.
+
+`-q'
+ Be somewhat quiet. See *Note Global options::.
+
+`-r'
+ Make new working files read-only. See *Note Global options::.
+
+`-s VARIABLE=VALUE'
+ Set a user variable. See *Note Variables::.
+
+`-T TEMPDIR'
+ Put temporary files in TEMPDIR. See *Note Global options::.
+
+`-t'
+ Trace CVS execution. See *Note Global options::.
+
+`-v'
+
+`--version'
+ Display version and copyright information for CVS.
+
+`-w'
+ Make new working files read-write. See *Note Global options::.
+
+`-x'
+ Encrypt all communication (client only). See *Note Global
+ options::.
+
+`-z GZIP-LEVEL'
+ Set the compression level (client only). See *Note Global
+ options::.
+
+ Keyword expansion modes (*note Substitution modes::):
+
+ -kkv $Id: cvs.info-7,v 1.2 2001/09/29 00:00:39 tholo Exp $
+ -kkvl $Id: cvs.info-7,v 1.2 2001/09/29 00:00:39 tholo Exp $
+ -kk $Id: cvs.info-7,v 1.2 2001/09/29 00:00:39 tholo Exp $
+ -kv file1,v 1.1 1993/12/09 03:21:13 joe Exp
+ -ko no expansion
+ -kb no expansion, file is binary
+
+ Keywords (*note Keyword list::):
+
+ $Author: tholo $
+ $Date: 2001/09/29 00:00:39 $
+ $Header: /cvs/OpenBSD/src/gnu/usr.bin/cvs/doc/cvs.info-7,v 1.2 2001/09/29 00:00:39 tholo Exp $
+ $Id: cvs.info-7,v 1.2 2001/09/29 00:00:39 tholo Exp $
+ $Locker: $
+ $Name: $
+ $RCSfile: cvs.info-7,v $
+ $Revision: 1.2 $
+ $Source: /cvs/OpenBSD/src/gnu/usr.bin/cvs/doc/cvs.info-7,v $
+ $State: Exp $
+ $Log: cvs.info-7,v $
+ Revision 1.2 2001/09/29 00:00:39 tholo
+ Merge remaining local changes, correct build issues
+
+ Revision 1.1 1993/12/09 03:30:17 joe
+ Initial revision
+
+ Commands, command options, and command arguments:
+
+`add [OPTIONS] [FILES...]'
+ Add a new file/directory. See *Note Adding files::.
+
+ `-k KFLAG'
+ Set keyword expansion.
+
+ `-m MSG'
+ Set file description.
+
+`admin [OPTIONS] [FILES...]'
+ Administration of history files in the repository. See *Note
+ admin::.
+
+ `-b[REV]'
+ Set default branch. See *Note Reverting local changes::.
+
+ `-cSTRING'
+ Set comment leader.
+
+ `-kSUBST'
+ Set keyword substitution. See *Note Keyword substitution::.
+
+ `-l[REV]'
+ Lock revision REV, or latest revision.
+
+ `-mREV:MSG'
+ Replace the log message of revision REV with MSG.
+
+ `-oRANGE'
+ Delete revisions from the repository. See *Note admin
+ options::.
+
+ `-q'
+ Run quietly; do not print diagnostics.
+
+ `-sSTATE[:REV]'
+ Set the state.
+
+ `-t'
+ Set file description from standard input.
+
+ `-tFILE'
+ Set file description from FILE.
+
+ `-t-STRING'
+ Set file description to STRING.
+
+ `-u[REV]'
+ Unlock revision REV, or latest revision.
+
+`annotate [OPTIONS] [FILES...]'
+ Show last revision where each line was modified. See *Note
+ annotate::.
+
+ `-D DATE'
+ Annotate the most recent revision no later than DATE. See
+ *Note Common options::.
+
+ `-f'
+ Use head revision if tag/date not found. See *Note Common
+ options::.
+
+ `-l'
+ Local; run only in current working directory. *Note
+ Recursive behavior::.
+
+ `-R'
+ Operate recursively (default). *Note Recursive behavior::.
+
+ `-r TAG'
+ Annotate revision TAG. See *Note Common options::.
+
+`checkout [OPTIONS] MODULES...'
+ Get a copy of the sources. See *Note checkout::.
+
+ `-A'
+ Reset any sticky tags/date/options. See *Note Sticky tags::
+ and *Note Keyword substitution::.
+
+ `-c'
+ Output the module database. See *Note checkout options::.
+
+ `-D DATE'
+ Check out revisions as of DATE (is sticky). See *Note Common
+ options::.
+
+ `-d DIR'
+ Check out into DIR. See *Note checkout options::.
+
+ `-f'
+ Use head revision if tag/date not found. See *Note Common
+ options::.
+
+ `-j REV'
+ Merge in changes. See *Note checkout options::.
+
+ `-k KFLAG'
+ Use KFLAG keyword expansion. See *Note Substitution modes::.
+
+ `-l'
+ Local; run only in current working directory. *Note
+ Recursive behavior::.
+
+ `-N'
+ Don't "shorten" module paths if -d specified. See *Note
+ checkout options::.
+
+ `-n'
+ Do not run module program (if any). See *Note checkout
+ options::.
+
+ `-P'
+ Prune empty directories. See *Note Moving directories::.
+
+ `-p'
+ Check out files to standard output (avoids stickiness). See
+ *Note checkout options::.
+
+ `-R'
+ Operate recursively (default). *Note Recursive behavior::.
+
+ `-r TAG'
+ Checkout revision TAG (is sticky). See *Note Common
+ options::.
+
+ `-s'
+ Like -c, but include module status. See *Note checkout
+ options::.
+
+`commit [OPTIONS] [FILES...]'
+ Check changes into the repository. See *Note commit::.
+
+ `-F FILE'
+ Read log message from FILE. See *Note commit options::.
+
+ `-f'
+ Force the file to be committed; disables recursion. See
+ *Note commit options::.
+
+ `-l'
+ Local; run only in current working directory. See *Note
+ Recursive behavior::.
+
+ `-m MSG'
+ Use MSG as log message. See *Note commit options::.
+
+ `-n'
+ Do not run module program (if any). See *Note commit
+ options::.
+
+ `-R'
+ Operate recursively (default). *Note Recursive behavior::.
+
+ `-r REV'
+ Commit to REV. See *Note commit options::.
+
+`diff [OPTIONS] [FILES...]'
+ Show differences between revisions. See *Note diff::. In
+ addition to the options shown below, accepts a wide variety of
+ options to control output style, for example `-c' for context
+ diffs.
+
+ `-D DATE1'
+ Diff revision for date against working file. See *Note diff
+ options::.
+
+ `-D DATE2'
+ Diff REV1/DATE1 against DATE2. See *Note diff options::.
+
+ `-l'
+ Local; run only in current working directory. See *Note
+ Recursive behavior::.
+
+ `-N'
+ Include diffs for added and removed files. See *Note diff
+ options::.
+
+ `-R'
+ Operate recursively (default). *Note Recursive behavior::.
+
+ `-r REV1'
+ Diff revision for REV1 against working file. See *Note diff
+ options::.
+
+ `-r REV2'
+ Diff REV1/DATE1 against REV2. See *Note diff options::.
+
+`edit [OPTIONS] [FILES...]'
+ Get ready to edit a watched file. See *Note Editing files::.
+
+ `-a ACTIONS'
+ Specify actions for temporary watch, where ACTIONS is `edit',
+ `unedit', `commit', `all', or `none'. See *Note Editing
+ files::.
+
+ `-l'
+ Local; run only in current working directory. See *Note
+ Recursive behavior::.
+
+ `-R'
+ Operate recursively (default). *Note Recursive behavior::.
+
+`editors [OPTIONS] [FILES...]'
+ See who is editing a watched file. See *Note Watch information::.
+
+ `-l'
+ Local; run only in current working directory. See *Note
+ Recursive behavior::.
+
+ `-R'
+ Operate recursively (default). *Note Recursive behavior::.
+
+`export [OPTIONS] MODULES...'
+ Export files from CVS. See *Note export::.
+
+ `-D DATE'
+ Check out revisions as of DATE. See *Note Common options::.
+
+ `-d DIR'
+ Check out into DIR. See *Note export options::.
+
+ `-f'
+ Use head revision if tag/date not found. See *Note Common
+ options::.
+
+ `-k KFLAG'
+ Use KFLAG keyword expansion. See *Note Substitution modes::.
+
+ `-l'
+ Local; run only in current working directory. *Note
+ Recursive behavior::.
+
+ `-N'
+ Don't "shorten" module paths if -d specified. See *Note
+ export options::.
+
+ `-n'
+ Do not run module program (if any). See *Note export
+ options::.
+
+ `-P'
+ Prune empty directories. See *Note Moving directories::.
+
+ `-R'
+ Operate recursively (default). *Note Recursive behavior::.
+
+ `-r TAG'
+ Checkout revision TAG. See *Note Common options::.
+
+`history [OPTIONS] [FILES...]'
+ Show repository access history. See *Note history::.
+
+ `-a'
+ All users (default is self). See *Note history options::.
+
+ `-b STR'
+ Back to record with STR in module/file/repos field. See
+ *Note history options::.
+
+ `-c'
+ Report on committed (modified) files. See *Note history
+ options::.
+
+ `-D DATE'
+ Since DATE. See *Note history options::.
+
+ `-e'
+ Report on all record types. See *Note history options::.
+
+ `-l'
+ Last modified (committed or modified report). See *Note
+ history options::.
+
+ `-m MODULE'
+ Report on MODULE (repeatable). See *Note history options::.
+
+ `-n MODULE'
+ In MODULE. See *Note history options::.
+
+ `-o'
+ Report on checked out modules. See *Note history options::.
+
+ `-r REV'
+ Since revision REV. See *Note history options::.
+
+ `-T'
+ Produce report on all TAGs. See *Note history options::.
+
+ `-t TAG'
+ Since tag record placed in history file (by anyone). See
+ *Note history options::.
+
+ `-u USER'
+ For user USER (repeatable). See *Note history options::.
+
+ `-w'
+ Working directory must match. See *Note history options::.
+
+ `-x TYPES'
+ Report on TYPES, one or more of `TOEFWUCGMAR'. See *Note
+ history options::.
+
+ `-z ZONE'
+ Output for time zone ZONE. See *Note history options::.
+
+`import [OPTIONS] REPOSITORY VENDOR-TAG RELEASE-TAGS...'
+ Import files into CVS, using vendor branches. See *Note import::.
+
+ `-b BRA'
+ Import to vendor branch BRA. See *Note Multiple vendor
+ branches::.
+
+ `-d'
+ Use the file's modification time as the time of import. See
+ *Note import options::.
+
+ `-k KFLAG'
+ Set default keyword substitution mode. See *Note import
+ options::.
+
+ `-m MSG'
+ Use MSG for log message. See *Note import options::.
+
+ `-I IGN'
+ More files to ignore (! to reset). See *Note import
+ options::.
+
+ `-W SPEC'
+ More wrappers. See *Note import options::.
+
+`init'
+ Create a CVS repository if it doesn't exist. See *Note Creating a
+ repository::.
+
+`log [OPTIONS] [FILES...]'
+ Print out history information for files. See *Note log::.
+
+ `-b'
+ Only list revisions on the default branch. See *Note log
+ options::.
+
+ `-d DATES'
+ Specify dates (D1<D2 for range, D for latest before). See
+ *Note log options::.
+
+ `-h'
+ Only print header. See *Note log options::.
+
+ `-l'
+ Local; run only in current working directory. See *Note
+ Recursive behavior::.
+
+ `-N'
+ Do not list tags. See *Note log options::.
+
+ `-R'
+ Only print name of RCS file. See *Note log options::.
+
+ `-rREVS'
+ Only list revisions REVS. See *Note log options::.
+
+ `-s STATES'
+ Only list revisions with specified states. See *Note log
+ options::.
+
+ `-t'
+ Only print header and descriptive text. See *Note log
+ options::.
+
+ `-wLOGINS'
+ Only list revisions checked in by specified logins. See
+ *Note log options::.
+
+`login'
+ Prompt for password for authenticating server. See *Note Password
+ authentication client::.
+
+`logout'
+ Remove stored password for authenticating server. See *Note
+ Password authentication client::.
+
+`rdiff [OPTIONS] MODULES...'
+ Show differences between releases. See *Note rdiff::.
+
+ `-c'
+ Context diff output format (default). See *Note rdiff
+ options::.
+
+ `-D DATE'
+ Select revisions based on DATE. See *Note Common options::.
+
+ `-f'
+ Use head revision if tag/date not found. See *Note Common
+ options::.
+
+ `-l'
+ Local; run only in current working directory. See *Note
+ Recursive behavior::.
+
+ `-R'
+ Operate recursively (default). *Note Recursive behavior::.
+
+ `-r REV'
+ Select revisions based on REV. See *Note Common options::.
+
+ `-s'
+ Short patch - one liner per file. See *Note rdiff options::.
+
+ `-t'
+ Top two diffs - last change made to the file. See *Note diff
+ options::.
+
+ `-u'
+ Unidiff output format. See *Note rdiff options::.
+
+ `-V VERS'
+ Use RCS Version VERS for keyword expansion (obsolete). See
+ *Note rdiff options::.
+
+`release [OPTIONS] DIRECTORY'
+ Indicate that a directory is no longer in use. See *Note
+ release::.
+
+ `-d'
+ Delete the given directory. See *Note release options::.
+
+`remove [OPTIONS] [FILES...]'
+ Remove an entry from the repository. See *Note Removing files::.
+
+ `-f'
+ Delete the file before removing it. See *Note Removing
+ files::.
+
+ `-l'
+ Local; run only in current working directory. See *Note
+ Recursive behavior::.
+
+ `-R'
+ Operate recursively (default). *Note Recursive behavior::.
+
+`rtag [OPTIONS] TAG MODULES...'
+ Add a symbolic tag to a module. See *Note Revisions:: and *Note
+ Branching and merging::.
+
+ `-a'
+ Clear tag from removed files that would not otherwise be
+ tagged. See *Note Tagging add/remove::.
+
+ `-b'
+ Create a branch named TAG. See *Note Branching and merging::.
+
+ `-D DATE'
+ Tag revisions as of DATE. See *Note Tagging by date/tag::.
+
+ `-d'
+ Delete TAG. See *Note Modifying tags::.
+
+ `-F'
+ Move TAG if it already exists. See *Note Modifying tags::.
+
+ `-f'
+ Force a head revision match if tag/date not found. See *Note
+ Tagging by date/tag::.
+
+ `-l'
+ Local; run only in current working directory. See *Note
+ Recursive behavior::.
+
+ `-n'
+ No execution of tag program. See *Note Common options::.
+
+ `-R'
+ Operate recursively (default). *Note Recursive behavior::.
+
+ `-r REV'
+ Tag existing tag REV. See *Note Tagging by date/tag::.
+
+`status [OPTIONS] FILES...'
+ Display status information in a working directory. See *Note File
+ status::.
+
+ `-l'
+ Local; run only in current working directory. See *Note
+ Recursive behavior::.
+
+ `-R'
+ Operate recursively (default). *Note Recursive behavior::.
+
+ `-v'
+ Include tag information for file. See *Note Tags::.
+
+`tag [OPTIONS] TAG [FILES...]'
+ Add a symbolic tag to checked out version of files. See *Note
+ Revisions:: and *Note Branching and merging::.
+
+ `-b'
+ Create a branch named TAG. See *Note Branching and merging::.
+
+ `-c'
+ Check that working files are unmodified. See *Note Tagging
+ the working directory::.
+
+ `-D DATE'
+ Tag revisions as of DATE. See *Note Tagging by date/tag::.
+
+ `-d'
+ Delete TAG. See *Note Modifying tags::.
+
+ `-F'
+ Move TAG if it already exists. See *Note Modifying tags::.
+
+ `-f'
+ Force a head revision match if tag/date not found. See *Note
+ Tagging by date/tag::.
+
+ `-l'
+ Local; run only in current working directory. See *Note
+ Recursive behavior::.
+
+ `-R'
+ Operate recursively (default). *Note Recursive behavior::.
+
+ `-r REV'
+ Tag existing tag REV. See *Note Tagging by date/tag::.
+
+`unedit [OPTIONS] [FILES...]'
+ Undo an edit command. See *Note Editing files::.
+
+ `-a ACTIONS'
+ Specify actions for temporary watch, where ACTIONS is `edit',
+ `unedit', `commit', `all', or `none'. See *Note Editing
+ files::.
+
+ `-l'
+ Local; run only in current working directory. See *Note
+ Recursive behavior::.
+
+ `-R'
+ Operate recursively (default). *Note Recursive behavior::.
+
+`update [OPTIONS] [FILES...]'
+ Bring work tree in sync with repository. See *Note update::.
+
+ `-A'
+ Reset any sticky tags/date/options. See *Note Sticky tags::
+ and *Note Keyword substitution::.
+
+ `-C'
+ Overwrite locally modified files with clean copies from the
+ repository (the modified file is saved in `.#FILE.REVISION',
+ however).
+
+ `-D DATE'
+ Check out revisions as of DATE (is sticky). See *Note Common
+ options::.
+
+ `-d'
+ Create directories. See *Note update options::.
+
+ `-f'
+ Use head revision if tag/date not found. See *Note Common
+ options::.
+
+ `-I IGN'
+ More files to ignore (! to reset). See *Note import
+ options::.
+
+ `-j REV'
+ Merge in changes. See *Note update options::.
+
+ `-k KFLAG'
+ Use KFLAG keyword expansion. See *Note Substitution modes::.
+
+ `-l'
+ Local; run only in current working directory. *Note
+ Recursive behavior::.
+
+ `-P'
+ Prune empty directories. See *Note Moving directories::.
+
+ `-p'
+ Check out files to standard output (avoids stickiness). See
+ *Note update options::.
+
+ `-R'
+ Operate recursively (default). *Note Recursive behavior::.
+
+ `-r TAG'
+ Checkout revision TAG (is sticky). See *Note Common
+ options::.
+
+ `-W SPEC'
+ More wrappers. See *Note import options::.
+
+`version'
+ Display the version of CVS being used. If the repository is
+ remote, display both the client and server versions.
+
+`watch [on|off|add|remove] [OPTIONS] [FILES...]'
+ on/off: turn on/off read-only checkouts of files. See *Note
+ Setting a watch::.
+
+ add/remove: add or remove notification on actions. See *Note
+ Getting Notified::.
+
+ `-a ACTIONS'
+ Specify actions for temporary watch, where ACTIONS is `edit',
+ `unedit', `commit', `all', or `none'. See *Note Editing
+ files::.
+
+ `-l'
+ Local; run only in current working directory. See *Note
+ Recursive behavior::.
+
+ `-R'
+ Operate recursively (default). *Note Recursive behavior::.
+
+`watchers [OPTIONS] [FILES...]'
+ See who is watching a file. See *Note Watch information::.
+
+ `-l'
+ Local; run only in current working directory. See *Note
+ Recursive behavior::.
+
+ `-R'
+ Operate recursively (default). *Note Recursive behavior::.
+
+
+File: cvs.info, Node: Administrative files, Next: Environment variables, Prev: Invoking CVS, Up: Top
+
+Reference manual for Administrative files
+*****************************************
+
+ Inside the repository, in the directory `$CVSROOT/CVSROOT', there
+are a number of supportive files for CVS. You can use CVS in a limited
+fashion without any of them, but if they are set up properly they can
+help make life easier. For a discussion of how to edit them, see *Note
+Intro administrative files::.
+
+ The most important of these files is the `modules' file, which
+defines the modules inside the repository.
+
+* Menu:
+
+* modules:: Defining modules
+* Wrappers:: Specify binary-ness based on file name
+* commit files:: The commit support files
+* commitinfo:: Pre-commit checking
+* verifymsg:: How are log messages evaluated?
+* editinfo:: Specifying how log messages are created
+ (obsolete)
+* loginfo:: Where should log messages be sent?
+* rcsinfo:: Templates for the log messages
+* cvsignore:: Ignoring files via cvsignore
+* checkoutlist:: Adding your own administrative files
+* history file:: History information
+* Variables:: Various variables are expanded
+* config:: Miscellaneous CVS configuration
+
+
+File: cvs.info, Node: modules, Next: Wrappers, Up: Administrative files
+
+The modules file
+================
+
+ The `modules' file records your definitions of names for collections
+of source code. CVS will use these definitions if you use CVS to
+update the modules file (use normal commands like `add', `commit', etc).
+
+ The `modules' file may contain blank lines and comments (lines
+beginning with `#') as well as module definitions. Long lines can be
+continued on the next line by specifying a backslash (`\') as the last
+character on the line.
+
+ There are three basic types of modules: alias modules, regular
+modules, and ampersand modules. The difference between them is the way
+that they map files in the repository to files in the working
+directory. In all of the following examples, the top-level repository
+contains a directory called `first-dir', which contains two files,
+`file1' and `file2', and a directory `sdir'. `first-dir/sdir' contains
+a file `sfile'.
+
+* Menu:
+
+* Alias modules:: The simplest kind of module
+* Regular modules::
+* Ampersand modules::
+* Excluding directories:: Excluding directories from a module
+* Module options:: Regular and ampersand modules can take options
+* Module program options:: How the modules ``program options'' programs
+ are run.
+
+
+File: cvs.info, Node: Alias modules, Next: Regular modules, Up: modules
+
+Alias modules
+-------------
+
+ Alias modules are the simplest kind of module:
+
+`MNAME -a ALIASES...'
+ This represents the simplest way of defining a module MNAME. The
+ `-a' flags the definition as a simple alias: CVS will treat any
+ use of MNAME (as a command argument) as if the list of names
+ ALIASES had been specified instead. ALIASES may contain either
+ other module names or paths. When you use paths in aliases,
+ `checkout' creates all intermediate directories in the working
+ directory, just as if the path had been specified explicitly in
+ the CVS arguments.
+
+ For example, if the modules file contains:
+
+ amodule -a first-dir
+
+then the following two commands are equivalent:
+
+ $ cvs co amodule
+ $ cvs co first-dir
+
+and they each would provide output such as:
+
+ cvs checkout: Updating first-dir
+ U first-dir/file1
+ U first-dir/file2
+ cvs checkout: Updating first-dir/sdir
+ U first-dir/sdir/sfile
+
+
+File: cvs.info, Node: Regular modules, Next: Ampersand modules, Prev: Alias modules, Up: modules
+
+Regular modules
+---------------
+
+`MNAME [ options ] DIR [ FILES... ]'
+ In the simplest case, this form of module definition reduces to
+ `MNAME DIR'. This defines all the files in directory DIR as
+ module mname. DIR is a relative path (from `$CVSROOT') to a
+ directory of source in the source repository. In this case, on
+ checkout, a single directory called MNAME is created as a working
+ directory; no intermediate directory levels are used by default,
+ even if DIR was a path involving several directory levels.
+
+ For example, if a module is defined by:
+
+ regmodule first-dir
+
+then regmodule will contain the files from first-dir:
+
+ $ cvs co regmodule
+ cvs checkout: Updating regmodule
+ U regmodule/file1
+ U regmodule/file2
+ cvs checkout: Updating regmodule/sdir
+ U regmodule/sdir/sfile
+ $
+
+ By explicitly specifying files in the module definition after DIR,
+you can select particular files from directory DIR. Here is an example:
+
+ regfiles first-dir/sdir sfile
+
+With this definition, getting the regfiles module will create a single
+working directory `regfiles' containing the file listed, which comes
+from a directory deeper in the CVS source repository:
+
+ $ cvs co regfiles
+ U regfiles/sfile
+ $
+
+
+File: cvs.info, Node: Ampersand modules, Next: Excluding directories, Prev: Regular modules, Up: modules
+
+Ampersand modules
+-----------------
+
+ A module definition can refer to other modules by including
+`&MODULE' in its definition.
+ MNAME [ options ] &MODULE...
+
+ Then getting the module creates a subdirectory for each such module,
+in the directory containing the module. For example, if modules
+contains
+
+ ampermod &first-dir
+
+ then a checkout will create an `ampermod' directory which contains a
+directory called `first-dir', which in turns contains all the
+directories and files which live there. For example, the command
+
+ $ cvs co ampermod
+
+will create the following files:
+
+ ampermod/first-dir/file1
+ ampermod/first-dir/file2
+ ampermod/first-dir/sdir/sfile
+
+ There is one quirk/bug: the messages that CVS prints omit the
+`ampermod', and thus do not correctly display the location to which it
+is checking out the files:
+
+ $ cvs co ampermod
+ cvs checkout: Updating first-dir
+ U first-dir/file1
+ U first-dir/file2
+ cvs checkout: Updating first-dir/sdir
+ U first-dir/sdir/sfile
+ $
+
+ Do not rely on this buggy behavior; it may get fixed in a future
+release of CVS.
+
+
+File: cvs.info, Node: Excluding directories, Next: Module options, Prev: Ampersand modules, Up: modules
+
+Excluding directories
+---------------------
+
+ An alias module may exclude particular directories from other
+modules by using an exclamation mark (`!') before the name of each
+directory to be excluded.
+
+ For example, if the modules file contains:
+
+ exmodule -a !first-dir/sdir first-dir
+
+ then checking out the module `exmodule' will check out everything in
+`first-dir' except any files in the subdirectory `first-dir/sdir'.
+
+
+File: cvs.info, Node: Module options, Next: Module program options, Prev: Excluding directories, Up: modules
+
+Module options
+--------------
+
+ Either regular modules or ampersand modules can contain options,
+which supply additional information concerning the module.
+
+`-d NAME'
+ Name the working directory something other than the module name.
+
+`-e PROG'
+ Specify a program PROG to run whenever files in a module are
+ exported. PROG runs with a single argument, the module name.
+
+`-i PROG'
+ Specify a program PROG to run whenever files in a module are
+ committed. PROG runs with a single argument, the full pathname of
+ the affected directory in a source repository. The `commitinfo',
+ `loginfo', and `verifymsg' files provide other ways to call a
+ program on commit.
+
+`-o PROG'
+ Specify a program PROG to run whenever files in a module are
+ checked out. PROG runs with a single argument, the module name.
+
+`-s STATUS'
+ Assign a status to the module. When the module file is printed
+ with `cvs checkout -s' the modules are sorted according to
+ primarily module status, and secondarily according to the module
+ name. This option has no other meaning. You can use this option
+ for several things besides status: for instance, list the person
+ that is responsible for this module.
+
+`-t PROG'
+ Specify a program PROG to run whenever files in a module are
+ tagged with `rtag'. PROG runs with two arguments: the module name
+ and the symbolic tag specified to `rtag'. It is not run when
+ `tag' is executed. Generally you will find that taginfo is a
+ better solution (*note user-defined logging::).
+
+`-u PROG'
+ Specify a program PROG to run whenever `cvs update' is executed
+ from the top-level directory of the checked-out module. PROG runs
+ with a single argument, the full path to the source repository for
+ this module.
+
+ You should also see *note Module program options:: about how the
+"program options" programs are run.
+
+
+File: cvs.info, Node: Module program options, Prev: Module options, Up: modules
+
+How the modules file "program options" programs are run
+-------------------------------------------------------
+
+For checkout, rtag, and export, the program is server-based, and as
+such the following applies:-
+
+ If using remote access methods (pserver, ext, etc.), CVS will
+execute this program on the server from a temporary directory. The path
+is searched for this program.
+
+ If using "local access" (on a local or remote NFS filesystem, i.e.
+repository set just to a path), the program will be executed from the
+newly checked-out tree, if found there, or alternatively searched for
+in the path if not.
+
+The commit and update programs are locally-based, and are run as
+follows:-
+
+ The program is always run locally. One must re-checkout the tree one
+is using if these options are updated in the modules administrative
+file. The file CVS/Checkin.prog contains the value of the option `-i'
+set in the modules file, and similarly for the file CVS/Update.prog and
+`-u'. The program is always executed from the top level of the
+checked-out copy on the client. Again, the program is first searched
+for in the checked-out copy and then using the path.
+
+ The programs are all run after the operation has effectively
+completed.
+
+
+File: cvs.info, Node: Wrappers, Next: commit files, Prev: modules, Up: Administrative files
+
+The cvswrappers file
+====================
+
+ Wrappers refers to a CVS feature which lets you control certain
+settings based on the name of the file which is being operated on. The
+settings are `-k' for binary files, and `-m' for nonmergeable text
+files.
+
+ The `-m' option specifies the merge methodology that should be used
+when a non-binary file is updated. `MERGE' means the usual CVS
+behavior: try to merge the files. `COPY' means that `cvs update' will
+refuse to merge files, as it also does for files specified as binary
+with `-kb' (but if the file is specified as binary, there is no need to
+specify `-m 'COPY''). CVS will provide the user with the two versions
+of the files, and require the user using mechanisms outside CVS, to
+insert any necessary changes. *WARNING*: do not use `COPY' with CVS
+1.9 or earlier-such versions of CVS will copy one version of your file
+over the other, wiping out the previous contents. The `-m' wrapper
+option only affects behavior when merging is done on update; it does
+not affect how files are stored. See *Note Binary files::, for more on
+binary files.
+
+ The basic format of the file `cvswrappers' is:
+
+ wildcard [option value][option value]...
- You should have received a copy of the GNU General Public License
- along with this program; if not, write to the Free Software
- Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-
- Also add information on how to contact you by electronic and paper
-mail.
-
- If the program is interactive, make it output a short notice like
-this when it starts in an interactive mode:
-
- Gnomovision version 69, Copyright (C) 19YY NAME OF AUTHOR
- Gnomovision comes with ABSOLUTELY NO WARRANTY; for details
- type `show w'.
- This is free software, and you are welcome to redistribute it
- under certain conditions; type `show c' for details.
-
- The hypothetical commands `show w' and `show c' should show the
-appropriate parts of the General Public License. Of course, the
-commands you use may be called something other than `show w' and `show
-c'; they could even be mouse-clicks or menu items--whatever suits your
-program.
-
- You should also get your employer (if you work as a programmer) or
-your school, if any, to sign a "copyright disclaimer" for the program,
-if necessary. Here is a sample; alter the names:
-
- Yoyodyne, Inc., hereby disclaims all copyright interest in the program
- `Gnomovision' (which makes passes at compilers) written by James Hacker.
+ where option is one of
+ -m update methodology value: MERGE or COPY
+ -k keyword expansion value: expansion mode
- SIGNATURE OF TY COON, 1 April 1989
- Ty Coon, President of Vice
+ and value is a single-quote delimited value.
+
+ For example, the following command imports a directory, treating
+files whose name ends in `.exe' as binary:
+
+ cvs import -I ! -W "*.exe -k 'b'" first-dir vendortag reltag
- This General Public License does not permit incorporating your
-program into proprietary programs. If your program is a subroutine
-library, you may consider it more useful to permit linking proprietary
-applications with the library. If this is what you want to do, use the
-GNU Library General Public License instead of this License.
+
+File: cvs.info, Node: commit files, Next: commitinfo, Prev: Wrappers, Up: Administrative files
+
+The commit support files
+========================
+
+ The `-i' flag in the `modules' file can be used to run a certain
+program whenever files are committed (*note modules::). The files
+described in this section provide other, more flexible, ways to run
+programs whenever something is committed.
+
+ There are three kind of programs that can be run on commit. They
+are specified in files in the repository, as described below. The
+following table summarizes the file names and the purpose of the
+corresponding programs.
+
+`commitinfo'
+ The program is responsible for checking that the commit is
+ allowed. If it exits with a non-zero exit status the commit will
+ be aborted.
+
+`verifymsg'
+ The specified program is used to evaluate the log message, and
+ possibly verify that it contains all required fields. This is
+ most useful in combination with the `rcsinfo' file, which can hold
+ a log message template (*note rcsinfo::).
+
+`editinfo'
+ The specified program is used to edit the log message, and
+ possibly verify that it contains all required fields. This is
+ most useful in combination with the `rcsinfo' file, which can hold
+ a log message template (*note rcsinfo::). (obsolete)
+
+`loginfo'
+ The specified program is called when the commit is complete. It
+ receives the log message and some additional information and can
+ store the log message in a file, or mail it to appropriate
+ persons, or maybe post it to a local newsgroup, or... Your
+ imagination is the limit!
+
+* Menu:
+
+* syntax:: The common syntax
+
+
+File: cvs.info, Node: syntax, Up: commit files
+
+The common syntax
+-----------------
+
+ The administrative files such as `commitinfo', `loginfo', `rcsinfo',
+`verifymsg', etc., all have a common format. The purpose of the files
+are described later on. The common syntax is described here.
+
+ Each line contains the following:
+ * A regular expression. This is a basic regular expression in the
+ syntax used by GNU emacs.
+
+ * A whitespace separator--one or more spaces and/or tabs.
+
+ * A file name or command-line template.
+
+Blank lines are ignored. Lines that start with the character `#' are
+treated as comments. Long lines unfortunately can _not_ be broken in
+two parts in any way.
+
+ The first regular expression that matches the current directory name
+in the repository is used. The rest of the line is used as a file name
+or command-line as appropriate.
+
+
+File: cvs.info, Node: commitinfo, Next: verifymsg, Prev: commit files, Up: Administrative files
+
+Commitinfo
+==========
+
+ The `commitinfo' file defines programs to execute whenever `cvs
+commit' is about to execute. These programs are used for pre-commit
+checking to verify that the modified, added and removed files are really
+ready to be committed. This could be used, for instance, to verify
+that the changed files conform to to your site's standards for coding
+practice.
+
+ As mentioned earlier, each line in the `commitinfo' file consists of
+a regular expression and a command-line template. The template can
+include a program name and any number of arguments you wish to supply
+to it. The full path to the current source repository is appended to
+the template, followed by the file names of any files involved in the
+commit (added, removed, and modified files).
+
+ The first line with a regular expression matching the directory
+within the repository will be used. If the command returns a non-zero
+exit status the commit will be aborted.
+
+ If the repository name does not match any of the regular expressions
+in this file, the `DEFAULT' line is used, if it is specified.
+
+ All occurrences of the name `ALL' appearing as a regular expression
+are used in addition to the first matching regular expression or the
+name `DEFAULT'.
+
+ Note: when CVS is accessing a remote repository, `commitinfo' will
+be run on the _remote_ (i.e., server) side, not the client side (*note
+Remote repositories::).
+
+
+File: cvs.info, Node: verifymsg, Next: editinfo, Prev: commitinfo, Up: Administrative files
+
+Verifying log messages
+======================
+
+ Once you have entered a log message, you can evaluate that message
+to check for specific content, such as a bug ID. Use the `verifymsg'
+file to specify a program that is used to verify the log message. This
+program could be a simple script that checks that the entered message
+contains the required fields.
+
+ The `verifymsg' file is often most useful together with the
+`rcsinfo' file, which can be used to specify a log message template.
+
+ Each line in the `verifymsg' file consists of a regular expression
+and a command-line template. The template must include a program name,
+and can include any number of arguments. The full path to the current
+log message template file is appended to the template.
+
+ One thing that should be noted is that the `ALL' keyword is not
+supported. If more than one matching line is found, the first one is
+used. This can be useful for specifying a default verification script
+in a directory, and then overriding it in a subdirectory.
+
+ If the repository name does not match any of the regular expressions
+in this file, the `DEFAULT' line is used, if it is specified.
+
+ If the verification script exits with a non-zero exit status, the
+commit is aborted.
+
+ Note that the verification script cannot change the log message; it
+can merely accept it or reject it.
+
+ The following is a little silly example of a `verifymsg' file,
+together with the corresponding `rcsinfo' file, the log message
+template and an verification script. We begin with the log message
+template. We want to always record a bug-id number on the first line
+of the log message. The rest of log message is free text. The
+following template is found in the file `/usr/cvssupport/tc.template'.
+
+ BugId:
+
+ The script `/usr/cvssupport/bugid.verify' is used to evaluate the
+log message.
+
+ #!/bin/sh
+ #
+ # bugid.verify filename
+ #
+ # Verify that the log message contains a valid bugid
+ # on the first line.
+ #
+ if head -1 < $1 | grep '^BugId:[ ]*[0-9][0-9]*$' > /dev/null; then
+ exit 0
+ else
+ echo "No BugId found."
+ exit 1
+ fi
+
+ The `verifymsg' file contains this line:
+
+ ^tc /usr/cvssupport/bugid.verify
+
+ The `rcsinfo' file contains this line:
+
+ ^tc /usr/cvssupport/tc.template

-File: cvs.info, Node: Index, Prev: Copying, Up: Top
+File: cvs.info, Node: editinfo, Next: loginfo, Prev: verifymsg, Up: Administrative files
+
+Editinfo
+========
+
+ _NOTE:_ The `editinfo' feature has been rendered obsolete. To set a
+default editor for log messages use the `EDITOR' environment variable
+(*note Environment variables::) or the `-e' global option (*note Global
+options::). See *Note verifymsg::, for information on the use of the
+`verifymsg' feature for evaluating log messages.
+
+ If you want to make sure that all log messages look the same way,
+you can use the `editinfo' file to specify a program that is used to
+edit the log message. This program could be a custom-made editor that
+always enforces a certain style of the log message, or maybe a simple
+shell script that calls an editor, and checks that the entered message
+contains the required fields.
+
+ If no matching line is found in the `editinfo' file, the editor
+specified in the environment variable `$CVSEDITOR' is used instead. If
+that variable is not set, then the environment variable `$EDITOR' is
+used instead. If that variable is not set a default will be used. See
+*Note Committing your changes::.
+
+ The `editinfo' file is often most useful together with the `rcsinfo'
+file, which can be used to specify a log message template.
+
+ Each line in the `editinfo' file consists of a regular expression
+and a command-line template. The template must include a program name,
+and can include any number of arguments. The full path to the current
+log message template file is appended to the template.
+
+ One thing that should be noted is that the `ALL' keyword is not
+supported. If more than one matching line is found, the first one is
+used. This can be useful for specifying a default edit script in a
+module, and then overriding it in a subdirectory.
-Index
-*****
+ If the repository name does not match any of the regular expressions
+in this file, the `DEFAULT' line is used, if it is specified.
+
+ If the edit script exits with a non-zero exit status, the commit is
+aborted.
+
+ Note: when CVS is accessing a remote repository, or when the `-m' or
+`-F' options to `cvs commit' are used, `editinfo' will not be consulted.
+There is no good workaround for this; use `verifymsg' instead.
* Menu:
-* -j (merging branches): Merging a branch.
-* -k (RCS kflags): Substitution modes.
-* .# files: update output.
-* .bashrc, setting CVSROOT in: Specifying a repository.
-* .cshrc, setting CVSROOT in: Specifying a repository.
-* .cvsrc file: ~/.cvsrc.
-* .profile, setting CVSROOT in: Specifying a repository.
-* .tcshrc, setting CVSROOT in: Specifying a repository.
-* /usr/local/cvsroot, as example repository: Repository.
-* :ext:: Connecting via rsh.
-* :kserver:: Kerberos authenticated.
-* :local:: Repository.
-* :pserver:: Password authentication client.
-* :server:: Connecting via rsh.
-* <<<<<<<: Conflicts example.
-* =======: Conflicts example.
-* >>>>>>>: Conflicts example.
-* __ files (VMS): update output.
-* A sample session: A sample session.
-* abandoning work: Editing files.
-* About this manual: Preface.
-* add (subcommand): Adding files.
-* Adding a tag: Tags.
-* Adding files: Adding files.
-* Admin (subcommand): admin.
-* Administrative files (intro): Intro administrative files.
-* Administrative files (reference): Administrative files.
-* Administrative files, editing them: Intro administrative files.
-* ALL in commitinfo: commitinfo.
-* annotate (subcommand): annotate.
-* Atomic transactions, lack of: Concurrency.
-* authenticated client, using: Password authentication client.
-* authenticating server, setting up: Password authentication server.
-* Author keyword: Keyword list.
-* Automatically ignored files: cvsignore.
-* Avoiding editor invocation: Common options.
-* bill of materials: Builds.
-* Binary files: Binary files.
-* Branch merge example: Merging a branch.
-* Branch number: Revision numbers.
-* Branch numbers: Creating a branch.
-* Branch, creating a: Creating a branch.
-* Branch, vendor-: Tracking sources.
-* Branches: Branches.
-* Branches motivation: Branches motivation.
-* Branches, copying changes between: Merging.
-* Branches, sticky: Sticky tags.
-* Bringing a file up to date: Updating a file.
-* Bugs, known in this manual: BUGS.
-* Bugs, reporting (CVS): What is CVS?.
-* Bugs, reporting (manual): BUGS.
-* builds: Builds.
-* Changes, copying between branches: Merging.
-* Changing a log message: admin options.
-* checked out copy, keeping: Keeping a checked out copy.
-* Checkin program: modules.
-* Checking commits: commitinfo.
-* Checking out source: Getting the source.
-* Checkout (subcommand): checkout.
-* Checkout program: modules.
-* checkout, as term for getting ready to edit: Editing files.
-* Checkout, example: Getting the source.
-* choosing, reserved or unreserved checkouts: Choosing a model.
-* Cleaning up: Cleaning up.
-* Client/Server Operation: Remote repositories.
-* Co (subcommand): checkout.
-* Command reference: Invoking CVS.
-* Command structure: Structure.
-* Comment leader: admin examples.
-* Commit (subcommand): commit.
-* Commit files: commit files.
-* Commit, when to: When to commit.
-* Commitinfo: commitinfo.
-* Committing changes: Committing your changes.
-* Common options: Common options.
-* Common syntax of info files: syntax.
-* compatibility, between CVS versions: Compatibility.
-* COMSPEC: Environment variables.
-* Conflict markers: Conflicts example.
-* Conflict resolution: Conflicts example.
-* Conflicts (merge example): Conflicts example.
-* Contributors (CVS program): What is CVS?.
-* Contributors (manual): Credits.
-* Copying changes: Merging.
-* Correcting a log message: admin options.
-* Creating a branch: Creating a branch.
-* Creating a project: Starting a new project.
-* Creating a repository: Creating a repository.
-* Credits (CVS program): What is CVS?.
-* Credits (manual): Credits.
-* CVS 1.6, and watches: Watches Compatibility.
-* CVS command structure: Structure.
-* CVS passwd file: Password authentication server.
-* CVS, history of: What is CVS?.
-* CVS, introduction to: What is CVS?.
-* CVS, versions of: Compatibility.
-* CVS_CLIENT_LOG: Environment variables.
-* CVS_CLIENT_PORT: Kerberos authenticated.
-* CVS_IGNORE_REMOTE_ROOT: Environment variables.
-* CVS_PASSFILE, environment variable: Password authentication client.
-* CVS_RCMD_PORT: Environment variables.
-* CVS_RSH: Environment variables.
-* CVS_SERVER: Connecting via rsh.
-* CVS_SERVER_SLEEP: Environment variables.
-* CVSEDITOR: Environment variables.
-* CVSEDITOR, environment variable: Committing your changes.
-* CVSIGNORE: Environment variables.
-* cvsignore (admin file), global: cvsignore.
-* CVSREAD: Environment variables.
-* CVSREAD, overriding: Global options.
-* CVSROOT: Environment variables.
-* cvsroot: Repository.
-* CVSROOT (file): Administrative files.
-* CVSROOT, environment variable: Specifying a repository.
-* CVSROOT, module name: Intro administrative files.
-* CVSROOT, multiple repositories: Multiple repositories.
-* CVSROOT, overriding: Global options.
-* CVSUMASK: File permissions.
-* CVSWRAPPERS: Environment variables.
-* cvswrappers (admin file): Wrappers.
-* CVSWRAPPERS, environment variable: Wrappers.
-* Date keyword: Keyword list.
-* Dates: Common options.
-* Decimal revision number: Revision numbers.
-* DEFAULT in commitinfo: commitinfo.
-* DEFAULT in editinfo: editinfo.
-* DEFAULT in verifymsg: verifymsg.
-* Defining a module: Defining the module.
-* Defining modules (intro): Intro administrative files.
-* Defining modules (reference manual): modules.
-* Deleting files: Removing files.
-* Deleting revisions: admin options.
-* Deleting sticky tags: Sticky tags.
-* Descending directories: Recursive behavior.
-* Diff: Viewing differences.
-* Diff (subcommand): diff.
-* Differences, merging: Merging two revisions.
-* Directories, moving: Moving directories.
-* directories, removing: Removing directories.
-* Directory, descending: Recursive behavior.
-* Disjoint repositories: Multiple repositories.
-* Distributing log messages: loginfo.
-* driver.c (merge example): Conflicts example.
-* edit (subcommand): Editing files.
-* editinfo (admin file): editinfo.
-* Editing administrative files: Intro administrative files.
-* Editing the modules file: Defining the module.
-* EDITOR: Environment variables.
-* Editor, avoiding invocation of: Common options.
-* EDITOR, environment variable: Committing your changes.
-* EDITOR, overriding: Global options.
-* Editor, specifying per module: editinfo.
-* editors (subcommand): Watch information.
-* emerge: Conflicts example.
-* Environment variables: Environment variables.
-* Errors, reporting (CVS): What is CVS?.
-* Errors, reporting (manual): BUGS.
-* Example of a work-session: A sample session.
-* Example of merge: Conflicts example.
-* Example, branch merge: Merging a branch.
-* Export (subcommand): export.
-* Export program: modules.
-* Fetching source: Getting the source.
-* File locking: Multiple developers.
-* File permissions: File permissions.
-* File status: File status.
-* Files, moving: Moving files.
-* Files, reference manual: Administrative files.
-* Fixing a log message: admin options.
-* Forcing a tag match: Common options.
-* Form for log message: rcsinfo.
-* Format of CVS commands: Structure.
-* Getting started: A sample session.
-* Getting the source: Getting the source.
-* Global cvsignore: cvsignore.
-* Global options: Global options.
-* Group: File permissions.
-* Header keyword: Keyword list.
-* History (subcommand): history.
-* History browsing: History browsing.
-* History file: history file.
-* History files: Repository files.
-* History of CVS: What is CVS?.
-* HOME: Environment variables.
-* HOMEPATH: Environment variables.
-* Id keyword: Keyword list.
-* Ident (shell command): Using keywords.
-* Identifying files: Keyword substitution.
-* Ignored files: cvsignore.
-* Ignoring files: cvsignore.
-* Import (subcommand): import.
-* Importing files: From files.
-* Importing files, from other version control systesm: From other version control systems.
-* Importing modules: First import.
-* Index: Index.
-* Info files (syntax): syntax.
-* Informing others: Informing others.
-* init (subcommand): Creating a repository.
-* Introduction to CVS: What is CVS?.
-* Invoking CVS: Invoking CVS.
-* Isolation: History browsing.
-* Join: Merging a branch.
-* keeping a checked out copy: Keeping a checked out copy.
-* kerberos: Kerberos authenticated.
-* Keyword expansion: Keyword substitution.
-* Keyword substitution: Keyword substitution.
-* Kflag: Substitution modes.
-* kinit: Kerberos authenticated.
-* Known bugs in this manual: BUGS.
-* Layout of repository: Repository.
-* Left-hand options: Global options.
-* Linear development: Revision numbers.
-* List, mailing list: What is CVS?.
-* Locally Added: File status.
-* Locally Modified: File status.
-* Locally Removed: File status.
-* Locker keyword: Keyword list.
-* Locking files: Multiple developers.
-* locks, cvs: Concurrency.
-* Log (subcommand): log.
-* Log information, saving: history file.
-* Log keyword: Keyword list.
-* Log keyword, selecting comment leader: admin examples.
-* Log message entry: Committing your changes.
-* Log message template: rcsinfo.
-* Log message, correcting: admin options.
-* log message, verifying: verifymsg.
-* Log messages: loginfo.
-* Log messages, editing: editinfo.
-* Login (subcommand): Password authentication client.
-* loginfo (admin file): loginfo.
-* LOGNAME: Environment variables.
-* Mail, automatic mail on commit: Informing others.
-* Mailing list: What is CVS?.
-* Mailing log messages: loginfo.
-* Main trunk (intro): Revision numbers.
-* Main trunk and branches: Branches.
-* make: Builds.
-* Many repositories: Multiple repositories.
-* Markers, conflict: Conflicts example.
-* Merge, an example: Conflicts example.
-* Merge, branch example: Merging a branch.
-* Merging: Merging.
-* Merging a branch: Merging a branch.
-* Merging a file: Updating a file.
-* Merging two revisions: Merging two revisions.
-* Modifications, copying between branches: Merging.
-* Module status: modules.
-* Module, defining: Defining the module.
-* Modules (admin file): modules.
-* Modules (intro): Basic concepts.
-* Modules file: Intro administrative files.
-* Modules file, changing: Defining the module.
-* Motivation for branches: Branches motivation.
-* Moving directories: Moving directories.
-* Moving files: Moving files.
-* Multiple developers: Multiple developers.
-* Multiple repositories: Multiple repositories.
-* Name keyword: Keyword list.
-* Name, symbolic (tag): Tags.
-* Needs Checkout: File status.
-* Needs Merge: File status.
-* Needs Patch: File status.
-* Newsgroups: What is CVS?.
-* notify (admin file): Getting Notified.
-* Nroff (selecting comment leader): admin examples.
-* Number, branch: Revision numbers.
-* Number, revision-: Revision numbers.
-* option defaults: ~/.cvsrc.
-* Options, global: Global options.
-* Outdating revisions: admin options.
-* Overlap: Updating a file.
-* Overriding CVSREAD: Global options.
-* Overriding CVSROOT: Global options.
-* Overriding EDITOR: Global options.
-* Overriding RCSBIN: Global options.
-* Overriding TMPDIR: Global options.
-* Parallel repositories: Multiple repositories.
-* passwd (admin file): Password authentication server.
-* password client, using: Password authentication client.
-* password server, setting up: Password authentication server.
-* PATH: Environment variables.
-* Per-module editor: editinfo.
-* Policy: When to commit.
-* Precommit checking: commitinfo.
-* Preface: Preface.
-* Pserver (subcommand): Password authentication server.
-* RCS history files: Repository files.
-* RCS keywords: Keyword list.
-* RCS revision numbers: Tags.
-* RCS, importing files from: From other version control systems.
-* RCS-style locking: Multiple developers.
-* RCSBIN: Environment variables.
-* RCSBIN, overriding: Global options.
-* RCSfile keyword: Keyword list.
-* rcsinfo (admin file): rcsinfo.
-* RCSINIT: Environment variables.
-* Rdiff (subcommand): rdiff.
-* read-only files, and -r: Global options.
-* read-only files, and CVSREAD: Environment variables.
-* read-only files, and watches: Setting a watch.
-* read-only files, in repository: File permissions.
-* Read-only mode: Global options.
-* read-only repository access: Read-only access.
-* readers (admin file): Read-only access.
-* Recursive (directory descending): Recursive behavior.
-* Reference manual (files): Administrative files.
-* Reference manual for variables: Environment variables.
-* Reference, commands: Invoking CVS.
-* regular expression syntax: syntax.
-* Release (subcommand): release.
-* Releases, revisions and versions: Versions revisions releases.
-* Releasing your working copy: Cleaning up.
-* Remote repositories: Remote repositories.
-* Remove (subcommand): Removing files.
-* Removing a change: Merging two revisions.
-* removing directories: Removing directories.
-* Removing files: Removing files.
-* Removing your working copy: Cleaning up.
-* Renaming directories: Moving directories.
-* Renaming files: Moving files.
-* Replacing a log message: admin options.
-* Reporting bugs (CVS): What is CVS?.
-* Reporting bugs (manual): BUGS.
-* Repositories, multiple: Multiple repositories.
-* Repositories, remote: Remote repositories.
-* Repository (intro): Repository.
-* Repository, example: Repository.
-* Repository, how data is stored: Repository storage.
-* Repository, setting up: Creating a repository.
-* reserved checkouts: Multiple developers.
-* Resetting sticky tags: Sticky tags.
-* Resolving a conflict: Conflicts example.
-* Restoring old version of removed file: Sticky tags.
-* Resurrecting old version of dead file: Sticky tags.
-* Retrieving an old revision using tags: Tags.
-* reverting to repository version: Editing files.
-* Revision keyword: Keyword list.
-* Revision management: Revision management.
-* Revision numbers: Revision numbers.
-* Revision tree: Revision numbers.
-* Revision tree, making branches: Branches.
-* Revisions, merging differences between: Merging two revisions.
-* Revisions, versions and releases: Versions revisions releases.
-* Right-hand options: Common options.
-* rsh: Connecting via rsh.
-* Rtag (subcommand): rtag.
-* rtag, creating a branch using: Creating a branch.
-* Saving space: admin options.
-* SCCS, importing files from: From other version control systems.
-* Security: File permissions.
-* server, CVS: Remote repositories.
-* setgid: File permissions.
-* Setting up a repository: Creating a repository.
-* setuid: File permissions.
-* Signum Support: Preface.
-* Source keyword: Keyword list.
-* Source, getting CVS source: What is CVS?.
-* Source, getting from CVS: Getting the source.
-* Specifying dates: Common options.
-* Spreading information: Informing others.
-* Starting a project with CVS: Starting a new project.
-* State keyword: Keyword list.
-* Status (subcommand): status.
-* Status of a file: File status.
-* Status of a module: modules.
-* sticky date: Sticky tags.
-* Sticky tags: Sticky tags.
-* Sticky tags, resetting: Sticky tags.
-* Storing log messages: loginfo.
-* Structure: Structure.
-* Subdirectories: Recursive behavior.
-* Support, getting CVS support: Preface.
-* Symbolic name (tag): Tags.
-* Syntax of info files: syntax.
-* Tag (subcommand): tag.
-* Tag program: modules.
-* tag, command, introduction: Tags.
-* tag, example: Tags.
-* Tag, retrieving old revisions: Tags.
-* Tag, symbolic name: Tags.
-* taginfo: user-defined logging.
-* Tags: Tags.
-* Tags, sticky: Sticky tags.
-* tc, Trivial Compiler (example): A sample session.
-* Team of developers: Multiple developers.
-* TEMP: Environment variables.
-* Template for log message: rcsinfo.
-* temporary files, location of: Environment variables.
-* Third-party sources: Tracking sources.
-* Time: Common options.
-* timezone, in input: Common options.
-* timezone, in output: log.
-* TMP: Environment variables.
-* TMPDIR: Environment variables.
-* TMPDIR, overriding: Global options.
-* Trace: Global options.
-* Traceability: History browsing.
-* Tracking sources: Tracking sources.
-* Transactions, atomic, lack of: Concurrency.
-* Trivial Compiler (example): A sample session.
-* Typical repository: Repository.
-* umask, for repository files: File permissions.
-* Undoing a change: Merging two revisions.
-* unedit (subcommand): Editing files.
-* Unknown: File status.
-* unreserved checkouts: Multiple developers.
-* Unresolved Conflict: File status.
-* Up-to-date: File status.
-* Update (subcommand): update.
-* Update program: modules.
-* update, introduction: Updating a file.
-* Updating a file: Updating a file.
-* USER: Environment variables.
-* user aliases: Password authentication server.
-* users (admin file): Getting Notified.
-* Vendor: Tracking sources.
-* Vendor branch: Tracking sources.
-* verifymsg (admin file): verifymsg.
-* versions, of CVS: Compatibility.
-* Versions, revisions and releases: Versions revisions releases.
-* Viewing differences: Viewing differences.
-* watch add (subcommand): Getting Notified.
-* watch off (subcommand): Setting a watch.
-* watch on (subcommand): Setting a watch.
-* watch remove (subcommand): Getting Notified.
-* watchers (subcommand): Watch information.
-* Watches: Watches.
-* Wdiff (import example): First import.
-* What (shell command): Using keywords.
-* What branches are good for: Branches motivation.
-* What is CVS?: What is CVS?.
-* When to commit: When to commit.
-* Work-session, example of: A sample session.
-* Working copy: Multiple developers.
-* Working copy, removing: Cleaning up.
-* Wrappers: Wrappers.
-* writers (admin file): Read-only access.
-* zone, time, in input: Common options.
-* zone, time, in output: log.
+* editinfo example:: Editinfo example
+
+
+File: cvs.info, Node: editinfo example, Up: editinfo
+
+Editinfo example
+----------------
+
+ The following is a little silly example of a `editinfo' file,
+together with the corresponding `rcsinfo' file, the log message
+template and an editor script. We begin with the log message template.
+We want to always record a bug-id number on the first line of the log
+message. The rest of log message is free text. The following template
+is found in the file `/usr/cvssupport/tc.template'.
+
+ BugId:
+
+ The script `/usr/cvssupport/bugid.edit' is used to edit the log
+message.
+
+ #!/bin/sh
+ #
+ # bugid.edit filename
+ #
+ # Call $EDITOR on FILENAME, and verify that the
+ # resulting file contains a valid bugid on the first
+ # line.
+ if [ "x$EDITOR" = "x" ]; then EDITOR=vi; fi
+ if [ "x$CVSEDITOR" = "x" ]; then CVSEDITOR=$EDITOR; fi
+ $CVSEDITOR $1
+ until head -1|grep '^BugId:[ ]*[0-9][0-9]*$' < $1
+ do echo -n "No BugId found. Edit again? ([y]/n)"
+ read ans
+ case ${ans} in
+ n*) exit 1;;
+ esac
+ $CVSEDITOR $1
+ done
+
+ The `editinfo' file contains this line:
+
+ ^tc /usr/cvssupport/bugid.edit
+
+ The `rcsinfo' file contains this line:
+
+ ^tc /usr/cvssupport/tc.template
+
+
+File: cvs.info, Node: loginfo, Next: rcsinfo, Prev: editinfo, Up: Administrative files
+
+Loginfo
+=======
+
+ The `loginfo' file is used to control where `cvs commit' log
+information is sent. The first entry on a line is a regular expression
+which is tested against the directory that the change is being made to,
+relative to the `$CVSROOT'. If a match is found, then the remainder of
+the line is a filter program that should expect log information on its
+standard input.
+
+ If the repository name does not match any of the regular expressions
+in this file, the `DEFAULT' line is used, if it is specified.
+
+ All occurrences of the name `ALL' appearing as a regular expression
+are used in addition to the first matching regular expression or
+`DEFAULT'.
+
+ The first matching regular expression is used.
+
+ *Note commit files::, for a description of the syntax of the
+`loginfo' file.
+
+ The user may specify a format string as part of the filter. The
+string is composed of a `%' followed by a space, or followed by a single
+format character, or followed by a set of format characters surrounded
+by `{' and `}' as separators. The format characters are:
+
+s
+ file name
+
+V
+ old version number (pre-checkin)
+
+v
+ new version number (post-checkin)
+
+ All other characters that appear in a format string expand to an
+empty field (commas separating fields are still provided).
+
+ For example, some valid format strings are `%', `%s', `%{s}', and
+`%{sVv}'.
+
+ The output will be a string of tokens separated by spaces. For
+backwards compatibility, the first token will be the repository
+subdirectory. The rest of the tokens will be comma-delimited lists of
+the information requested in the format string. For example, if
+`/u/src/master/yoyodyne/tc' is the repository, `%{sVv}' is the format
+string, and three files (ChangeLog, Makefile, foo.c) were modified, the
+output might be:
+
+ yoyodyne/tc ChangeLog,1.1,1.2 Makefile,1.3,1.4 foo.c,1.12,1.13
+
+ As another example, `%{}' means that only the name of the repository
+will be generated.
+
+ Note: when CVS is accessing a remote repository, `loginfo' will be
+run on the _remote_ (i.e., server) side, not the client side (*note
+Remote repositories::).
+
+* Menu:
+
+* loginfo example:: Loginfo example
+* Keeping a checked out copy:: Updating a tree on every checkin
+
+
+File: cvs.info, Node: loginfo example, Next: Keeping a checked out copy, Up: loginfo
+
+Loginfo example
+---------------
+
+ The following `loginfo' file, together with the tiny shell-script
+below, appends all log messages to the file
+`$CVSROOT/CVSROOT/commitlog', and any commits to the administrative
+files (inside the `CVSROOT' directory) are also logged in
+`/usr/adm/cvsroot-log'. Commits to the `prog1' directory are mailed to
+ceder.
+
+ ALL /usr/local/bin/cvs-log $CVSROOT/CVSROOT/commitlog $USER
+ ^CVSROOT /usr/local/bin/cvs-log /usr/adm/cvsroot-log
+ ^prog1 Mail -s %s ceder
+
+ The shell-script `/usr/local/bin/cvs-log' looks like this:
+
+ #!/bin/sh
+ (echo "------------------------------------------------------";
+ echo -n $2" ";
+ date;
+ echo;
+ cat) >> $1
+
+
+File: cvs.info, Node: Keeping a checked out copy, Prev: loginfo example, Up: loginfo
+
+Keeping a checked out copy
+--------------------------
+
+ It is often useful to maintain a directory tree which contains files
+which correspond to the latest version in the repository. For example,
+other developers might want to refer to the latest sources without
+having to check them out, or you might be maintaining a web site with
+CVS and want every checkin to cause the files used by the web server to
+be updated.
+
+ The way to do this is by having loginfo invoke `cvs update'. Doing
+so in the naive way will cause a problem with locks, so the `cvs update'
+must be run in the background. Here is an example for unix (this
+should all be on one line):
+
+ ^cyclic-pages (date; cat; (sleep 2; cd /u/www/local-docs;
+ cvs -q update -d) &) >> $CVSROOT/CVSROOT/updatelog 2>&1
+
+ This will cause checkins to repository directories starting with
+`cyclic-pages' to update the checked out tree in `/u/www/local-docs'.
+
+
+File: cvs.info, Node: rcsinfo, Next: cvsignore, Prev: loginfo, Up: Administrative files
+
+Rcsinfo
+=======
+
+ The `rcsinfo' file can be used to specify a form to edit when
+filling out the commit log. The `rcsinfo' file has a syntax similar to
+the `verifymsg', `commitinfo' and `loginfo' files. *Note syntax::.
+Unlike the other files the second part is _not_ a command-line
+template. Instead, the part after the regular expression should be a
+full pathname to a file containing the log message template.
+
+ If the repository name does not match any of the regular expressions
+in this file, the `DEFAULT' line is used, if it is specified.
+
+ All occurrences of the name `ALL' appearing as a regular expression
+are used in addition to the first matching regular expression or
+`DEFAULT'.
+
+ The log message template will be used as a default log message. If
+you specify a log message with `cvs commit -m MESSAGE' or `cvs commit -f
+FILE' that log message will override the template.
+
+ *Note verifymsg::, for an example `rcsinfo' file.
+ When CVS is accessing a remote repository, the contents of `rcsinfo'
+at the time a directory is first checked out will specify a template
+which does not then change. If you edit `rcsinfo' or its templates,
+you may need to check out a new working directory.
diff --git a/gnu/usr.bin/cvs/doc/cvs.info-9 b/gnu/usr.bin/cvs/doc/cvs.info-9
index 64931cb0e91..3b644fe1ce9 100644
--- a/gnu/usr.bin/cvs/doc/cvs.info-9
+++ b/gnu/usr.bin/cvs/doc/cvs.info-9
@@ -1,5 +1,8 @@
-This is Info file cvs.info, produced by Makeinfo-1.64 from the input
-file ../../work/ccvs/doc/cvs.texinfo.
+This is cvs.info, produced by makeinfo version 4.0 from cvs.texinfo.
+
+START-INFO-DIR-ENTRY
+* CVS: (cvs). Concurrent Versions System
+END-INFO-DIR-ENTRY
Copyright (C) 1992, 1993 Signum Support AB Copyright (C) 1993, 1994
Free Software Foundation, Inc.
@@ -10,561 +13,632 @@ preserved on all copies.
Permission is granted to copy and distribute modified versions of
this manual under the conditions for verbatim copying, provided also
-that the section entitled "GNU General Public License" is included
-exactly as in the original, and provided that the entire resulting
-derived work is distributed under the terms of a permission notice
-identical to this one.
+that the entire resulting derived work is distributed under the terms
+of a permission notice identical to this one.
Permission is granted to copy and distribute translations of this
manual into another language, under the above conditions for modified
-versions, except that the section entitled "GNU General Public License"
-and this permission notice may be included in translations approved by
-the Free Software Foundation instead of in the original English.
+versions, except that this permission notice may be stated in a
+translation approved by the Free Software Foundation.

-File: cvs.info, Node: Index, Prev: Copying, Up: Top
+File: cvs.info, Node: Index, Prev: BUGS, Up: Top
Index
*****
* Menu:
-* !, in modules file: Excluding directories.
-* &, in modules file: Ampersand modules.
-* -a, in modules file: Alias modules.
-* -d, in modules file: Module options.
-* -e, in modules file: Module options.
-* -i, in modules file: Module options.
-* -j (merging branches): Merging a branch.
-* -k (keyword substitution): Substitution modes.
-* -o, in modules file: Module options.
-* -s, in modules file: Module options.
-* -t, in modules file: Module options.
-* -u, in modules file: Module options.
-* .# files: update output.
-* .bashrc, setting CVSROOT in: Specifying a repository.
-* .cshrc, setting CVSROOT in: Specifying a repository.
-* .cvsrc file: ~/.cvsrc.
-* .profile, setting CVSROOT in: Specifying a repository.
-* .tcshrc, setting CVSROOT in: Specifying a repository.
+* !, in modules file: Excluding directories.
+* #cvs.lock, removing: Concurrency.
+* #cvs.lock, technical details: Locks.
+* #cvs.rfl, and backups: Backing up.
+* #cvs.rfl, removing: Concurrency.
+* #cvs.rfl, technical details: Locks.
+* #cvs.tfl: Locks.
+* #cvs.wfl, removing: Concurrency.
+* #cvs.wfl, technical details: Locks.
+* &, in modules file: Ampersand modules.
+* -a, in modules file: Alias modules.
+* -d, in modules file: Module options.
+* -e, in modules file <1>: Module options.
+* -e, in modules file: Module program options.
+* -i, in modules file <1>: Module program options.
+* -i, in modules file: Module options.
+* -j (merging branches): Merging a branch.
+* -j (merging branches), and keyword substitution: Merging and keywords.
+* -k (keyword substitution): Substitution modes.
+* -kk, to avoid conflicts during a merge: Merging and keywords.
+* -o, in modules file <1>: Module options.
+* -o, in modules file: Module program options.
+* -s, in modules file: Module options.
+* -t, in modules file <1>: Module options.
+* -t, in modules file: Module program options.
+* -u, in modules file <1>: Module program options.
+* -u, in modules file: Module options.
+* .# files: update output.
+* .bashrc, setting CVSROOT in: Specifying a repository.
+* .cshrc, setting CVSROOT in: Specifying a repository.
+* .cvsrc file: ~/.cvsrc.
+* .profile, setting CVSROOT in: Specifying a repository.
+* .tcshrc, setting CVSROOT in: Specifying a repository.
* /usr/local/cvsroot, as example repository: Repository.
-* :ext:: Connecting via rsh.
-* :gserver:: GSSAPI authenticated.
-* :kserver:: Kerberos authenticated.
-* :local:: Repository.
-* :pserver:: Password authentication client.
-* :server:: Connecting via rsh.
-* <<<<<<<: Conflicts example.
-* =======: Conflicts example.
-* >>>>>>>: Conflicts example.
-* __ files (VMS): update output.
-* abandoning work: Editing files.
-* Access a branch: Accessing branches.
-* add (subcommand): Adding files.
-* Adding a tag: Tags.
-* Adding files: Adding files.
-* Admin (subcommand): admin.
-* Administrative files (intro): Intro administrative files.
-* Administrative files (reference): Administrative files.
-* Administrative files, editing them: Intro administrative files.
-* Alias modules: Alias modules.
-* ALL in commitinfo: commitinfo.
-* Ampersand modules: Ampersand modules.
-* annotate (subcommand): annotate.
-* Atomic transactions, lack of: Concurrency.
-* attic: Attic.
-* authenticated client, using: Password authentication client.
-* authenticating server, setting up: Password authentication server.
-* authentication, stream: Global options.
-* Author keyword: Keyword list.
-* Automatically ignored files: cvsignore.
-* Avoiding editor invocation: Common options.
-* Backing up, repository: Backing up.
-* Base directory, in CVS directory: Working directory storage.
-* BASE, as reserved tag name: Tags.
-* BASE, special tag: Common options.
-* Baserev file, in CVS directory: Working directory storage.
-* Baserev.tmp file, in CVS directory: Working directory storage.
-* bill of materials: Builds.
-* Binary files: Binary files.
-* Branch merge example: Merging a branch.
-* Branch number <1>: Branches and revisions.
-* Branch number: Revision numbers.
-* Branch, accessing: Accessing branches.
-* Branch, check out: Accessing branches.
-* Branch, creating a: Creating a branch.
-* Branch, identifying: Accessing branches.
-* Branch, retrieving: Accessing branches.
-* Branch, vendor-: Tracking sources.
-* Branches motivation: Branches motivation.
-* Branches, copying changes between: Branching and merging.
-* Branches, sticky: Accessing branches.
-* Branching: Branching and merging.
-* Bringing a file up to date: Updating a file.
-* Bugs in this manual or CVS: BUGS.
-* Bugs, reporting: BUGS.
-* builds: Builds.
-* Changes, copying between branches: Branching and merging.
-* Changing a log message: admin options.
-* Check out a branch: Accessing branches.
-* checked out copy, keeping: Keeping a checked out copy.
-* Checkin program: Module options.
-* Checkin.prog file, in CVS directory: Working directory storage.
-* Checking commits: commitinfo.
-* Checking out source: Getting the source.
-* Checkout (subcommand): checkout.
-* Checkout program: Module options.
-* checkout, as term for getting ready to edit: Editing files.
-* Checkout, example: Getting the source.
-* checkoutlist: CVSROOT storage.
-* choosing, reserved or unreserved checkouts: Choosing a model.
-* Cleaning up: Cleaning up.
-* Client/Server Operation: Remote repositories.
-* Co (subcommand): checkout.
-* Command reference: Invoking CVS.
-* Command structure: Structure.
-* comment leader: admin options.
-* Commit (subcommand): commit.
-* Commit files: commit files.
-* Commit, when to: When to commit.
-* Commitinfo: commitinfo.
-* Committing changes: Committing your changes.
-* Common options: Common options.
-* Common syntax of info files: syntax.
-* compatibility, between CVS versions: Compatibility.
-* COMSPEC, environment variable: Environment variables.
-* config, in CVSROOT: config.
-* Conflict markers: Conflicts example.
-* Conflict resolution: Conflicts example.
-* Conflicts (merge example): Conflicts example.
-* Contributors (CVS program): What is CVS?.
-* Contributors (manual): Credits.
-* copying a repository: Moving a repository.
-* Copying changes: Branching and merging.
-* Correcting a log message: admin options.
-* Creating a branch: Creating a branch.
-* Creating a project: Starting a new project.
-* Creating a repository: Creating a repository.
-* Credits (CVS program): What is CVS?.
-* Credits (manual): Credits.
-* CVS 1.6, and watches: Watches Compatibility.
-* CVS command structure: Structure.
-* CVS directory, in repository: CVS in repository.
-* CVS directory, in working directory: Working directory storage.
-* CVS passwd file: Password authentication server.
-* CVS, history of: What is CVS?.
-* CVS, introduction to: What is CVS?.
-* CVS, versions of: Compatibility.
-* CVS/Base directory: Working directory storage.
-* CVS/Baserev file: Working directory storage.
-* CVS/Baserev.tmp file: Working directory storage.
-* CVS/Checkin.prog file: Working directory storage.
-* CVS/Entries file: Working directory storage.
-* CVS/Entries.Backup file: Working directory storage.
-* CVS/Entries.Log file: Working directory storage.
-* CVS/Entries.Static file: Working directory storage.
-* CVS/Notify file: Working directory storage.
-* CVS/Notify.tmp file: Working directory storage.
-* CVS/Repository file: Working directory storage.
-* CVS/Root file: Specifying a repository.
-* CVS/Tag file: Working directory storage.
-* CVS/Template file: Working directory storage.
-* CVS/Update.prog file: Working directory storage.
-* CVS_CLIENT_LOG, environment variable: Environment variables.
-* CVS_CLIENT_PORT: Kerberos authenticated.
+* :ext:, setting up: Connecting via rsh.
+* :ext:, troubleshooting: Connection.
+* :fork:, setting up: Connecting via fork.
+* :gserver:, setting up: GSSAPI authenticated.
+* :kserver:, setting up: Kerberos authenticated.
+* :local:, setting up: Repository.
+* :pserver:, setting up: Password authentication client.
+* :pserver:, troubleshooting: Connection.
+* :server:, setting up: Connecting via rsh.
+* :server:, troubleshooting: Connection.
+* <<<<<<<: Conflicts example.
+* =======: Conflicts example.
+* >>>>>>>: Conflicts example.
+* __ files (VMS): update output.
+* Abandoning work: Editing files.
+* Access a branch: Accessing branches.
+* add (subcommand): Adding files.
+* Adding a tag: Tags.
+* Adding files: Adding files.
+* Admin (subcommand): admin.
+* Administrative files (intro): Intro administrative files.
+* Administrative files (reference): Administrative files.
+* Administrative files, editing them: Intro administrative files.
+* Alias modules: Alias modules.
+* ALL in commitinfo: commitinfo.
+* Ampersand modules: Ampersand modules.
+* annotate (subcommand): annotate.
+* Atomic transactions, lack of: Concurrency.
+* Attic: Attic.
+* Authenticated client, using: Password authentication client.
+* Authenticating server, setting up: Password authentication server.
+* Authentication, stream: Global options.
+* Author keyword: Keyword list.
+* Automatically ignored files: cvsignore.
+* Avoiding editor invocation: Common options.
+* Backing up, repository: Backing up.
+* Base directory, in CVS directory: Working directory storage.
+* BASE, as reserved tag name: Tags.
+* BASE, special tag: Common options.
+* Baserev file, in CVS directory: Working directory storage.
+* Baserev.tmp file, in CVS directory: Working directory storage.
+* Bill of materials: Builds.
+* Binary files: Binary files.
+* Branch merge example: Merging a branch.
+* Branch number <1>: Branches and revisions.
+* Branch number: Revision numbers.
+* Branch, accessing: Accessing branches.
+* Branch, check out: Accessing branches.
+* Branch, creating a: Creating a branch.
+* Branch, identifying: Accessing branches.
+* Branch, retrieving: Accessing branches.
+* Branch, vendor-: Tracking sources.
+* Branches motivation: Branches motivation.
+* Branches, copying changes between: Branching and merging.
+* Branches, sticky: Accessing branches.
+* Branching: Branching and merging.
+* Bringing a file up to date: Updating a file.
+* Bugs in this manual or CVS: BUGS.
+* Bugs, reporting: BUGS.
+* Builds: Builds.
+* Changes, copying between branches: Branching and merging.
+* Changing a log message: admin options.
+* Check out a branch: Accessing branches.
+* Checked out copy, keeping: Keeping a checked out copy.
+* Checkin program: Module options.
+* Checkin.prog file, in CVS directory: Working directory storage.
+* Checking commits: commitinfo.
+* Checking out source: Getting the source.
+* checkout (subcommand): checkout.
+* Checkout program: Module options.
+* Checkout, as term for getting ready to edit: Editing files.
+* Checkout, example: Getting the source.
+* checkoutlist: checkoutlist.
+* Choosing, reserved or unreserved checkouts: Choosing a model.
+* Cleaning up: Cleaning up.
+* Client/Server Operation: Remote repositories.
+* Client/Server Operation, port specification <1>: Remote repositories.
+* Client/Server Operation, port specification: Password authentication server.
+* co (subcommand): checkout.
+* Command reference: Invoking CVS.
+* Command structure: Structure.
+* Comment leader: admin options.
+* commit (subcommand): commit.
+* Commit files: commit files.
+* Commit, when to: When to commit.
+* Commitinfo: commitinfo.
+* Committing changes: Committing your changes.
+* Common options: Common options.
+* Common syntax of info files: syntax.
+* Compatibility, between CVS versions: Compatibility.
+* Compression <1>: Global options.
+* Compression: Invoking CVS.
+* COMSPEC, environment variable: Environment variables.
+* config, in CVSROOT: config.
+* Conflict markers: Conflicts example.
+* Conflict resolution: Conflicts example.
+* Conflicts (merge example): Conflicts example.
+* Contributors (CVS program): What is CVS?.
+* Contributors (manual): Credits.
+* Copying a repository: Moving a repository.
+* Copying changes: Branching and merging.
+* Correcting a log message: admin options.
+* Creating a branch: Creating a branch.
+* Creating a project: Starting a new project.
+* Creating a repository: Creating a repository.
+* Credits (CVS program): What is CVS?.
+* Credits (manual): Credits.
+* CVS 1.6, and watches: Watches Compatibility.
+* CVS command structure: Structure.
+* CVS directory, in repository: CVS in repository.
+* CVS directory, in working directory: Working directory storage.
+* CVS passwd file: Password authentication server.
+* CVS, history of: What is CVS?.
+* CVS, introduction to: What is CVS?.
+* CVS, versions of: Compatibility.
+* CVS/Base directory: Working directory storage.
+* CVS/Baserev file: Working directory storage.
+* CVS/Baserev.tmp file: Working directory storage.
+* CVS/Checkin.prog file: Working directory storage.
+* CVS/Entries file: Working directory storage.
+* CVS/Entries.Backup file: Working directory storage.
+* CVS/Entries.Log file: Working directory storage.
+* CVS/Entries.Static file: Working directory storage.
+* CVS/Notify file: Working directory storage.
+* CVS/Notify.tmp file: Working directory storage.
+* CVS/Repository file: Working directory storage.
+* CVS/Root file: Specifying a repository.
+* CVS/Tag file: Working directory storage.
+* CVS/Template file: Working directory storage.
+* CVS/Update.prog file: Working directory storage.
+* CVS_CLIENT_LOG, environment variable: Environment variables.
+* CVS_CLIENT_PORT: Kerberos authenticated.
* CVS_IGNORE_REMOTE_ROOT, environment variable: Environment variables.
-* CVS_PASSFILE, environment variable: Password authentication client.
-* CVS_RCMD_PORT, environment variable: Environment variables.
-* CVS_RSH, environment variable: Environment variables.
-* CVS_SERVER, environment variable: Connecting via rsh.
+* CVS_PASSFILE, environment variable: Password authentication client.
+* CVS_RCMD_PORT, environment variable: Environment variables.
+* CVS_RSH, environment variable: Environment variables.
+* CVS_SERVER, and :fork:: Connecting via fork.
+* CVS_SERVER, environment variable: Connecting via rsh.
* CVS_SERVER_SLEEP, environment variable: Environment variables.
-* CVSEDITOR, environment variable: Committing your changes.
-* cvsignore (admin file), global: cvsignore.
-* CVSIGNORE, environment variable: Environment variables.
-* CVSREAD, environment variable: Environment variables.
-* CVSREAD, overriding: Global options.
-* cvsroot: Repository.
-* CVSROOT (file): Administrative files.
-* CVSROOT, environment variable: Specifying a repository.
-* CVSROOT, module name: Intro administrative files.
-* CVSROOT, multiple repositories: Multiple repositories.
-* CVSROOT, overriding: Global options.
-* CVSROOT, storage of files: CVSROOT storage.
-* CVSROOT/config: config.
-* CVSUMASK, environment variable: File permissions.
-* cvswrappers (admin file): Wrappers.
+* cvsadmin: admin.
+* CVSEDITOR, environment variable: Committing your changes.
+* CVSEDITOR, internal variable: Variables.
+* cvsignore (admin file), global: cvsignore.
+* CVSIGNORE, environment variable: Environment variables.
+* CVSREAD, environment variable: Environment variables.
+* CVSREAD, overriding: Global options.
+* cvsroot: Repository.
+* CVSROOT (file): Administrative files.
+* CVSROOT, environment variable: Specifying a repository.
+* CVSROOT, internal variable: Variables.
+* CVSROOT, module name: Intro administrative files.
+* CVSROOT, multiple repositories: Multiple repositories.
+* CVSROOT, overriding: Global options.
+* CVSROOT, storage of files: CVSROOT storage.
+* CVSROOT/config: config.
+* CVSUMASK, environment variable: File permissions.
+* cvswrappers (admin file): Wrappers.
* CVSWRAPPERS, environment variable <1>: Environment variables.
-* CVSWRAPPERS, environment variable: Wrappers.
-* Cyclic Software: BUGS.
-* Date keyword: Keyword list.
-* Dates: Common options.
-* dead state: Attic.
-* Decimal revision number: Revision numbers.
-* DEFAULT in commitinfo: commitinfo.
-* DEFAULT in editinfo: editinfo.
-* DEFAULT in verifymsg: verifymsg.
-* Defining a module: Defining the module.
-* Defining modules (intro): Intro administrative files.
-* Defining modules (reference manual): modules.
-* Deleting files: Removing files.
-* Deleting revisions: admin options.
-* Deleting sticky tags: Sticky tags.
-* Descending directories: Recursive behavior.
-* Diff: Viewing differences.
-* Diff (subcommand): diff.
-* Differences, merging: Merging two revisions.
-* Directories, moving: Moving directories.
-* directories, removing: Removing directories.
-* Directory, descending: Recursive behavior.
-* Disjoint repositories: Multiple repositories.
-* Distributing log messages: loginfo.
-* driver.c (merge example): Conflicts example.
-* edit (subcommand): Editing files.
-* editinfo (admin file): editinfo.
-* Editing administrative files: Intro administrative files.
-* Editing the modules file: Defining the module.
-* Editor, avoiding invocation of: Common options.
-* EDITOR, environment variable: Committing your changes.
-* EDITOR, overriding: Global options.
-* Editor, specifying per module: editinfo.
-* editors (subcommand): Watch information.
-* emerge: Conflicts example.
-* encryption: Global options.
-* Entries file, in CVS directory: Working directory storage.
+* CVSWRAPPERS, environment variable: Wrappers.
+* Date keyword: Keyword list.
+* Dates: Common options.
+* Dead state: Attic.
+* Decimal revision number: Revision numbers.
+* DEFAULT in commitinfo: commitinfo.
+* DEFAULT in editinfo: editinfo.
+* DEFAULT in verifymsg: verifymsg.
+* Defining a module: Defining the module.
+* Defining modules (intro): Intro administrative files.
+* Defining modules (reference manual): modules.
+* Deleting files: Removing files.
+* Deleting revisions: admin options.
+* Deleting sticky tags: Sticky tags.
+* Deleting tags: Modifying tags.
+* Descending directories: Recursive behavior.
+* Device nodes: Special Files.
+* Diff: Viewing differences.
+* diff (subcommand): diff.
+* Differences, merging: Merging two revisions.
+* Directories, moving: Moving directories.
+* Directories, removing: Removing directories.
+* Directory, descending: Recursive behavior.
+* Disjoint repositories: Multiple repositories.
+* Distributing log messages: loginfo.
+* driver.c (merge example): Conflicts example.
+* edit (subcommand): Editing files.
+* editinfo (admin file): editinfo.
+* Editing administrative files: Intro administrative files.
+* Editing the modules file: Defining the module.
+* Editor, avoiding invocation of: Common options.
+* EDITOR, environment variable: Committing your changes.
+* EDITOR, internal variable: Variables.
+* EDITOR, overriding: Global options.
+* Editor, specifying per module: editinfo.
+* editors (subcommand): Watch information.
+* emerge: Conflicts example.
+* Encryption: Global options.
+* Entries file, in CVS directory: Working directory storage.
* Entries.Backup file, in CVS directory: Working directory storage.
-* Entries.Log file, in CVS directory: Working directory storage.
+* Entries.Log file, in CVS directory: Working directory storage.
* Entries.Static file, in CVS directory: Working directory storage.
-* Environment variables: Environment variables.
-* Errors, reporting: BUGS.
-* Example of a work-session: A sample session.
-* Example of merge: Conflicts example.
-* Example, branch merge: Merging a branch.
-* excluding directories, in modules file: Excluding directories.
-* exit status, of commitinfo: commitinfo.
-* exit status, of CVS: Exit status.
-* exit status, of editor: Error messages.
-* exit status, of taginfo: user-defined logging.
-* exit status, of verifymsg: verifymsg.
-* Export (subcommand): export.
-* Export program: Module options.
-* Fetching source: Getting the source.
-* File had conflicts on merge: File status.
-* File locking: Multiple developers.
-* File permissions, general: File permissions.
-* File permissions, Windows-specific: Windows permissions.
-* File status: File status.
-* Files, moving: Moving files.
-* Files, reference manual: Administrative files.
-* Fixing a log message: admin options.
-* Forcing a tag match: Common options.
-* Form for log message: rcsinfo.
-* Format of CVS commands: Structure.
-* Getting started: A sample session.
-* Getting the source: Getting the source.
-* Global cvsignore: cvsignore.
-* Global options: Global options.
-* Group: File permissions.
-* GSSAPI: GSSAPI authenticated.
-* HEAD, as reserved tag name: Tags.
-* HEAD, special tag: Common options.
-* Header keyword: Keyword list.
-* History (subcommand): history.
-* History browsing: History browsing.
-* History file: history file.
-* History files: Repository files.
-* History of CVS: What is CVS?.
-* HOME, environment variable: Environment variables.
-* HOMEDRIVE, environment variable: Environment variables.
-* HOMEPATH, environment variable: Environment variables.
-* Id keyword: Keyword list.
-* Ident (shell command): Using keywords.
-* Identifying a branch: Accessing branches.
-* Identifying files: Keyword substitution.
-* Ignored files: cvsignore.
-* Ignoring files: cvsignore.
-* Import (subcommand): import.
-* Importing files: From files.
+* Environment variables: Environment variables.
+* environment variables, passed to administrative files: Variables.
+* Errors, reporting: BUGS.
+* Example of a work-session: A sample session.
+* Example of merge: Conflicts example.
+* Example, branch merge: Merging a branch.
+* Excluding directories, in modules file: Excluding directories.
+* Exit status, of commitinfo: commitinfo.
+* Exit status, of CVS: Exit status.
+* Exit status, of editor: Error messages.
+* Exit status, of taginfo: user-defined logging.
+* Exit status, of verifymsg: verifymsg.
+* export (subcommand): export.
+* Export program: Module options.
+* Fetching source: Getting the source.
+* File had conflicts on merge: File status.
+* File locking: Multiple developers.
+* File permissions, general: File permissions.
+* File permissions, Windows-specific: Windows permissions.
+* File status: File status.
+* Files, moving: Moving files.
+* Files, reference manual: Administrative files.
+* Fixing a log message: admin options.
+* Forcing a tag match: Common options.
+* fork, access method: Connecting via fork.
+* Form for log message: rcsinfo.
+* Format of CVS commands: Structure.
+* Getting started: A sample session.
+* Getting the source: Getting the source.
+* Global cvsignore: cvsignore.
+* Global options: Global options.
+* Group: File permissions.
+* gserver (client/server connection method), port specification <1>: Remote repositories.
+* gserver (client/server connection method), port specification: Password authentication server.
+* GSSAPI: GSSAPI authenticated.
+* Gzip <1>: Global options.
+* Gzip: Invoking CVS.
+* Hard links: Special Files.
+* HEAD, as reserved tag name: Tags.
+* HEAD, special tag: Common options.
+* Header keyword: Keyword list.
+* history (subcommand): history.
+* History browsing: History browsing.
+* History file: history file.
+* History files: Repository files.
+* History of CVS: What is CVS?.
+* HOME, environment variable: Environment variables.
+* HOMEDRIVE, environment variable: Environment variables.
+* HOMEPATH, environment variable: Environment variables.
+* Id keyword: Keyword list.
+* Ident (shell command): Using keywords.
+* Identifying a branch: Accessing branches.
+* Identifying files: Keyword substitution.
+* Ignored files: cvsignore.
+* Ignoring files: cvsignore.
+* import (subcommand): import.
+* Importing files: From files.
* Importing files, from other version control systems: From other version control systems.
-* Importing modules: First import.
-* Index: Index.
-* Info files (syntax): syntax.
-* Informing others: Informing others.
-* init (subcommand): Creating a repository.
-* installed images (VMS): File permissions.
-* Introduction to CVS: What is CVS?.
-* Invoking CVS: Invoking CVS.
-* Isolation: History browsing.
-* Join: Merging a branch.
-* keeping a checked out copy: Keeping a checked out copy.
-* kerberos: Kerberos authenticated.
-* Keyword expansion: Keyword substitution.
-* Keyword List: Keyword list.
-* Keyword substitution: Keyword substitution.
-* Kflag: Substitution modes.
-* kinit: Kerberos authenticated.
-* Known bugs in this manual or CVS: BUGS.
-* Layout of repository: Repository.
-* Left-hand options: Global options.
-* Linear development: Revision numbers.
-* link, symbolic, importing: import output.
-* List, mailing list: What is CVS?.
-* Locally Added: File status.
-* Locally Modified: File status.
-* Locally Removed: File status.
-* Locker keyword: Keyword list.
-* Locking files: Multiple developers.
-* locks, cvs: Concurrency.
-* Log (subcommand): log.
-* Log information, saving: history file.
-* Log keyword: Keyword list.
-* Log message entry: Committing your changes.
-* Log message template: rcsinfo.
-* Log message, correcting: admin options.
-* log message, verifying: verifymsg.
-* Log messages: loginfo.
-* Log messages, editing: editinfo.
-* Login (subcommand): Password authentication client.
-* loginfo (admin file): loginfo.
-* Logout (subcommand): Password authentication client.
-* Mail, automatic mail on commit: Informing others.
-* Mailing list: What is CVS?.
-* Mailing log messages: loginfo.
-* Main trunk and branches: Branching and merging.
-* make: Builds.
-* Many repositories: Multiple repositories.
-* Markers, conflict: Conflicts example.
-* Merge, an example: Conflicts example.
-* Merge, branch example: Merging a branch.
-* Merging: Branching and merging.
-* Merging a branch: Merging a branch.
-* Merging a file: Updating a file.
-* Merging two revisions: Merging two revisions.
-* mkmodules: Error messages.
+* Importing modules: First import.
+* Index: Index.
+* Info files (syntax): syntax.
+* Informing others: Informing others.
+* init (subcommand): Creating a repository.
+* Installed images (VMS): File permissions.
+* Internal variables: Variables.
+* Introduction to CVS: What is CVS?.
+* Invoking CVS: Invoking CVS.
+* Isolation: History browsing.
+* Join: Merging a branch.
+* Keeping a checked out copy: Keeping a checked out copy.
+* Kerberos, using :gserver:: GSSAPI authenticated.
+* Kerberos, using :kserver:: Kerberos authenticated.
+* Kerberos, using kerberized rsh: Connecting via rsh.
+* Keyword expansion: Keyword substitution.
+* Keyword List: Keyword list.
+* Keyword substitution: Keyword substitution.
+* Keyword substitution, and merging: Merging and keywords.
+* Keyword substitution, changing modes: Substitution modes.
+* Kflag: Substitution modes.
+* kinit: Kerberos authenticated.
+* Known bugs in this manual or CVS: BUGS.
+* kserver (client/server connection method), port specification <1>: Password authentication server.
+* kserver (client/server connection method), port specification: Remote repositories.
+* Layout of repository: Repository.
+* Left-hand options: Global options.
+* Linear development: Revision numbers.
+* Link, symbolic, importing: import output.
+* List, mailing list: What is CVS?.
+* Locally Added: File status.
+* Locally Modified: File status.
+* Locally Removed: File status.
+* LockDir, in CVSROOT/config: config.
+* Locker keyword: Keyword list.
+* Locking files: Multiple developers.
+* Locks, cvs, and backups: Backing up.
+* Locks, cvs, introduction: Concurrency.
+* Locks, cvs, technical details: Locks.
+* log (subcommand): log.
+* Log information, saving: history file.
+* Log keyword: Keyword list.
+* Log message entry: Committing your changes.
+* Log message template: rcsinfo.
+* Log message, correcting: admin options.
+* Log message, verifying: verifymsg.
+* Log messages: loginfo.
+* Log messages, editing: editinfo.
+* LogHistory, in CVSROOT/config: config.
+* Login (subcommand): Password authentication client.
+* loginfo (admin file): loginfo.
+* Logout (subcommand): Password authentication client.
+* Mail, automatic mail on commit: Informing others.
+* Mailing list: What is CVS?.
+* Mailing log messages: loginfo.
+* Main trunk and branches: Branching and merging.
+* make: Builds.
+* Many repositories: Multiple repositories.
+* Markers, conflict: Conflicts example.
+* Merge, an example: Conflicts example.
+* Merge, branch example: Merging a branch.
+* Merging: Branching and merging.
+* Merging a branch: Merging a branch.
+* Merging a file: Updating a file.
+* Merging two revisions: Merging two revisions.
+* Merging, and keyword substitution: Merging and keywords.
+* mkmodules: Error messages.
* Modifications, copying between branches: Branching and merging.
-* Module status: Module options.
-* Module, defining: Defining the module.
-* Modules (admin file): modules.
-* Modules file: Intro administrative files.
-* Modules file, changing: Defining the module.
-* modules.db: CVSROOT storage.
-* modules.dir: CVSROOT storage.
-* modules.pag: CVSROOT storage.
-* Motivation for branches: Branches motivation.
-* moving a repository: Moving a repository.
-* Moving directories: Moving directories.
-* Moving files: Moving files.
-* moving tags: tag options.
-* Multiple developers: Multiple developers.
-* Multiple repositories: Multiple repositories.
-* Name keyword: Keyword list.
-* Name, symbolic (tag): Tags.
-* Needs Checkout: File status.
-* Needs Merge: File status.
-* Needs Patch: File status.
-* Newsgroups: What is CVS?.
-* notify (admin file): Getting Notified.
-* Notify file, in CVS directory: Working directory storage.
-* Notify.tmp file, in CVS directory: Working directory storage.
-* Number, branch <1>: Branches and revisions.
-* Number, branch: Revision numbers.
-* Number, revision-: Revision numbers.
-* option defaults: ~/.cvsrc.
-* Options, global: Global options.
-* options, in modules file: Module options.
-* Outdating revisions: admin options.
-* Overlap: Updating a file.
-* Overriding CVSREAD: Global options.
-* Overriding CVSROOT: Global options.
-* Overriding EDITOR: Global options.
-* Overriding RCSBIN: Global options.
-* Overriding TMPDIR: Global options.
-* Overview: Overview.
-* Parallel repositories: Multiple repositories.
-* passwd (admin file): Password authentication server.
-* password client, using: Password authentication client.
-* password server, setting up: Password authentication server.
-* PATH, environment variable: Environment variables.
-* Per-directory sticky tags/dates: Working directory storage.
-* Per-module editor: editinfo.
-* permissions, general: File permissions.
-* permissions, Windows-specific: Windows permissions.
-* Policy: When to commit.
-* Precommit checking: commitinfo.
-* Pserver (subcommand): Password authentication server.
-* PVCS, importing files from: From other version control systems.
-* RCS history files: Repository files.
-* RCS revision numbers: Tags.
-* RCS, importing files from: From other version control systems.
-* RCS-style locking: Multiple developers.
-* RCSBIN, in CVSROOT/config: config.
-* RCSBIN, overriding: Global options.
-* RCSfile keyword: Keyword list.
-* rcsinfo (admin file): rcsinfo.
-* Rdiff (subcommand): rdiff.
-* read-only files, and -r: Global options.
-* read-only files, and CVSREAD: Environment variables.
-* read-only files, and watches: Setting a watch.
-* read-only files, in repository: File permissions.
-* Read-only mode: Global options.
-* read-only repository access: Read-only access.
-* readers (admin file): Read-only access.
-* Recursive (directory descending): Recursive behavior.
-* Reference manual (files): Administrative files.
-* Reference manual for variables: Environment variables.
-* Reference, commands: Invoking CVS.
-* regular expression syntax: syntax.
-* Regular modules: Regular modules.
-* Release (subcommand): release.
-* Releases, revisions and versions: Versions revisions releases.
-* Releasing your working copy: Cleaning up.
-* Remote repositories: Remote repositories.
-* Remove (subcommand): Removing files.
-* Removing a change: Merging two revisions.
-* removing directories: Removing directories.
-* Removing files: Removing files.
-* Removing your working copy: Cleaning up.
-* Renaming directories: Moving directories.
-* Renaming files: Moving files.
-* renaming tags: tag options.
-* Replacing a log message: admin options.
-* Reporting bugs: BUGS.
-* Repositories, multiple: Multiple repositories.
-* Repositories, remote: Remote repositories.
-* Repository (intro): Repository.
-* Repository file, in CVS directory: Working directory storage.
-* Repository, backing up: Backing up.
-* Repository, example: Repository.
-* Repository, how data is stored: Repository storage.
-* repository, moving: Moving a repository.
-* Repository, setting up: Creating a repository.
-* reserved checkouts: Multiple developers.
-* Resetting sticky tags: Sticky tags.
-* Resolving a conflict: Conflicts example.
-* Restoring old version of removed file: Sticky tags.
-* Resurrecting old version of dead file: Sticky tags.
-* Retrieve a branch: Accessing branches.
+* Module status: Module options.
+* Module, defining: Defining the module.
+* Modules (admin file): modules.
+* Modules file: Intro administrative files.
+* Modules file program options: Module program options.
+* Modules file, changing: Defining the module.
+* modules.db: CVSROOT storage.
+* modules.dir: CVSROOT storage.
+* modules.pag: CVSROOT storage.
+* Motivation for branches: Branches motivation.
+* Moving a repository: Moving a repository.
+* Moving directories: Moving directories.
+* Moving files: Moving files.
+* Moving tags: Modifying tags.
+* Multiple developers: Multiple developers.
+* Multiple repositories: Multiple repositories.
+* Name keyword: Keyword list.
+* Name, symbolic (tag): Tags.
+* Needs Checkout: File status.
+* Needs Merge: File status.
+* Needs Patch: File status.
+* Newsgroups: What is CVS?.
+* notify (admin file): Getting Notified.
+* Notify file, in CVS directory: Working directory storage.
+* Notify.tmp file, in CVS directory: Working directory storage.
+* Number, branch <1>: Revision numbers.
+* Number, branch: Branches and revisions.
+* Number, revision-: Revision numbers.
+* Option defaults: ~/.cvsrc.
+* Options, global: Global options.
+* Options, in modules file: Module options.
+* Outdating revisions: admin options.
+* Overlap: Updating a file.
+* Overriding CVSREAD: Global options.
+* Overriding CVSROOT: Global options.
+* Overriding EDITOR: Global options.
+* Overriding RCSBIN: Global options.
+* Overriding TMPDIR: Global options.
+* Overview: Overview.
+* Ownership, saving in CVS: Special Files.
+* Parallel repositories: Multiple repositories.
+* passwd (admin file): Password authentication server.
+* Password client, using: Password authentication client.
+* Password server, setting up: Password authentication server.
+* PATH, environment variable: Environment variables.
+* Per-directory sticky tags/dates: Working directory storage.
+* Per-module editor: editinfo.
+* Permissions, general: File permissions.
+* Permissions, saving in CVS: Special Files.
+* Permissions, Windows-specific: Windows permissions.
+* Policy: When to commit.
+* port, specifying for remote repositories <1>: Remote repositories.
+* port, specifying for remote repositories: Password authentication server.
+* Precommit checking: commitinfo.
+* pserver (client/server connection method), port specification <1>: Remote repositories.
+* pserver (client/server connection method), port specification: Password authentication server.
+* pserver (subcommand): Password authentication server.
+* PVCS, importing files from: From other version control systems.
+* RCS history files: Repository files.
+* RCS revision numbers: Tags.
+* RCS, importing files from: From other version control systems.
+* RCS-style locking: Multiple developers.
+* RCSBIN, in CVSROOT/config: config.
+* RCSBIN, internal variable: Variables.
+* RCSBIN, overriding: Global options.
+* RCSfile keyword: Keyword list.
+* rcsinfo (admin file): rcsinfo.
+* rdiff (subcommand): rdiff.
+* Read-only files, and -r: Global options.
+* Read-only files, and CVSREAD: Environment variables.
+* Read-only files, and watches: Setting a watch.
+* Read-only files, in repository: File permissions.
+* Read-only mode: Global options.
+* Read-only repository access: Read-only access.
+* readers (admin file): Read-only access.
+* Recursive (directory descending): Recursive behavior.
+* Reference manual (files): Administrative files.
+* Reference manual for variables: Environment variables.
+* Reference, commands: Invoking CVS.
+* Regular expression syntax: syntax.
+* Regular modules: Regular modules.
+* release (subcommand): release.
+* Releases, revisions and versions: Versions revisions releases.
+* Releasing your working copy: Cleaning up.
+* Remote repositories: Remote repositories.
+* Remote repositories, port specification <1>: Remote repositories.
+* Remote repositories, port specification: Password authentication server.
+* Remove (subcommand): Removing files.
+* Removing a change: Merging two revisions.
+* Removing directories: Removing directories.
+* Removing files: Removing files.
+* Removing tags: Modifying tags.
+* Removing your working copy: Cleaning up.
+* Renaming directories: Moving directories.
+* Renaming files: Moving files.
+* Renaming tags: Modifying tags.
+* Replacing a log message: admin options.
+* Reporting bugs: BUGS.
+* Repositories, multiple: Multiple repositories.
+* Repositories, remote: Remote repositories.
+* Repositories, remote, port specification <1>: Remote repositories.
+* Repositories, remote, port specification: Password authentication server.
+* Repository (intro): Repository.
+* Repository file, in CVS directory: Working directory storage.
+* Repository, backing up: Backing up.
+* Repository, example: Repository.
+* Repository, how data is stored: Repository storage.
+* Repository, moving: Moving a repository.
+* Repository, setting up: Creating a repository.
+* Reserved checkouts: Multiple developers.
+* Resetting sticky tags: Sticky tags.
+* Resolving a conflict: Conflicts example.
+* Restoring old version of removed file: Merging two revisions.
+* Resurrecting old version of dead file: Merging two revisions.
+* Retrieve a branch: Accessing branches.
* Retrieving an old revision using tags: Tags.
-* reverting to repository version: Editing files.
-* Revision keyword: Keyword list.
-* Revision management: Revision management.
-* Revision numbers: Revision numbers.
-* Revision numbers (branches): Branches and revisions.
-* Revision tree: Revision numbers.
-* Revision tree, making branches: Branching and merging.
+* Reverting to repository version: Editing files.
+* Revision keyword: Keyword list.
+* Revision management: Revision management.
+* Revision numbers: Revision numbers.
+* Revision numbers (branches): Branches and revisions.
+* Revision tree: Revision numbers.
+* Revision tree, making branches: Branching and merging.
* Revisions, merging differences between: Merging two revisions.
-* Revisions, versions and releases: Versions revisions releases.
-* Right-hand options: Common options.
-* Root file, in CVS directory: Specifying a repository.
-* rsh: Connecting via rsh.
-* Rtag (subcommand): rtag.
-* rtag, creating a branch using: Creating a branch.
-* Saving space: admin options.
-* SCCS, importing files from: From other version control systems.
+* Revisions, versions and releases: Versions revisions releases.
+* Right-hand options: Common options.
+* Root file, in CVS directory: Specifying a repository.
+* rsh: Connecting via rsh.
+* rsh replacements (Kerberized, SSH, &c): Connecting via rsh.
+* rtag (subcommand): Tagging by date/tag.
+* rtag, creating a branch using: Creating a branch.
+* Saving space: admin options.
+* SCCS, importing files from: From other version control systems.
* Security, file permissions in repository: File permissions.
-* security, GSSAPI: GSSAPI authenticated.
-* security, kerberos: Kerberos authenticated.
-* security, of pserver: Password authentication security.
-* security, setuid: File permissions.
-* server, CVS: Remote repositories.
-* server, temporary directories: Server temporary directory.
-* setgid: File permissions.
-* Setting up a repository: Creating a repository.
-* setuid: File permissions.
-* Signum Support: BUGS.
-* Source keyword: Keyword list.
-* Source, getting CVS source: What is CVS?.
-* Source, getting from CVS: Getting the source.
-* Specifying dates: Common options.
-* Spreading information: Informing others.
-* Starting a project with CVS: Starting a new project.
-* State keyword: Keyword list.
-* Status of a file: File status.
-* Status of a module: Module options.
-* sticky date: Sticky tags.
-* Sticky tags: Sticky tags.
-* Sticky tags, resetting: Sticky tags.
-* Sticky tags/dates, per-directory: Working directory storage.
-* Storing log messages: loginfo.
-* stream authentication: Global options.
-* Structure: Structure.
-* Subdirectories: Recursive behavior.
-* Support, getting CVS support: BUGS.
-* symbolic link, importing: import output.
-* Symbolic name (tag): Tags.
-* Syntax of info files: syntax.
-* SystemAuth, in CVSROOT/config: config.
-* Tag (subcommand): tag.
-* Tag file, in CVS directory: Working directory storage.
-* Tag program: Module options.
-* tag, command, introduction: Tags.
-* tag, creating a branch using: Creating a branch.
-* tag, example: Tags.
-* Tag, retrieving old revisions: Tags.
-* Tag, symbolic name: Tags.
-* taginfo: user-defined logging.
-* Tags: Tags.
-* tags, renaming: tag options.
-* Tags, sticky: Sticky tags.
-* tc, Trivial Compiler (example): A sample session.
-* Team of developers: Multiple developers.
-* TEMP, environment variable: Environment variables.
-* Template file, in CVS directory: Working directory storage.
-* Template for log message: rcsinfo.
-* temporary directories, and server: Server temporary directory.
-* temporary files, location of: Environment variables.
-* Third-party sources: Tracking sources.
-* Time: Common options.
-* timezone, in input: Common options.
-* timezone, in output: log.
-* TMP, environment variable: Environment variables.
-* TMPDIR, environment variable: Environment variables.
-* TMPDIR, overriding: Global options.
-* Trace: Global options.
-* Traceability: History browsing.
-* Tracking sources: Tracking sources.
-* Transactions, atomic, lack of: Concurrency.
-* Trivial Compiler (example): A sample session.
-* Typical repository: Repository.
-* umask, for repository files: File permissions.
-* Undoing a change: Merging two revisions.
-* unedit (subcommand): Editing files.
-* Unknown: File status.
-* unreserved checkouts: Multiple developers.
-* Up-to-date: File status.
-* Update (subcommand): update.
-* Update program: Module options.
-* update, introduction: Updating a file.
-* update, to display file status: File status.
-* Update.prog file, in CVS directory: Working directory storage.
-* Updating a file: Updating a file.
-* user aliases: Password authentication server.
-* users (admin file): Getting Notified.
-* Vendor: Tracking sources.
-* Vendor branch: Tracking sources.
-* verifymsg (admin file): verifymsg.
-* versions, of CVS: Compatibility.
-* Versions, revisions and releases: Versions revisions releases.
-* Viewing differences: Viewing differences.
-* watch add (subcommand): Getting Notified.
-* watch off (subcommand): Setting a watch.
-* watch on (subcommand): Setting a watch.
-* watch remove (subcommand): Getting Notified.
-* watchers (subcommand): Watch information.
-* Watches: Watches.
-* Wdiff (import example): First import.
-* web pages, maintaining with CVS: Keeping a checked out copy.
-* What (shell command): Using keywords.
-* What branches are good for: Branches motivation.
-* What is CVS not?: What is CVS not?.
-* What is CVS?: What is CVS?.
-* When to commit: When to commit.
-* Windows, and permissions: Windows permissions.
-* Work-session, example of: A sample session.
-* Working copy: Multiple developers.
-* Working copy, removing: Cleaning up.
-* Wrappers: Wrappers.
-* writers (admin file): Read-only access.
-* zone, time, in input: Common options.
-* zone, time, in output: log.
+* Security, GSSAPI: GSSAPI authenticated.
+* Security, kerberos: Kerberos authenticated.
+* Security, of pserver: Password authentication security.
+* Security, setuid: File permissions.
+* Server, CVS: Remote repositories.
+* Server, temporary directories: Server temporary directory.
+* Setgid: File permissions.
+* Setting up a repository: Creating a repository.
+* Setuid: File permissions.
+* Signum Support: BUGS.
+* Source keyword: Keyword list.
+* Source, getting CVS source: What is CVS?.
+* Source, getting from CVS: Getting the source.
+* Special files: Special Files.
+* Specifying dates: Common options.
+* Spreading information: Informing others.
+* SSH (rsh replacement): Connecting via rsh.
+* Starting a project with CVS: Starting a new project.
+* State keyword: Keyword list.
+* Status of a file: File status.
+* Status of a module: Module options.
+* Sticky date: Sticky tags.
+* Sticky tags: Sticky tags.
+* Sticky tags, resetting: Sticky tags.
+* Sticky tags/dates, per-directory: Working directory storage.
+* Storing log messages: loginfo.
+* Stream authentication: Global options.
+* Structure: Structure.
+* Subdirectories: Recursive behavior.
+* Support, getting CVS support: BUGS.
+* Symbolic link, importing: import output.
+* Symbolic links: Special Files.
+* Symbolic name (tag): Tags.
+* Syntax of info files: syntax.
+* SystemAuth, in CVSROOT/config: config.
+* tag (subcommand): Tagging the working directory.
+* Tag file, in CVS directory: Working directory storage.
+* Tag program: Module options.
+* tag, command, introduction: Tags.
+* tag, creating a branch using: Creating a branch.
+* Tag, example: Tags.
+* Tag, retrieving old revisions: Tags.
+* Tag, symbolic name: Tags.
+* taginfo: user-defined logging.
+* Tags: Tags.
+* Tags, deleting: Modifying tags.
+* Tags, moving: Modifying tags.
+* Tags, renaming: Modifying tags.
+* Tags, sticky: Sticky tags.
+* tc, Trivial Compiler (example): A sample session.
+* Team of developers: Multiple developers.
+* TEMP, environment variable: Environment variables.
+* Template file, in CVS directory: Working directory storage.
+* Template for log message: rcsinfo.
+* Temporary directories, and server: Server temporary directory.
+* Temporary files, location of: Environment variables.
+* Third-party sources: Tracking sources.
+* Time: Common options.
+* Timezone, in input: Common options.
+* Timezone, in output: log.
+* TMP, environment variable: Environment variables.
+* TMPDIR, environment variable: Environment variables.
+* TMPDIR, overriding: Global options.
+* TopLevelAdmin, in CVSROOT/config: config.
+* Trace: Global options.
+* Traceability: History browsing.
+* Tracking sources: Tracking sources.
+* Transactions, atomic, lack of: Concurrency.
+* Trivial Compiler (example): A sample session.
+* Typical repository: Repository.
+* Umask, for repository files: File permissions.
+* Undoing a change: Merging two revisions.
+* unedit (subcommand): Editing files.
+* Unknown: File status.
+* Unreserved checkouts: Multiple developers.
+* Up-to-date: File status.
+* update (subcommand): update.
+* Update program: Module options.
+* Update, introduction: Updating a file.
+* update, to display file status: File status.
+* Update.prog file, in CVS directory: Working directory storage.
+* Updating a file: Updating a file.
+* User aliases: Password authentication server.
+* User variables: Variables.
+* USER, internal variable: Variables.
+* users (admin file): Getting Notified.
+* Variables: Variables.
+* Vendor: Tracking sources.
+* Vendor branch: Tracking sources.
+* verifymsg (admin file): verifymsg.
+* version (subcommand): Invoking CVS.
+* Versions, of CVS: Compatibility.
+* Versions, revisions and releases: Versions revisions releases.
+* Viewing differences: Viewing differences.
+* VISUAL, environment variable: Committing your changes.
+* VISUAL, internal variable: Variables.
+* watch add (subcommand): Getting Notified.
+* watch off (subcommand): Setting a watch.
+* watch on (subcommand): Setting a watch.
+* watch remove (subcommand): Getting Notified.
+* watchers (subcommand): Watch information.
+* Watches: Watches.
+* wdiff (import example): First import.
+* Web pages, maintaining with CVS: Keeping a checked out copy.
+* What (shell command): Using keywords.
+* What branches are good for: Branches motivation.
+* What is CVS not?: What is CVS not?.
+* What is CVS?: What is CVS?.
+* When to commit: When to commit.
+* Windows, and permissions: Windows permissions.
+* Work-session, example of: A sample session.
+* Working copy: Multiple developers.
+* Working copy, removing: Cleaning up.
+* Wrappers: Wrappers.
+* writers (admin file): Read-only access.
+* Zone, time, in input: Common options.
+* Zone, time, in output: log.
diff --git a/gnu/usr.bin/cvs/src/Makefile.in b/gnu/usr.bin/cvs/src/Makefile.in
index c80deab8794..b85aa57c22a 100644
--- a/gnu/usr.bin/cvs/src/Makefile.in
+++ b/gnu/usr.bin/cvs/src/Makefile.in
@@ -180,7 +180,7 @@ cvs_SOURCES = \
cvs_LDADD = \
../diff/libdiff.a \
../lib/libcvs.a \
- ../zlib/libz.a \
+ @ZLIB@ \
version.o
cvs_EXTRA_DIST = version.c
@@ -229,7 +229,7 @@ am_cvs_OBJECTS = add.$(OBJEXT) admin.$(OBJEXT) annotate.$(OBJEXT) \
update.$(OBJEXT) vers_ts.$(OBJEXT) watch.$(OBJEXT) \
wrapper.$(OBJEXT) zlib.$(OBJEXT)
cvs_OBJECTS = $(am_cvs_OBJECTS)
-cvs_DEPENDENCIES = ../diff/libdiff.a ../lib/libcvs.a ../zlib/libz.a \
+cvs_DEPENDENCIES = ../diff/libdiff.a ../lib/libcvs.a @ZLIB_DEPEND@ \
version.o
cvs_LDFLAGS =
SCRIPTS = $(bin_SCRIPTS)
diff --git a/gnu/usr.bin/cvs/src/client.c b/gnu/usr.bin/cvs/src/client.c
index 999beb31f3b..c8870a6d737 100644
--- a/gnu/usr.bin/cvs/src/client.c
+++ b/gnu/usr.bin/cvs/src/client.c
@@ -4107,7 +4107,7 @@ start_tcp_server (tofdp, fromfdp)
const char *portenv;
int port;
struct hostent *hp;
- struct sockaddr_in sin;
+ struct sockaddr_in client_sai;
char *hname;
s = socket (AF_INET, SOCK_STREAM, 0);
@@ -4116,7 +4116,7 @@ start_tcp_server (tofdp, fromfdp)
port = get_cvs_port_number (current_parsed_root);
- hp = init_sockaddr (&sin, current_parsed_root->hostname, port);
+ hp = init_sockaddr (&client_sai, current_parsed_root->hostname, port);
hname = xmalloc (strlen (hp->h_name) + 1);
strcpy (hname, hp->h_name);
@@ -4128,7 +4128,7 @@ start_tcp_server (tofdp, fromfdp)
inet_ntoa (client_sai.sin_addr), port);
}
- if (connect (s, (struct sockaddr *) &sin, sizeof sin) < 0)
+ if (connect (s, (struct sockaddr *) &client_sai, sizeof client_sai) < 0)
error (1, 0, "connect to %s(%s):%d failed: %s",
current_parsed_root->hostname,
inet_ntoa (client_sai.sin_addr),
@@ -4152,7 +4152,7 @@ start_tcp_server (tofdp, fromfdp)
/* We don't care about the checksum, and pass it as zero. */
status = krb_sendauth (KOPT_DO_MUTUAL, s, &ticket, "rcmd",
hname, realm, (unsigned long) 0, &msg_data,
- &cred, sched, &laddr, &sin, "KCVSV1.0");
+ &cred, sched, &laddr, &client_sai, "KCVSV1.0");
if (status != KSUCCESS)
error (1, 0, "kerberos authentication failed: %s",
krb_get_err_text (status));
diff --git a/gnu/usr.bin/cvs/src/server.c b/gnu/usr.bin/cvs/src/server.c
index eae6ae95004..762a6d72438 100644
--- a/gnu/usr.bin/cvs/src/server.c
+++ b/gnu/usr.bin/cvs/src/server.c
@@ -5352,7 +5352,10 @@ error 0 %s: no such user\n", username);
/* Set LOGNAME, USER and CVS_USER in the environment, in case they
are already set to something else. */
{
- char *env, *cvs_user;
+ char *env;
+#ifdef AUTH_SERVER_SUPPORT
+ char *cvs_user;
+#endif
env = xmalloc (sizeof "LOGNAME=" + strlen (username));
(void) sprintf (env, "LOGNAME=%s", username);
@@ -5362,10 +5365,12 @@ error 0 %s: no such user\n", username);
(void) sprintf (env, "USER=%s", username);
(void) putenv (env);
+#ifdef AUTH_SERVER_SUPPORT
cvs_user = NULL != CVS_Username ? CVS_Username : "";
env = xmalloc (sizeof "CVS_USER=" + strlen (cvs_user));
(void) sprintf (env, "CVS_USER=%s", cvs_user);
(void) putenv (env);
+#endif
}
#endif /* HAVE_PUTENV */
}