SVK and CVS howto.
This is a quick tutorial of using SVK with a CVS repository.
First install SVK and initialise the repository
initialise you local repository
$svk depotmap --init
Configure the CVS connector
At the moment the SVK CVS connector doesn't work properly, as a work around you'll need to keep an active CVS repository and manually import patches.
Walkthrough. manual SVK with CVS.
I'm going to checkout the CVS project "project" and importing it into a new local depot '//project/cvs_trunk'
checkout the CVS tree
$export CVSROOT=:pserver:email@example.com:/home/project $cvs -z 0 checkout project
import it into svk depot //project/cvs_trunk
$svk import //project/cvs_trunk project
once that's finished delete the cvs working copy
$rm -rf project
and checkout from svk
$svk co //project/cvs_trunk project
Now you have a working directory for both CVS and your local SVK.
Clean Copy Mirror
Another option is to keep a CVS repos alongside your SVK depot, and then use rsync to keep your SVK copy clean of CVS dirs. Here is a simple bash script I use to do just that:
#!/usr/bin/env bash while getopts ":u:a:s:v" options; do case $options in q ) quiet="-q";; esac done for item in mod1 mod2 etc do pushd cvs/$item cvs -Q update -dP popd rsync -aC $quiet cvs/$item clean/ svk import -m "auto import //mirror/$item from cvs" //mirror/head/$item clean/$item done
The script hardcodes several things. "mod1 mod2" should be replaced with a list of cvs modules to import. A subdir "cvs" of the cwd should contain the checked out copy of each module. The dir "clean" should exists. The path "//mirror" should be replaced with the depotpath which you want the modules stored under.
Just run the script whenever you want to update your vendor drops. You could even put it in your crontab.