Git Adoption Soaring; Are There Good Migration Strategies?
Got To Get Me A Git writes "Distributed version control systems (DVCS) seem to be the next big thing for open source software development. Many projects have already adopted a DVCS and many others are in the process of migrating. There are a lot of major advantages to using a DVCS, but the task of migrating from one system to another appears to be a formidable challenge. The Perl Foundation's recent switch to Git took over a year to execute. The GNOME project is planning its own migration strategy right now after discovering that a significant majority of the project's developers favor Git. Perhaps some of the projects that are working on transitions from other mainstream version control systems can pool their resources and collaborate to make some standardized tools and migration best practices documentation. Does such a thing already exist? Are any folks out there in the Slashsphere working on migrating their own project or company to a DVCS? I'd appreciate some feedback from other readers about what works and what doesn't."
I always though bzr had the edge on git in terms of being a better DVCS. Is there a reason why the article seems to think that git is the default?
Use cvs2svn to convert your existing CVS repositories.
The tools that come with git for converting CVS to git do not work. You will see other posts about how git is different, such as how it manages commits versus files. CVS manages files, and doesn't track them well.
It has no ideas of when a branch ends, and even when they start is a bit iffy. Add to that the fact that CVS lets you pick and choose random files to be on a branch, then you can really start to get into a strange state.
For our CVS repository (goes back to 2001, we had 100's of branches, maybe 1000 tags), the git cvsimport tool placed code from our current development trunk into older versions. I'm sure you can see how bad that is.
After getting burned by that, we turned to cvs2svn. It took a long time (8 hours) to convert, but it converted correctly, and you only ever have to do it once.
My advice is to convert your repository, then check out random versions from both CVS and git, then run a diff on all the branches of importance. I wrote a script to do it for all branches and tags because I got burned the first time.