Nowadays, it's essentially:

vserver vcs-noshell enter
infra/cvs/ tarball_url project_name
# OR for a web repository ('web' is litteral here):
infra/cvs/ tarball_url project_name web is specific to Savannah, is not perfectly foolproof, and is not necessarily updated when directories are renamed as the system evolves (it isn't used very often). Reading it before using it sounds like a good plan.

If you don't feel confident you can also progressively cut&paste the script content to the terminal ;)


For reference, here's how we manually imported CVS tarballs before (and before vserver).

Let's assume I want to import a PROJECT.tar.bz2 archive containing the CVS/RCS files of the project. Once you uploaded it to Savannah:

tar xjf PROJECT.tar.bz2
chown -R root:PROJECT .
# or chown -R root:webPROJECT for webcvs
find -type d -print0 | xargs -0 chmod 2775
find -type f -print0 | xargs -0 chmod a=rX
chmod 666 CVSROOT/history CVSROOT/val-tags
mv CVSROOT/history CVSROOT/val-tags \
# or /savannah/cvsroot/PROJECT/webcvs/PROJECT/CVSROOT for webcvs
rm -rf CVSROOT
# Takes cares of dot files and keeps permissions
rmdir /savannah/cvsroot/PROJECT/cvsroot/PROJECT/PROJECT
mv * /savannah/cvsroot/PROJECT/cvsroot/PROJECT
# ToDo: check for dot files
# or /savannah/cvsroot/PROJECT/webcvs/PROJECT for webcvs

I assumed there were no dot files in the top-level directory.

Beware that if the top-level directory contains files, those will not be erasable. This is due to our CVS permissions layout. (subject to change (ToDo)).

Existing projects that migrate to Savannah may want their CVS repository to be transfered to their project's repository. Time is essential for such an operation since the project contributors want to work on the new repository on Savannah and stop using the old. When the author asks us, ask him to send the tarball by mail or send a URL from which it can be downloaded. Make an appointment with him and guarantee that the repository will be untared on subversions with 24 hours maximum. The project contributor must first create a project on Savannah. When you have the tarball, untar it at /savannah/cvsroot/project/cvsroot/project. Make sure it does not contain a CVSROOT that would override the existing CVSROOT. If it does manually copy the history and val-tags files only. Make sure the imported repository is untared under /savannah/cvsroot/project/cvsroot/project/project and does not pollute the root of the repository.

/subsystems/cvs/root/ tries to guess where and how to install a given tarball. Try it out :)

You need to chroot(1).

Even though the instructions above are still useful and valid, there are additional things one must do nowadays. The 'new' way of importing a CVS repository requires root access and works like this:

# SSH over to Savannah as usual
# enter the 'cvs' vserver
vserver cvs enter
# instead of cd'ing to ~/youruser, cd to /root
# now follow the 'old' instructions above, but use /cvsroot/* instead of /savannah/cvsroot/*

-- sp