SUSE Conversations


Migrating from CVS to Subversion



By: Savia Mendes

November 9, 2006 12:00 am

Reads:172

Comments:0

Rating:0

Switching from one version control system to another can be a daunting task; not only do you need to learn the new system, but you need to find a way to retain as much history of your project as you can. Converting from CVS to Subversion gives the same problem, and there are a couple of solutions: The first is to give up the history of your project as stored in CVS, to maintain your CVS repository as read-only for the history, and to start the Subversion repository from scratch; or you can try to import your CVS repository with all associated history into Subversion.

The last is the most desirable and also the most difficult. Fortunately, some tools exist to help with this, including cvs2svn, a program that attempts to import your old CVS projects and their history into a Subversion repository. cvs2svn can be downloaded from http://cvs2svn.tigris.org/.

The first step is to download cvs2svn and untar the tarball. Next, make a copy of your cvsroot; although cvs2svn does nothing to the CVS repository itself, it’s prudent to work from a copy rather than the real thing, just in case.

For instance:

<code>
$ mkdir -p ~/tmp/newcvs/CVSROOT
$ cp -av /cvsroot_/* ~/tmp/newcvs/
</code>

If you wish to only import one module, you can do so by copying /cvsroot/project rather than the entire cvsroot directory and all the modules it contains. The next step is to run cvs2svn on the copied cvsroot and make a dumpfile suitable for Subversion to import:

<code>
$ ./cvs2svn --dump-only ~/tmp/newcvs
</code>

This will create the file cvs2svn-dump in the current directory. Now you can import the dump file into an existing Subversion repository:

<code>
$ svn mkdir file:///home/user/Subversion/repos/project -m "Initial   project import"
$ svnadmin --parent-dir project load /home/user/Subversion/repos < cvs2svn-dump
</code>

At this point, your project, with all associated history, has been imported. The above is suitable if you have an existing Subversion repository and want to import a module at a time, or only a few modules. If you want to do a straight dump of your entire cvsroot into a new Subversion database you can use:

<code>
$ ./cvs2svn -s /home/user/Subversion/repos /cvsroot
</code>

This will import the entire cvsroot and its history into the new Subversion repository. Depending on how large the CVS repository is (and how much history it has), this may take some time.

VN:F [1.9.22_1171]
Rating: 0.0/5 (0 votes cast)

Categories: Uncategorized

Disclaimer: As with everything else at SUSE Conversations, this content is definitely not supported by SUSE (so don't even think of calling Support if you try something and it blows up).  It was contributed by a community member and is published "as is." It seems to have worked for at least one person, and might work for you. But please be sure to test, test, test before you do anything drastic with it.

Comment

Migrating from CVS to Subversion



By: Savia Mendes

November 9, 2006 12:00 am

Reads:0

Comments:0

Rating:0

Switching from one version control system to another can be a daunting task; not only do you need to learn the new system, but you need to find a way to retain as much history of your project as you can. Converting from CVS to Subversion gives the same problem, and there are a couple of solutions: The first is to give up the history of your project as stored in CVS, to maintain your CVS repository as read-only for the history, and to start the Subversion repository from scratch; or you can try to import your CVS repository with all associated history into Subversion.

The last is the most desirable and also the most difficult. Fortunately, some tools exist to help with this, including cvs2svn, a program that attempts to import your old CVS projects and their history into a Subversion repository. cvs2svn can be downloaded from http://cvs2svn.
tigris.org/
.

The first step is to download cvs2svn and untar the tarball. Next, make a copy of your cvsroot; although cvs2svn does nothing to the CVS repository itself, it’s prudent to work from a copy rather than the real thing, just in case.

For instance:

<code>
$ mkdir -p ~/tmp/newcvs/CVSROOT
$ cp -av /cvsroot_/* ~/tmp/newcvs/
</code>

If you wish to only import one module, you can do so by copying /cvsroot/project rather than the entire cvsroot directory and all the modules it contains. The next step is to run cvs2svn on the copied cvsroot and make a dumpfile suitable for Subversion to import:

<code>
$ ./cvs2svn --dump-only ~/tmp/newcvs
</code>

This will create the file cvs2svn-dump in the current directory. Now you can import the dump file into an existing Subversion repository:

<code>
$ svn mkdir file:///home/user/Subversion/repos/project -m "Initial   project import"
$ svnadmin --parent-dir project load /home/user/Subversion/repos < cvs2svn-dump
</code>

At this point, your project, with all associated history, has been imported. The above is suitable if you have an existing Subversion repository and want to import a module at a time, or only a few modules. If you want to do a straight dump of your entire cvsroot into a new Subversion database you can use:

<code>
$ ./cvs2svn -s /home/user/Subversion/repos /cvsroot
</code>

This will import the entire cvsroot and its history into the new Subversion repository. Depending on how large the CVS repository is (and how much history it has), this may take some time.

VN:F [1.9.22_1171]
Rating: 0.0/5 (0 votes cast)

Categories: Uncategorized

Disclaimer: As with everything else at SUSE Conversations, this content is definitely not supported by SUSE (so don't even think of calling Support if you try something and it blows up).  It was contributed by a community member and is published "as is." It seems to have worked for at least one person, and might work for you. But please be sure to test, test, test before you do anything drastic with it.

Comment

RSS