Diff for "FeatureHighlights/BranchImports"

Not logged in - Log In / Register

Differences between revisions 7 and 8
Revision 7 as of 2008-06-17 14:21:16
Size: 3234
Editor: localhost
Comment: converted to 1.6 markup
Revision 8 as of 2008-09-15 14:41:25
Size: 3373
Editor: 92-237-59-186
Comment:
Deletions are marked like this. Additions are marked like this.
Line 1: Line 1:
= Overview =
Line 2: Line 3:
= Interoperability with CVS and SVN =

Most free software projects still use
CVS or Subversion (SVN) as their primary revision control system. They are well-understood and fast - for the core developers -systems. While they do have the disadvantage that branching and merging are not well supported, they're still effective and hence widely used.
There's a lot of free software code available in CVS or Subversion (SVN) repositories. as their primary revision control system. They are well-understood and fast - for the core developers - systems. While they do have the disadvantage that branching and merging are not well supported, they're still effective and hence widely used.
Line 8: Line 7:
Launchpad and Bazaar can help you address this problem, while keeping the project trunk in the well-understood CVS or SVN. Launchpad and Bazaar can help you address this problem, without asking the project's core developers to change en-masse to a different version control system. You can ask Launchpad to import a CVS or Subversion repository into a Bazaar branch on Launchpad.
Line 10: Line 9:
To do this, you need to set up a branch import. = Trunk imports =
Line 12: Line 11:
== Branch imports == Launchpad supports the import of the primary development trunk of a project from CVS or SVN. A good example is the Drupal project. Launchpad imports Drupal's trunk as [[https://launchpad.net/drupal/main|its "main" series]] in Launchpad.
Line 14: Line 13:
These should more correctly be called "trunk imports" since Launchpad only supports 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: ||<tablestyle="font-size: 0.8em; width:30%; background:#F1F1ED; margin: 1em 1em 0 0;" style="padding:0.5em;">{{attachment:drupal-import.png}}||
||<style="text-align: center;">'''Drupal's main series - an import'''||
Line 16: Line 16:
  https://launchpad.net/drupal/main 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 Subversion 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.
Line 18: Line 18:
Here's a screenshot of the import details: Perhaps the most visible difference between a branch that's the result of an import from CVS or Subversion is that the branch's owner is the [[https://code.edge.launchpad.net/~vcs-imports|VCS imports]] team/
Line 20: Line 20:
{{attachment:drupalmainimport.png}}

As you can see, the import is 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!):

  https://code.launchpad.net/~vcs-imports/drupal/main

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

{{attachment:drupalmainbranch.png}}
= Requesting an import =
Line 36: Line 28:
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 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. Its best just to get started, and see how it goes. We are constantly improving the voodoo. == Making your request =
Line 38: Line 30:
When you request an import, you use the "Answer Tracker", which is [[FeatureHighlights/AnswerTracker|the next stop]] on our tour of Launchpad. 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 [[https://code.edge.launchpad.net/+code-imports/+new|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.

Overview

There's a lot of free software code available in CVS or Subversion (SVN) repositories. as their primary revision control system. They are well-understood and fast - for the core developers - systems. While they do have the disadvantage that branching and merging are not well supported, they're 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 that can interoperate with that core team. Instead, they have to email patches, which can rot over time.

Launchpad and Bazaar can help you address this problem, without asking the project's core developers to change en-masse to a different version control system. You can ask Launchpad to import a CVS or Subversion repository into a Bazaar branch on Launchpad.

Trunk imports

Launchpad supports the import of the primary development trunk of a project from CVS or SVN. A good example is the Drupal project. Launchpad imports Drupal's trunk as its "main" series in Launchpad.

Drupal's main series - an import

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 Subversion 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.

Perhaps the most visible difference between a branch that's the result of an import from CVS or Subversion is that the branch's owner is the VCS imports team/

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.

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.

== 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.

FeatureHighlights/BranchImports (last edited 2010-11-11 19:50:44 by 122-63-10-108)