FeatureHighlights/BranchImports

Not logged in - Log In / Register

Revision 1 as of 2007-03-26 08:45:29

Clear message

Most free software projects still use CVS or Subversion (SVN) as their primary revision control system. This is a well-understood and fast (for the core developers) system. While it does have the disadvantage that branching and merging are not well supported, it's still effective and hence widely used.

The biggest downside to this approach, however, is that it treats newcomers and drive-by participants as second-class citizens. They don't get any form of revision control which can interoperate with that core team - they have to email patches, which can rot over time.

Launchpad and Bazaar together can help you address this problem, while keeping the project trunk in the well-understood CVS or SVN.

To do this, you need to setup a Branch Import.

Branch Imports

These should more correctly be called "trunk imports" since we only support an import of the primary development trunk of a project from CVS or SVN. A good example is the Drupal project, where there is an import of their trunk, recorded as the "main" Series of Drupal in Launchpad:

Here's a screenshot of the import details:

attachment:drupalmainimport.png

As you can see, the import is being published as a Bazaar branch by the "vcs-imports" user. At the time of writing, the drupal import was very active, with commits happening on the CVS trunk and being converted to Bazaar daily. Here's the branch location, if you want to take a look at it now (or branch it, for that matter!):

And a snapshot of the latest commits at the time of writing:

attachment:drupalmainbranch.png

Import precision

Unfortunately, the initial import process is not an exact science. CVS and Subversion don't record enough information for a deterministic import into Bazaar, which is more rigorous about things like renames and changesets. In most cases, where the CVS and SVN repositories have not been manually edited or altered, we can infer what we need and the import goes through smoothly. Sometimes, however, people have tried to work around limitations in CVS or SVN by altering the repositories behind-the-scenes. This is especially true of CVS, which does not support renames, so people have tended to do them manually.

So a good import is part voodoo, part science, part luck. An import will not lose data - we can verify that the result of a checkout of the Bazaar branch is identical to a checkout of the CVS branch. But getting it to that point may well require inspection and custom work. For this reason, we don't have an automated process for the import. Instead, you [:VcsImports:request one], and we put it in a queue. Sometimes it's just an hour or two, sometimes it can take days to get a good import together. In a very few cases, the old repositories are so wedged that we can't get all the history exactly right. Its best just to get started, and see how it goes. We are constantly improving the voodoo.