CVS: move part of repository (branch) to SVN server

Hi all,

We have CVS server running for few years with absolutely no problems.
Because of conditions not depending on me, I'm forced to move some part of our repository to another server (SVN). I need to move ONLY one branch from CVS server to SVN server. The branch must be moved with all changes made on it. I can move entire repository with absolutely no problem, but do not know how to move part of the branch with changes (cvs checkout will not work ofcourse ).

Thank you in advance for your help.

My impression is that it may be possible with a four-step migration (but to be frank I am not too sure about its viability due to my limited exposure to branches):

  1. Migrate the entire CVS repository to a temporary SVN repo (you know how to do it better than I do)
  2. Get a snapshot of the entire repository (using "svnadmin dump")
  3. Because in SVN a branch is just a sub-tree of the repository, you can filter the sub-tree out of the repo using svndumpfilter, to produce a snapshot dump that covers that branch you want only.
  4. Finally, load the filtered snapshot to the real SVN repo (of course, create a temporary repo to test it first!) using svnadmin load.

You can find more about svndumpfilter here (and also svnadmin):

Repository Maintenance

Good luck!

One big problem is that entire repository is about 1.5 TB, so i cannot migrate it to SVN that easy ...
Also there are people using it every day, and i cannot stop it.

If it's really that big .... I'd suggest you to ask the experts on subversion's mailing list and post a solution that works for you back here. I'll be very interested to know how to do that. You may need to use third-party tools (if exists) for that if the programs in the subversion distribution do not satisfy your requirements .....

You should take a look at a project called cvs2svn. Here you will find a utility for SVN conversion from CVS (as the name indicates), and there is a section in the user manual that offers suggestions for "Deciding How Much to Convert". They offer pros/cons and advice on how to proceed for various options. Take a look: cvs2svn: cvs2svn Documentation

However, if I have not misinterpreted the documentation for cvs2svn, that does not appear to have an option for migrating a CVS branch only. My understanding is in CVS, unlike in SVN that a branch is a copy and just works like the trunk except on a separate tree, CVS branches are rooted with a revision on the parent branch and it will not be very surprising to me if indeed cvs2svn does not support migrating a branch only directly.

Correct me if I am wrong.

I guess the original poster already knows about cvs2svn because that is mostly the way to convert a CVS repo to SVN ....

Yes I do know about cvs2svn.

First of all it turns out that the person which requires the SVN conversion is marketing director. So we reviewed what he NEEDS exacty and ...

We solved the problem in not very sciantific way ...
Here is how:

  1. I copied one part of the things that we need to cvsroot/tmp/svn directory
    then used simple bash script with cp and cvs rtag commands to delete all unnecessery branches and tags .. (I got the branches / tags from cvsweb interface)

  2. copied second part, and repeated 1, then tirth part ... and so on ...

  3. After long time of copy / cvs rtag -d (allmost 24h ).... we had one not very big (approx. 1G) repository in cvsroot/tmp/svn.
    This repository was compressed, and sent to my colege, for SVN transformation on remote server.

My personal conclusion:
Before proceed, make sure you know that the person that wants huge changes to well working (and proven) system knows what he / she wants :))

Cheers.

Well, for a repo gigantic as that, there is not too much "scientific" you can do. Whatever approach that satisfies the purpose, it is worth exploring. :b:

But curious to know, as you mentioned the CVS repo is active and you couldn't stop people commiting, how did you do the cp?