cvsps, parsecvs, svn2git and the CVS exporter mess

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Wanting reposurgeon to be able to read CVS repositories has landed me
in the middle of a mess.  This note explains my thinking, what I
intend to do to fix the mess, and how others can help if they are
motivated.  I have copied all the individuals who I know have an
interest in the problem, and the git list because what I'm planning is
going to be significant for them.

My requirement is not complicated to describe. For use as a
reposurgeon front end I need a tool that is basically a
cvs-fast-export, runnable in either a CVS repository or a checkout
(either will do, both is not required) and emitting a fast-import
stream.

There are three competing tools that might fit this bill.  

* One is Michael Haggerty's cvs2git.  I had bad experiences with the
cvs2svn code it's derived from in the past, but Michael believes those
problems have been fixed and I will accept that - at least until I can
test for myself.  Its documented interface is not quite good enough
yet; as the documentation says, "The data that should be fed to git
fast-import are written to two files, which have to be loaded into git
fast-import manually."

* Another is the cvsps code formerly maintained by David Mansfield and
used by git-cvsimport; he passed the maintainer's baton to me, and I
have shipped a 3.0 with a working --fast-export option.

* A third is parsecvs, which Keith Packard and Bart Massey handed off
to me a week before David invited me to take over cvsps.  While
parsecvs does not yet have a --fast-export option, I anticipate no
great difficulty in adding one.

It is pure accident that I now maintain two of these.  Initially I
was interested in parsecvs, but it failed to build for me.  By the
time Bart Massey sent me a fix patch, I had already been handed 
cvsps, added --fast-export, and shipped 3.0.

Having three different tools for this job seems to me duplicative and
pointless; two of them should probably be let die an honorable death.
I don't actually care which of the three survives - and, in
particular, if I determine that cvs2git is doing the best job of the
three I am quite willing to declare end-of-life for cvsps and
parsecvs.  It's not like I don't have plenty of other projects to work
on.

Therefore, I think my main focus needs to be developing a really
effective test suite to triage these tools with and applying it to all
three.  I have already made a solid start on this; see
tests/cvstest.py and tests/basic.tst in the cvsps-3.0 distribution for
my test framework.

I presently know of three test suites other than mine. One was built
by Heiko to test cvsps, another lives in the git t/ directory, and the
third is cvs2git's. I haven't looked at cv2git's yet, but the others
are not in their present form suited to where I am taking cvsps and
parsecvs.  Heiko's relies on the default human-readable cvsps format,
which I consider obsolete and uninteresting.  The git tests are
dependent on details of porcelain behavior.  I think it would be
better to test import-stream output.

Here is what I propose.  Let's build a common test suite that cvs2git,
git-cvsimport, cvsps, and parsecvs can all use, apply it rigorously,
and let the best tool win.  (This would mean, among other things, that
git can stop carrying things that are essentially cvsps tests in its
tree.)

The two people I most need to sign off on this are, I guess, Michael
Haggerty and either Junio Hamano or whoever specifically owns
git-cvsimport and its tests.  Whichever way this comes out, the back
end of git-cvsimport is going to need some work - I don't plan to put
any further effort into the output format it's presently using.

If we can agree on this, I'll start a public repo, and contribute my
Python framework - it's more capable than any of the shell harnesses
out there because it can easily drive interleaved operations on multiple 
checkout directories.

Anybody who is still interested in this problem should contribute
tests.  Heiko Voigt, I'd particularly like you in on this.  David
Mansfield, if you can spare the few minutes required to write
generators for the "funky" and "invalid" tag cases, that would be
really helpful.  Michael Haggerty, your piece would be moving the
cvs2git tests to the new framework.
-- 
		<a href="http://www.catb.org/~esr/";>Eric S. Raymond</a>

The kind of charity you can force out of people nourishes about as much as
the kind of love you can buy --- and spreads even nastier diseases.
--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [Linux Kernel Development]     [Gcc Help]     [IETF Annouce]     [DCCP]     [Netdev]     [Networking]     [Security]     [V4L]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]     [Fedora Users]