Bazaar support for Subversion branches, working trees and repositories
======================================================================

.. contents::

Introduction
------------

bzr-svn is a plugin that allows Bazaar_ direct access to Subversion_ 
repositories. It allows most bzr commands to work directly against Subversion 
repositories, as if you were using bzr with a native bzr repository.

.. _Bazaar: http://bazaar-vcs.org/
.. _Subversion: http://subversion.tigris.org/

The plugin can at the moment be used to commit to, pull from, merge from, push 
to and view logs of Subversion branches from Bazaar.


Features
--------

The following features are currently present:

- Connecting to remote Subversion repositories over all 
  protocols supported by Subversion itself (at present: 
  svn://, svn+ssh://, http:// (webdav), file://) 
  as well as dump files. 

  Checkouts, lightweight checkouts and branching works.

- Integrates well with Bazaar.

- Track Bazaar merges in Subversion. Merged revisions show up 
  as ghosts.

- Subversion working copies. Can be modified, queried 
  (``bzr status`` on a svn- native working copy created with 
  ``svn co`` works) and committed from.

- Committing to Subversion from Bazaar.

- Push Bazaar revisions to Subversion. 

- Follow branch copies. Revision history is not 
  truncated when a branch was copied in Subversion.

- Efficiently uses network bandwidth.

- Recognizes file metadata (executable bits, symbolic links).

- 'svn-import' command with functionality similar to svn2bzr_.

.. _svn2bzr: http://bazaar-vcs.org/svn2bzr

- Ability to track merges done with SVK_ and write merges from SVK/Subversion 
  branches in a format understandable by SVK.

.. _SVK: http://svk.elixus.org/

- Writes svn:mergeinfo property used by Subversion 1.5.

- Generates consistent file ids and revision ids. Two branches made using 
  this plugin of the same Subversion branch will result in *exactly* the same 
  Bazaar branch.

- Handles complex operations in Subversion: committing to two branches at 
  once, upgrading directories to branches, copies from early revisions, ...

- Tested on Linux, Windows and Mac OS X. 

Documentation
-------------

bzr-svn can be used through the regular Bazaar user interface, see the 
`Bazaar Documentation Overview`_ for documentation on that.

.. _Bazaar Documentation Overview: Documentation

Some bzr-svn specific issues are answered by the FAQ_.

.. _FAQ: http://samba.org/~jelmer/bzr-svn/FAQ.html

The way Bazaar metadata is stored in Subversion and the other way around is 
specified in the `mapping specification`_.

.. _mapping specification: BzrForeignBranches/Subversion/mapping

Limitations
-----------

Unsupported Subversion File Properties
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Some Subversion properties can currently not be represented in Bazaar and are 
therefore ignored for the time being:

- 'svn:ignore'. There should be a `Repository.get_ignores(revid)` call in 
  Bazaar rather than a magic '.bzrignore' file. 
  Spec at https://launchpad.net/products/bzr/+spec/new-ignore-rules

- 'svn:mime-type'

- 'svn:eol-style'. Requires eol support in Bazaar.

- 'svn:keywords'. Requires keywords support in Bazaar. Spec at 
  https://launchpad.net/products/bzr/+spec/bzr-keyword-expansion. 
  `#81463 <https://bugs.launchpad.net/bzr-svn/+bug/81463>`_

- 'svn:externals'. Externals should be mapped to Bazaar 'by-reference' 
  nested branches and the other way around. This can't be implemented 
  until Bazaars nested branch support lands.


Future Enhancements
-------------------

In the future, I also hope to support:

- use svn_ra_replay() when using servers that have Subversion 1.4. Saves a 
  couple of roundtrips when fetching history.

Some Subversion properties can currently not be represented in Bazaar 
and are therefore ignored for the time being:

Other features currently held back by Bazaars feature set:

- Tracking copies. 
 
  Spec at https://launchpad.net/products/bzr/+spec/filecopies

- Showing SVN merges as merges in Bazaar. This requires full merge tracking 
  information in Subversion, something which the Subversion folks are working 
  on at the moment (see https://svn.collab.net/repos/svn/branches/merge-tracking).

  Requires tracking cherry-picking support in Bazaar:
   
  Spec at https://launchpad.net/products/bzr/+spec/bzr-cpick-data

Support
-------
Ask bzr-svn related questions on the `Bazaar mailing list`_ or in the 
#bzr IRC channel on Freenode_.

.. _Bazaar mailing list: http://lists.canonical.com/listinfo/bazaar/
.. _Freenode: http://www.freenode.net/

Bugs
----

Please file bug reports in launchpad. The product URL for bzr-svn is
https://launchpad.net/bzr-svn/. 

The wiki for this plugin is at http://bazaar-vcs.org/BzrForeignBranches/Subversion.

..
	vim: ft=rest
