time to switch from CVS to Git, was: Missing mailings from commits



On 02/21/2011 03:24 PM, Raymond Toy wrote:
> On 2/21/11 1:49 PM, Robert Dodier wrote:
>> I know there are other systems we could use, other than Git,
>> but Git is the only one that has gotten any traction with the
>> Maxima developers, from what I can tel
>>
>> Can somebody figure out how to change over from CVS to Git
>> and explain the plan to us and then carry it out?
> Since Leo has already done it, perhaps he is in the best position.  I
> recently converted a cvs repo on sourceforge  to git using "git
> cvsimport".  Worked pretty well and preserved the logs, branches, and
> tags.  Using gitk --all on Leo's git repo seems to show that everything
> is preserved.  Didn't check in detail, though.
>
> The only thing I would like to see is that real names and emails be
> imported into git, at least for the currently "active" developers.

Caution is required here. I have converted several different CVS 
repositories to git over the past few years. I found that git-cvsimport 
always *appeared* to work, but *often* produced git checkouts that were 
subtly different from the cvs versions. In fact, I think I was 
experimenting with the Maxima repository when I first noticed that my 
git version didn't match up with the cvs version.

The last time I tried to use git-cvsimport was a couple of years ago, so 
it may be that it has been substantially improved in the meantime. 
However, I looked into fixing it myself at the time and learned that the 
extraction of historical cvs data from a cvs repository is much more 
complicated than I had ever dreamed. In the end, I used the git-ized 
version of cvs2svn to do conversions. I have found that to be much more 
reliable, even though I have had to tweak it a little from time to time.

I sent Robert a private email volunteering to help with the maxima 
cvs-git conversion a little while ago, but haven't found time to follow 
up. (Sorry about that, Robert.) It appears that the time is now, 
however. Here is what I suggest:

1) Carefully check that the current CVS version is identical to the 
git-cvsimport version. I.e., do a recursive diff on checked-out copies 
of both.
2) Repeat (1) for the past n-releases, where n is limited by patience.

If (1) and (2) pass, git-cvsimport has been greatly improved and you 
should carry on with the plan. If not, somebody should try using cvs2svn 
to do the conversion. I would be happy to do it if someone can point me 
to the tarball of the cvs files (the repository, not just a checkout.) 
(Obviously, I used to know how to get that, but it's been a while.)

--Jim