Migrating CVS repositories to Bazaar

Michael Haggerty mhagger at alum.mit.edu
Tue Feb 17 06:10:30 GMT 2009


Ian Clatworthy wrote:
> Michael Haggerty wrote:
>> For some reason there has been very little feedback from the bzr
>> community about how well this works. [...]
> 
> Apologies for the lack of feedback. [...]

Totally understood.  I'm glad to see that you are back in the saddle,
and I hope things are going well.

> On the bright side of things, I have been able to make a pile of
> improvements to bzr-fastimport in just the last few days so, if anyone
> was having problems going from CVS -> Bazaar using the combination of
> our tools, hopefully things will be working better for them now. I still
> don't have much time available to work on this more but I am hoping to
> make bzr-fastimport much quicker for our next generation repo format we're
> currently working hard on getting released.

Sounds good.

> FWIW, I think it would help a lot of users find "cvs2git" if it had wrappers
> and matching web pages titled cvs2bzr and cvs2hg. All 3 of these tools
> now support the git-fast-import stream format as a defacto import/export
> and interchange standard I believe. Perhaps someone in the Bazaar
> community more familiar & experienced with your tools than I could
> volunteer to help you make this happen if you lack the time/knowledge?
> If so, what exactly would you like from us? Patches? Advice? A free
> t-shirt? :-)

Well, until recent (and as-yet-unreleased) changes, there hasn't even
been a "cvs2git" wrapper script--only the marginal webpage and my
spamming of the three tools' mailing lists.  So don't feel neglected :-)

I have been a little reluctant to advocate "cvs2bzr" without at least
some feedback saying that it works.  And without that advocacy and
feedback, of course normal people won't try it :-(  Since I have neither
experience with bzr nor much time to figure it out and do the testing,
the status has been stuck here for a long time.

cvs2git currently doesn't interact with git at all--it simply dumps one
or two git-fast-import files to disk for the user to load manually using
"git fast-import".  Therefore, at the current state of technology,
cvs2git == cvs2hg == cvs2bzr and I could just as well have called it
cvs2fastimport (or cvs2fast-import; can't you guys come to agreement
about hyphens?!? :-) ).  Of course in the future it would be nice if the
converter would pipe its output directly to the corresponding
fast-import tool and then the three wrappers would diverge from each
other a bit more.

Only over the past few weeks have I introduced an actual "cvs2git"
script that starts up cvs2svn in the "2git" mode rather than having to
use cvs2svn with a large options file.  Now that that is done, it would
be pretty easy to add cvs2bzr and cvs2hg scripts--if somebody would tell
me what default options to use.  For example:

- cvs2xxx can output blobs in a file separate from that of the DAG (much
faster, supported by git-fast-import) or inline blobs (much slower,
needed by "hg fastimport").  Which one would bzr-fastimport prefer?

- A git commit can have an arbitrary number of parents.  An hg commit
can have at most two.  Does bzr have a limit?

- Are there any other limitations of bzr-fastimport relative to the
git-fast-import file format specification?  Does bzr need any additional
information?

Eventually it would also be nice to add support for the bzr version of
some of the things listed as "limitations" on the cvs2git page [1].  For
example, handling of .cvsignore files, checking bzr constraints on tag
and branch names, etc.  I think that bzr also keeps track of
directories, doesn't it (even empty ones)?  That might require some
tweaks in the cvs2bzr output.

Gotta go,
Michael

[1] http://cvs2svn.tigris.org/cvs2git.html



More information about the bazaar mailing list