I have done this with a similar repository under similar circumstances, but using Mercurial.
I proceeded as follows: 1. I imported the CVS head branch straight into Mercurial using Tailor in the standard way. 2. For each of the branchpoints of the branches I was interested in, I found the mercurial revision that matched the branchpoint by manually trawling through the CVS logs and matching them up with the mercurial logs. 3. I created a separate tailor project for each of the branches I wanted to import. The project was a straight-line import of the branch (with start-revision = <branchname> INITIAL). I didn't run tailor yet, however... 4. For each of these tailor repositories, I cloned the mercurial repository into the shared source directory (where tailor would normally create a new mercurial project for the branch), but I only cloned the history up until the revision that I wanted. I then removed all working files (anything that would interfere with CVS doing a checkout of the branch there). I only left the mercurial repository, in .hg .hgignore and .hgtags; all other files were deleted. (If you leave files that match the CVS ones, CVS will generate an error when it tries to check out the repository). At this point, Tailor thinks that there is no repository there. When it thinks that it is creating a new file or directory, it is really just putting modified files into mercurial. And the initial checkout matches the version already in mercurial, so there is no delta for the first commit. 5. I then ran tailor on each of the branches, ending up with several repositories, with a straight line history for each branch, but all with the same "base" tree. 6. I then pulled all of the changes from all of the repositories together into one repository. Most of the problems that I had were when people had on a branch modified the CVS repository directly, and with various bugs in CVS that had to be worked around (I submitted patches for these to Tailor). I also had to patch CVS to stop it from waiting for 1 second between each operation; with over 50,000 CVS commits it would have taken a long time otherwise. As it was, it took a couple of hours for the cvs HEAD and from several minutes to half an hour for the branches depending upon how many commits there were. Hope this helps, Jeremy On Tuesday 05 June 2007 13:20, Kelly F. Hickel wrote: > Just found this tool yesterday, and I'm trying to see if it can > reasonably convert our cvs repo into monotone, to help us make the > switch. > > > > At the moment, I've been running it on a single cvs module and I killed > it after 700 cpu minutes. This is a heavily used repo, 6 or 7 years old > with constant development by 20 or so developers, and thousands of > branches and tags. I don't really care about most of the branches, just > the 3-4 main development lines. > > > > I see that one of my options is to specify a particular branch. My > question is, if I do this conversion in several steps, say I first do > HEAD, then the 3 or 4 other branches that I care about, will tailor link > up the revision history properly the second, third, or four time I run > it with different branches? > > > > The goal of course is to end up with proper revision history and > branching for the 4 or so branches I care about in monotone. > > > > Thanks, _______________________________________________ Tailor mailing list [email protected] http://lists.zooko.com/mailman/listinfo/tailor
