home *** CD-ROM | disk | FTP | other *** search
- :
- #
- # Copyright (c) 1992, Brian Berliner
- #
- # You may distribute under the terms of the GNU General Public License as
- # specified in the README file that comes with the CVS 1.3 kit.
- #
- # @(#)cvsinit 1.1 92/03/31
- #
- # This script should be run once to help you setup your site for CVS.
-
- # Make sure that the CVSROOT variable is set
- if [ "x$CVSROOT" = x ]; then
- echo "The CVSROOT environment variable is not set."
- echo ""
- echo "You should choose a location for your source repository"
- echo "that can be shared by many developers. It also helps to"
- echo "place the source repository on a file system that has"
- echo "plenty of free space."
- echo ""
- echo "Please enter the full path for your CVSROOT source repository:"
- read CVSROOT
- remind_cvsroot=yes
- else
- echo "Using $CVSROOT as the source repository."
- remind_cvsroot=no
- fi
- echo ""
-
- # Now, create the $CVSROOT if it is not already there
- if [ ! -d $CVSROOT ]; then
- echo "Hmmm... $CVSROOT does not exist; trying to make it..."
- path=
- for comp in `echo $CVSROOT | sed -e 's,/, ,g'`; do
- path=$path/$comp
- if [ ! -d $path ]; then
- mkdir $path
- fi
- done
- else
- echo "Good... $CVSROOT already exists."
- fi
-
- # Next, check for $CVSROOT/CVSROOT
- if [ ! -d $CVSROOT/CVSROOT ]; then
- if [ -d $CVSROOT/CVSROOT.adm ]; then
- echo "You have the old $CVSROOT/CVSROOT.adm directory."
- echo "I will rename it to $CVSROOT/CVSROOT for you..."
- mv $CVSROOT/CVSROOT.adm $CVSROOT/CVSROOT
- else
- echo "Making the $CVSROOT/CVSROOT directory..."
- mkdir $CVSROOT/CVSROOT
- fi
- else
- echo "Wow!... so does $CVSROOT/CVSROOT."
- fi
- echo ""
- if [ ! -d $CVSROOT/CVSROOT ]; then
- echo "You still don't have a $CVSROOT/CVSROOT directory."
- echo "I give up."
- exit 1
- fi
-
- # Create the special *info files within $CVSROOT/CVSROOT
-
- # Trump up a simple modules file, if one doesn't exist
- if [ -f $CVSROOT/CVSROOT/modules,v ]; then
- if [ ! -f $CVSROOT/CVSROOT/modules ]; then
- echo "You have a $CVSROOT/CVSROOT/modules,v file,"
- echo "But no $CVSROOT/CVSROOT/modules file. This is OK."
- echo "I'll checkout a fresh copy..."
- (cd $CVSROOT/CVSROOT; co -q modules)
- echo ""
- fi
- else
- if [ -f $CVSROOT/CVSROOT/modules ]; then
- echo "You have a $CVSROOT/CVSROOT/modules file,"
- echo "But no $CVSROOT/CVSROOT/modules,v file."
- echo "I'll create one for you, but otherwise leave it alone..."
- else
- echo "The $CVSROOT/CVSROOT/modules file does not exist."
- echo "Making a simple one for you..."
- cat > $CVSROOT/CVSROOT/modules <<"HERE"
- #
- # The CVS modules file
- #
- # Three different line formats are valid:
- # key -a aliases...
- # key [options] directory
- # key [options] directory files...
- #
- # Where "options" are composed of:
- # -i prog Run "prog" on "cvs commit" from top-level of module.
- # -o prog Run "prog" on "cvs checkout" of module.
- # -t prog Run "prog" on "cvs rtag" of module.
- # -u prog Run "prog" on "cvs update" of module.
- # -d dir Place module in directory "dir" instead of module name.
- # -l Top-level directory only -- do not recurse.
- #
- # And "directory" is a path to a directory relative to $CVSROOT.
- #
- # The "-a" option specifies an alias. An alias is interpreted as if
- # everything on the right of the "-a" had been typed on the command line.
- #
- # You can encode a module within a module by using the special '&'
- # character to interpose another module into the current module. This
- # can be useful for creating a module that consists of many directories
- # spread out over the entire source repository.
- #
-
- # Convenient aliases
- world -a .
-
- # CVSROOT support; run mkmodules whenever anything changes.
- CVSROOT -i mkmodules CVSROOT
- modules -i mkmodules CVSROOT modules
- loginfo -i mkmodules CVSROOT loginfo
- commitinfo -i mkmodules CVSROOT commitinfo
- rcsinfo -i mkmodules CVSROOT rcsinfo
- editinfo -i mkmodules CVSROOT editinfo
-
- # Add other modules here...
- HERE
- fi
- (cd $CVSROOT/CVSROOT; ci -q -u -t/dev/null -m'initial checkin of modules' modules)
- echo ""
- fi
-
- # check to see if there are any references to the old CVSROOT.adm directory
- if grep CVSROOT.adm $CVSROOT/CVSROOT/modules >/dev/null 2>&1; then
- echo "Warning: your $CVSROOT/CVSROOT/modules file still"
- echo " contains references to the old CVSROOT.adm directory"
- echo " You should really change these to the new CVSROOT directory"
- echo ""
- fi
-
- # loginfo, like modules, is special-cased
- if [ -f $CVSROOT/CVSROOT/loginfo,v ]; then
- if [ ! -f $CVSROOT/CVSROOT/loginfo ]; then
- echo "You have a $CVSROOT/CVSROOT/loginfo,v file,"
- echo "But no $CVSROOT/CVSROOT/loginfo file. This is OK."
- echo "I'll checkout a fresh copy..."
- (cd $CVSROOT/CVSROOT; co -q loginfo)
- echo ""
- fi
- else
- if [ -f $CVSROOT/CVSROOT/loginfo ]; then
- echo "You have a $CVSROOT/CVSROOT/loginfo file,"
- echo "But no $CVSROOT/CVSROOT/loginfo,v file."
- echo "I'll create one for you, but otherwise leave it alone..."
- else
- echo "The $CVSROOT/CVSROOT/loginfo file does not exist."
- echo "Making a simple one for you..."
- # try to find perl; use fancy log script if we can
- for perlpath in `echo $PATH | sed -e 's/:/ /g'` x; do
- if [ -f $perlpath/perl ]; then
- echo "#!$perlpath/perl" > $CVSROOT/CVSROOT/log.pl
- cat contrib/log.pl >> $CVSROOT/CVSROOT/log.pl
- chmod 755 $CVSROOT/CVSROOT/log.pl
- cp examples/loginfo $CVSROOT/CVSROOT/loginfo
- break
- fi
- done
- if [ $perlpath = x ]; then
- # we did not find perl anywhere, so make a simple loginfo file
- cat > $CVSROOT/CVSROOT/loginfo <<"HERE"
- #
- # 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 (ala printf). If
- # %s is specified in the filter program, a brief title is included (enclosed
- # in single quotes) showing the modified file names.
- #
- # 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 name ALL appears as a regular expression it is always used
- # in addition to the first matching regex or DEFAULT.
- #
- DEFAULT (echo ""; echo $USER; date; cat) >> $CVSROOT/CVSROOT/commitlog
- HERE
- fi
- fi
- (cd $CVSROOT/CVSROOT; ci -q -u -t/dev/null -m'initial checkin of loginfo' loginfo)
- echo ""
- fi
-
- # The remaining files are generated from the examples files.
- for info in commitinfo rcsinfo editinfo; do
- if [ -f $CVSROOT/CVSROOT/${info},v ]; then
- if [ ! -f $CVSROOT/CVSROOT/$info ]; then
- echo "You have a $CVSROOT/CVSROOT/${info},v file,"
- echo "But no $CVSROOT/CVSROOT/$info file. This is OK."
- echo "I'll checkout a fresh copy..."
- (cd $CVSROOT/CVSROOT; co -q $info)
- echo ""
- fi
- else
- if [ -f $CVSROOT/CVSROOT/$info ]; then
- echo "You have a $CVSROOT/CVSROOT/$info file,"
- echo "But no $CVSROOT/CVSROOT/${info},v file."
- echo "I'll create one for you, but otherwise leave it alone..."
- else
- echo "The $CVSROOT/CVSROOT/$info file does not exist."
- echo "Making a simple one for you..."
- sed -e 's/^\([^#]\)/#\1/' examples/$info > $CVSROOT/CVSROOT/$info
- fi
- (cd $CVSROOT/CVSROOT; ci -q -u -t/dev/null -m"initial checkin of $info" $info)
- echo ""
- fi
- done
-
- # Turn on history logging by default
- if [ ! -f $CVSROOT/CVSROOT/history ]; then
- echo "Enabling CVS history logging..."
- touch $CVSROOT/CVSROOT/history
- echo ""
- fi
-
- # finish up by running mkmodules
- echo "All done! Running 'mkmodules' as my final step..."
- mkmodules $CVSROOT/CVSROOT
-
- # and, if necessary, remind them about setting CVSROOT
- if [ $remind_cvsroot = yes ]; then
- echo "Remember to set the CVSROOT environment variable in your login script"
- fi
-
- exit 0
-