Using Bazaar on Git projects

Overview

bzr-git lets developers use Bazaar as their VCS client on projects still using Git as their VCS tool. Access to Git repositories is largely transparent, i.e. you can use most bzr commands directly on Git repositories exactly the same as if you were using bzr on native Bazaar branches.

bzr-git is shipped with the Windows Bazaar installer and packages are available for most other platforms.

To contribute testing, bug reports or code, see https://launchpad.net/bzr-git.

A simple example

It is possible to use normal Git URLs or paths when bzr-git is installed. The alternative rsync-like syntax for addressing repositories is not supported. For example, to create a local clone of gnome-specimen, run:

bzr branch git://git.gnome.org/gnome-specimen

When pushing to github, make sure that you use “git” as your username. For example:

bzr dpush git+ssh://git@github.com/jelmer/dulwich.git

Addressing colocated branches

Git uses multiple branches in a single repository. To address one of the non-HEAD branches, use URL path segment parameters. For example, to copy the branch ‘temp-fixes’ from the main dulwich repository, use:

bzr branch git://git.samba.org/jelmer/dulwich.git,branch=temp-fixes

Limitations of bzr-git

No support for submodules

Bazaar has been working on the concept called “nested trees” maps well to the concept of submodules. Nested trees is still a work in progress, and until Bazaar supports it, it will not be possible to clones repositories with submodules.

Limited push support

It is not possible to push Bazaar revisions into Git at the moment while keeping all metadata. However, it is possible to push those parts of the Bazaar revisions that can be natively represented in Git using the “bzr dpush” command.

The metadata that can not be pushed into git includes the bugs metadata and rename information.

See the bzr-git web page, http://wiki.bazaar.canonical.com/ForeignBranches/Git, for the current list of constraints.