Re: [PROBLEM] cvs2svn for git

Michael Haggerty <[email protected]> Wed, 16 Sep 2015 10:15:26 +0200
Newsgroups gmane.comp.version-control.subversion.cvs2svn.user
Message-ID <[email protected]>
On 09/14/2015 05:33 PM, Guilherme Andrade de Magalh=C3=A3es wrote:
> [...]
> I am doing the migration of the SCM tool, from CVS to Git, and there are
> many projects that is under this migration, I'm using cvs2git scripts to
> make this migration, as I can see it's the perfect solution to my problem=
.
>=20
> The problem that I'm facing is about CVS, I don't have many skills with
> this tool, and when I try to run the command for the script:
>=20
> python dev/myproject -- options=3Dcvs2svn.options
>=20
> It runs, but when it tries to run this command:
>=20
> cvs -Q -R -f -d dev/myproject co -r1.8.2.1 -p -kb
> dev/projecttobemigratted/.classpath
>=20
> Give this error:
>=20
> ERROR: The command 'cvs -Q -R -f -d dev/myproject co -r1.8.2.1 -p -kb
> dev/projecttobemigratted/.classpath' failed with exit status=3D1 and the
> following output:
> cvs [checkout aborted]: Couldn't open default trigger library: No such
> file or directory

Was your repository created using CVSNT or standard CVS? If your
repository was created with standard CVS, then you should be able to run
the conversion using any standard version of CVS (i.e., not CVSNT). If
your repository was created using CVSNT, read on.

CVSNT and CVS are not quite the same thing:

* CVS is an open-source project, developed in the open, and free to
everybody.

* CVSNT is a fork of CVS that is enhanced by a greedy company that is
doing everything it can to earn money from it: developing it in secret,
making it almost impossible for the community to use the full software
for free even though a large part of it was developed by volunteers, and
doing the absolute bare minimum required to comply with the letter of
the GPL license (or maybe not even that) without adhering to its spirit.

CVS and CVSNT are almost, but not quite, compatible in their data
formats. See [1] for how to use cvs2git if you have a CVSNT repository.
Please note that you need to use the "CVSNT" version of cvs to extract
the data from your repo.

It's hard to tell, but it appears that the greedy company has stripped
the ":local:" protocol out of CVSNT, so current versions cannot read
from a local repository any more. This is a very nasty development. My
guess is that they made this change for two reasons: (1) to force you to
use their server product, and (2) to making it harder for you to get
your data out of their proprietary software.

So if the information above is true, then you have to work around the
obstacles that the greedy company has put in your way. I can think of
the following possibilities:

1. Get an older version of CVSNT (one that still supports the ":local:"
   protocol) and use that with cvs2git to extract your data. I think
   this would be by far the easiest approach.

2. Use a tool to extract data from a remote CVS repository into a
   local CVS repository, then convert the copy. People have mentioned
   "cvsclone" and "cvssuck" as tools that can possibly do this. This
   will only work if these tools work with a remote *CVSNT* repository
   and produce a local *CVS* repository; I have no idea if that is
   the case.

3. Use a different conversion tool than "cvs2git" that can use a remote
   CVSNT repository as its source. I don't know if there is such a
   thing.

4. Change (or find somebody who can change) cvs2git to work with CVSNT
   repositories directly. I suppose this shouldn't be too hard. The
   main problem is that the CVSNT file format is poorly documented.

5. Change (or find somebody who can change) cvs2git to use the local
   CVSNT repository for reading the metadata and history (it can
   mostly do that already), but to use a remote cvs command to read the
   file contents. I suppose this also shouldn't be too hard, but for
   testing you would have to find somebody with a copy of CVSNT.

> [...]
> I need to remember that I'm running the script on a windows machine and
> I don't know if this can be a problem, Should I run on the server
> machine that is a Linux based OS?

Linux support is better for most of these tools, but modern Linux
distributions don't support CVSNT anymore because of the problems listed
above. It might be possible to get an old version of CVSNT running under
Linux, maybe by compiling from source.

I'm sorry the answer is not easier. This is an unfortunate consequence
of trusting your valuable data to proprietary software.

Please let us know how it works out.

Michael

[1] http://cvs2svn.tigris.org/faq.html#cvsnt

--=20
Michael Haggerty
[email protected]

------------------------------------------------------
http://cvs2svn.tigris.org/ds/viewMessage.do?dsForumId=3D1670&dsMessageId=3D=
3137893

To unsubscribe from this discussion, e-mail: [[email protected]=
ris.org].