~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to doc/en/admin-guide/migration.txt

  • Committer: Robert Collins
  • Date: 2007-11-18 19:56:39 UTC
  • mfrom: (3006 +trunk)
  • mto: This revision was merged to the branch mainline in revision 3038.
  • Revision ID: robertc@robertcollins.net-20071118195639-m6zf3d5ljjw88kkn
Merge bzr.dev.

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
Migration
2
 
=========
3
 
 
4
 
Migrating between version control systems can be a complicated process, and
5
 
Bazaar has extensive documentation on the process at 
6
 
http://doc.bazaar.canonical.com/migration/en and we won't attempt to repeat that
7
 
here.  We will try to give a few motivating examples for conversion from
8
 
Mercurial and Subversion.
9
 
 
10
 
Fast Import
11
 
-----------
12
 
 
13
 
In many projects wishing to use Bazaar, there is pre-existing history for the
14
 
codebase that should be taken into consideration.  Bazaar leverages an
15
 
interchange format originally developed for Git called `fast-import` to
16
 
provide migration strategies for many other version control systems.  To
17
 
work with fast-import files, Bazaar needs the `fastimport`_ plugin.  This can
18
 
be installed as with any Bazaar plugin.
19
 
 
20
 
.. _fastimport: http://launchpad.net/bzr-fastimport
21
 
 
22
 
The way that fast-import can be used for migration is to export the existing
23
 
history into a fast-import file, then use the ``bzr fast-import`` command.
24
 
The `fastimport` plugin includes exporters for Subversion, CVS, Git, Mercurial
25
 
and darcs, accessible as the ``fast-export-from-XXX`` commands.  Note that
26
 
``fast-import`` should not be used in a branch with existing history.
27
 
 
28
 
Assuming that ProjectX was first developed in Mercurial before switching to
29
 
Bazaar, and that the Mercurial repository is in ``/srv/hg/projectx``, the
30
 
following commands will import that history into a newly created ``trunk``
31
 
branch.  (Recall that in `Further Configuration
32
 
<simple-setups.html#further-configuration>`_ we created the
33
 
``/srv/bzr/projectx`` directory as a shared repository.)
34
 
 
35
 
::
36
 
 
37
 
  $ cd /srv/bzr/projectx
38
 
  $ bzr fast-export-from-hg ../../hg/projectx projectx.fi
39
 
  $ bzr init trunk
40
 
  $ bzr fast-import projectx.fi trunk
41
 
 
42
 
Subversion Conversion
43
 
---------------------
44
 
 
45
 
As the most common centralized version control system, migration from
46
 
Subversion is particularly important for any *new* version control system.
47
 
Bazaar's `svn`_ plugin provides tools for interaction with Subversion
48
 
projects.  In fact, Bazaar can be used transparently with projects stored in
49
 
Subversion, but that is beyond the scope of this document.  (See
50
 
http://doc.bazaar.canonical.com/migration/en/foreign/bzr-on-svn-projects.html for
51
 
more on that subject.)  What is relevant here is the ``svn-import`` command
52
 
provided by that plugin.  This can import an entire subversion repository
53
 
including tags and branches, particularly if they are stored in Subversion's
54
 
recommended directory structure: ``/tags/``, ``/branches/`` and ``/trunk/``.
55
 
 
56
 
This command has flexible ways to specify what paths within the Subversion
57
 
repository contain branches and which contain tags.  For example, the
58
 
recommended layout for Subversion projects (called ``trunk`` by the svn
59
 
plugin) could be specified in ``~/.bazaar/subversion.conf`` as
60
 
 
61
 
::
62
 
 
63
 
  [203ae883-c723-44c9-aabd-cb56e4f81c9a]
64
 
  branches = branches/*
65
 
  tags = tags/*
66
 
 
67
 
This allows substantially complicated Subversion repositories to be converted
68
 
into a set of separate Bazaar branches.  After installing the svn plugin, see
69
 
``bzr help svn-import`` and ``bzr help svn-layout``.
70
 
 
71
 
.. _svn: http://launchpad.net/bzr-svn
72
 
 
73
 
.. TODO: Legacy VCS to bzr sync.  Tailor?  Incremental conversions?