CVSROOT=cvs.r-project.org:/home/rdevel/CVS-ARCHIVE
export CVSROOT
For csh and derivatives, use
setenv CVSROOT cvs.r-project.org:/home/rdevel/CVS-ARCHIVE
Also make sure that you have CVS_RSH set to ssh.
The -P option prunes empty directories. The checked out directory will be called "R". Use the -d option to call it something else.
cvs co -P -r R-0-65-patches R
Notice the -r option. This can mostly be omitted, but in case a new directory has been added, one might not get the version from the relevant branch. You don't need it on the main branch of course.
or just
cvs commit
in which case you'll be asked for a change comment.
# assumes that "R-trunk-update-last" is set correctly
# if not:
# cvs rtag -F -r R-trunk-update R-trunk-update-last R
# WATCHIT!! After an x.y.0 release set it to R-x-y, not
# R-trunk-update-last...
export RTOP=~/misc
export TAG=R-0-90-patches
cd $RTOP/r-release/R
cvs update -Pd -r $TAG
cvs tag -F R-trunk-update
cd $RTOP/r-devel/R
cvs update -Pd
cvs update -j R-trunk-update-last -j R-trunk-update
find -type f | xargs grep '>>>>>>>'
# fix conflicts...
cvs commit -m 'branch update'
# better do this right away...
cvs rtag -F -r R-trunk-update R-trunk-update-last R
FILES="src/main/unique.c NEWS" #change to your liking RELEASE=~/misc/r-release/R #ditto DEVEL=~/misc/r-devel/R #ditto # fix and commit to release version as usual, e.g. cvs up vi $FILES #---------- # TEST your CHANGES #--------- cvs commit $FILES cvs tag -F -r R-trunk-update R-trunk-update-last $FILES cvs tag -F R-trunk-update $FILES cd $DEVEL cvs update -j R-trunk-update-last -j R-trunk-update $FILES grep '>>>>>>>' $FILES #------------ # FIX CONFLICTS (if any) #------------ cvs commit -m 'branch update' $FILES cvs tag -F -r R-trunk-update R-trunk-update-last $FILES
MINOR=90
NEWMINOR=99
TAG=R-0-$MINOR
REL=R-0.$MINOR.0
OREL=R-0.65.1
FTPDIR=~ftp/pub/CRAN/src/base/
echo -e "TAG=$TAG\nREL=$REL\nOREL=$OREL"
export CVSROOT=/home/rdevel/CVS-ARCHIVE/
cd r-devel
cvs checkout -P R
#-- set/check version number and release status:
cd R
echo 0.$MINOR.0 > VERSION
autoconf
rm src/main/gram.c
cd ../BUILD
make distclean
../R/configure
make
make check
cp src/main/gram.c ../R/src/main/gram.c
cd ../R
cvs update -Pd # watch out for last minute merges!
cvs commit -m 'preparing for release'
#---- at specified time:
cvs update # watch out for last minute merges - make check again if necessary!
cvs tag $TAG
cvs rtag -b -r $TAG $TAG-patches R
cd ~
mv r-release $OREL
mkdir r-release
cd r-release
cvs checkout -r $TAG-patches R
cvs tag -F R-trunk-update-last
cd ~/public-releases
cvs export -r $TAG -d $REL R
GZIP=-9 tar cvfz $REL.tgz $REL
cp $REL.tgz $REL/{README,INSTALL,RESOURCES,MIRROR-SITES,PLATFORMS,NEWS,Y2K} $FTPDIR
cd $FTPDIR
split -b 1400k $REL.tgz $REL.tgz-split.
-- set release numbers on release and devel. versions
cd ~/r-devel/R
echo 0.$NEWMINOR.0 "Under development (unstable)" > VERSION
cvs commit -m 'prepare for next version' VERSION
cd ~/r-release/R
echo 0.$MINOR.0 "Patched" > VERSION
cvs commit -m 'prepare for next version' VERSION
# Exec the following and check carefully:
MINOR=90
PL=1
OPL=$[PL-1]
TAG=R-0-$MINOR-$PL
REL=R-0.$MINOR.$PL
OREL=R-0.$MINOR.$OPL
DIFF=R-0.$MINOR.$OPL-0.$MINOR.$PL.diff
echo -e "TAG=$TAG\nREL=$REL\nDIFF=$DIFF"
FTPDIR=~ftp/pub/CRAN/src/base/
# go to the release directory
cd ~/r-release
cvs checkout -Pr R-0-$MINOR-patches R
#-- set/check version number and release status
cd R
echo 0.$MINOR.$PL > VERSION
autoconf
cd ~/r-release/BUILD
../R/configure --prefix ~/$REL
rm ../R/src/main/gram.c
make
make check
make install
mv src/main/gram.c ../R/src/main/gram.c
cd ~/r-release/R
cvs update -Pd
cvs commit -m "prepare for release $REL"
cvs tag $TAG
cd ~/public-releases
cvs export -r $TAG -d $REL R
GZIP=-9 tar cvfz $REL.tgz $REL
diff -ruN $OREL $REL > $DIFF
gzip -9 $DIFF
# (verify the patches)
# (copy tarfile and diff.gz to FTP ~ftp/pub/alpha/)
cp $REL.tgz $REL/{README,INSTALL,RESOURCES,MIRROR-SITES,PLATFORMS,NEWS,Y2K} $FTPDIR
cp $DIFF.gz $FTPDIR
cd $FTPDIR
split -b 1400k $REL.tgz $REL.tgz-split.
cd ~/r-release/R
echo 0.$MINOR.$PL Patched > VERSION
cvs commit -m "prepare for next release"
Suppose you want to have a branch to hold your volatile changes, let's
say R-exp-pd.
(A) Creating the branch
===================
cvs rtag -b R-exp-pd R
mkdir r-experimental
cd r-experimental
cvs checkout -P -r R-exp-pd R
(B) Hacking on the branch
=====================
Just like on the release branch:
cvs update -Pd -r R-exp-pd
#..hack, hack, hack....
cvs commit -m'hacked blah'
(C) Updating from r-devel (aka "main trunk")
========================================
cvs rtag -F R-head R
cvs update -j R-head # resolve conflicts if any
cvs commit -m 'merged from main'
(D) Merging the hack back into r-devel
==================================
cd ~/r-devel/R
cvs update -j R-exp-pd # resolve conflicts if any
cvs commit -m merged with experimental branch