Launchpad Help > Code > Imports from Bazaar, CVS, Subversion and Git
Overview
There's a lot of free software code available in CVS, Subversion (SVN) and Git repositories, or Bazaar repositories that aren't hosted on Launchpad. Sometimes you're going to want to have this code available on Launchpad in Bazaar. Perhaps you use Bazaar for your project and you'd like to use a Git-based project as a dependency. Perhaps you'd like to do some work on a CVS project but would prefer to use a more modern version control system. Maybe you'd like to hack on a project that uses Subversion, but you don't have commit rights.
If any of this is striking a chord, then you probably want to know about Launchpad's code import system. Read on.
Trunk imports
Launchpad supports the import of the primary development trunk of a project from CVS, SVN or Git. A good example is the Drupal project. Launchpad imports Drupal's trunk as its "head" series in Launchpad.
As you can see, there's a Bazaar branch of Drupal's code. Launchpad updates that branch regularly by importing the latest from Drupal's trunk CVS repository. It works just like any other branch in Launchpad: you can see the latest commits and you can create your own Bazaar branch of it and then upload it back to Launchpad.
Requesting an import
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. (Git mostly does, but sometimes represents that information quite differently from how Bazaar does.)
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, where people have to manually tinker with its internals to do renames.
Making your request
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 request one and we put it in a queue. Sometimes it takes 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. It's best just to get started and see how it goes. We are constantly improving the voodoo.
Next step
Informal support happens in many different places in the free software world. Launchpad aims to bring bug tracker-like qualities to giving and asking for help. Let's look at Launchpad Answers.