Bazaar Fast Import
bzr-fastimport provides a back-end for fast data importing into Bazaar. The usual recipe is:
bzr init-repo . front-end | bzr fast-import -
Key features include:
- Fast data importing from most popular VCS tools
- Easy to develop custom exporters
- Import whole repositories: branches are created for each head detected.
Note: [https://launchpad.net/bzr-fastimport bzr-fastimport] was inspired by Shawn Peace's [http://www.kernel.org/pub/software/scm/git/docs/git-fast-import.html git-fast-import] and uses a stream format that is upwardly compatible with it. Thanks go to Shawn and the Git community for developing that tool and a range of matching front-ends.
Downloads, Bugs, etc.
This plugin is hosted on Launchpad here: https://launchpad.net/bzr-fastimport. After installing Bazaar, grab the latest source like this:
bzr branch lp:bzr-fastimport fastimport
Bugs can be raised and tracked via Launchpad's bug tracker: https://bugs.launchpad.net/bzr-fastimport/. If you have questions or ideas for discussion, please use the main Bazaar mailing list, <firstname.lastname@example.org>.
After installing the plugin, see the online help and the bundled documentation.
See [:/FrontEnds: Bazaar Fast Import Front-Ends] for a list of recommended exporters from other tools. Front-ends are available for Subversion, CVS, Git, Mercurial, Darcs and Perforce among others.
The numbers are very dependent on the number of files and number of revisions. As a rough guide, around 1000 revisions per minute can be imported for projects of several hundred files on a typical desktop. For example, the 6000+ revisions of Wordpress (500 files) can be imported from a Subversion export in just over 2 minutes on my Dell Dimension 9200. Other benchmarking suggests import performance 5-20 times that of bzr-git, for example.
Many projects take the opportunity to clean up cruft when migrating from an older VCS tool to a new one. Rolling your own exporter is often a good way of doing that. If you want to do this, see [:/StreamFormat: Bazaar Fast Import Stream Format] for the detailed format specification. Exporters can easily be developed in most scripting languages (Python, Perl, Ruby, etc.) and are typically just a few hundred lines long.
bzr-fastimport does not yet support incremental migration as required by users wishing to mirror projects maintained in foreign tools. That's coming soon.