$ cvs -d:pserver;proxy=$proxyhost;proxyport=$proxyport:$cvsuser@$cvsdomain:/$repo
$ export CVSROOT=/srv/cvsroot $ cvs init $ groupadd cvs $ useradd -m -g cvs -s /bin/sh -c "CVS Repository" cvs $ chown -R cvs $CVSROOT $ chgrp -R cvs $CVSROOT $ chmod -R g+s $CVSROOT $ grep cvs /etc/services && echo OK cvspserver 2401/tcp # CVS client/server operations cvspserver 2401/udp # CVS client/server operations $ echo '# CVS server cvspserver stream tcp nowait root /usr/bin/cvs cvs --allow-root=/usr/local/src/cvsroot pserver' \ >/etc/inetd.conf $ killall -HUP inetd # signal inetd daemon to re-read the config file $ ls $CVSROOT/CVSROOT readers # list of pseudo usernames that can read via cvspserver writers # list of pseudo usernames can write via cvspserver passwd # encrypted passwd string with (htpasswd from apache)
Check out sources:
$ cvs co -P $proj
Status of changes:
$ cvs status
Compare local changes:
$ cvs diff -u $path
Creating patch:
$ cvs diff -N -u -r >$patch
History of changes:
$ cvs log $file
Remove a file:
$ rm $file # must first remove it locally $ cvs rm $file # schedules it for removal
Add a file:
$ cvs add $file
Check in local changes:
$ cvs ci
Update local sources:
$ cvs update
Move a file can not be done cleanly at the local level. The best way to do this with CVS is to go to the cvsroot repository and move the file or directory within the repository there. The cvsroot repository keeps all files in their RCS form of filename,v . The next cvs update will manifest the file move.
Tagging sources:
$ cvs tag $name $ cvs rtag $name
Revert file:
$ rm $file # remove it from local sources $ cvs update $file # get a new copy from the repository
There are no direct command to list symbolic names for branches but this command allow extract such info:
$ cd $CVS_PROJ $ cvs rlog -l -h -b $(cat CVS/Repository)
Switch to branch:
$ cvs up -r $BRANCH
Update to HEAD:
$ cvs up -A
Replace head:
$ cvs up -j$HEAD -j $NEWBRANCH
Replace branch:
$ cvs up -j$OLD -j $NEW