view README @ 69:63ece4ea25c9

hg_delta_editor: register copies only if files are unchanged between source and dest Handle copies of items from revision X into revision Y where X is not the parent of Y. This cannot happen in Mercurial because copies always happen between parents and children. A file copy is recorded if: 1- Source and destination revs are in the same branch. 2- The file is unchanged (content, type, removal) through all revisions between destination and source, not including source and destination. Directory copies are registered only if the previous rules apply on all copied items. [1] is there because file copies across branches are meaningless in Mercurial world. We could have tried to remap the source rev to a similar one in the correct branch, but anyway the intent is wrong. [2] is more questionable but I think it's better this way for we live in a non-perfect svn world. In theory, 99% of copies out there should come from the direct parent. But the direct parent is a fuzzy notion when you can have a working directory composed of different directory at different revisions. So we assume that stuff copied from past revisions exactly matching the content of the direct parent revision is really copied from the parent revision. The alternative would be to discard the copy, which would always happen unless people kept updating the working directory after every commit (see tests).
author Patrick Mezard <pmezard@gmail.com>
date Wed, 05 Nov 2008 13:37:08 +0100
parents b61d49e3f91c
children 31923684e4dc
line wrap: on
line source

-*-restructuredtext-*-

About
-----
hgsubversion is an extension for Mercurial that allows using Mercurial as a 
Subversion client.

Right now it is *not* ready for production use. You should only be using this if 
you're ready to hack on it, and go diving into the internals of Mercurial and/or 
Subversion.

Installation
------------
You need to have Subversion installed with the SWIG Python bindings from Subversion 1.5 or later.
You need a recent Mercurial. At present, the required memctx and rebase code is in mercurial_ and  crew_, but not crew-stable_ or mercurial-stable_. Install Mercurial from one of mercurial or crew if you have not already. Personally, I use crew_.

.. _mercurial: http://selenic.com/repo/hg
.. _mercurial-stable: http://selenic.com/repo/hg-stable
.. _crew: http://hg.intevation.org/mercurial/crew
.. _crew-stable: http://hg.intevation.org/mercurial/crew-stable

If you are unfamiliar with installing Mercurial extensions, please see the UsingExtensions_ page in the Mercurial wiki. Look at the example for specifying an absolute path near the bottom of the page. You want to give the path to the top level of your clone of this repository.

.. _UsingExtensions: http://www.selenic.com/mercurial/wiki/index.cgi/UsingExtensions

Before using hgsubversion, I *strongly* encourage you to run the automated tests. Just use nose_ if you have it (or ``easy_install nose`` if you want it), or use ``python tests/run.py`` to run the suite with the conventional test runner. Note that because I use nose, there's a lot of stdout spew in the tests right now. The important part is that all the tests pass.

.. _nose: http://code.google.com/p/python-nose/

Basic Use
-----------
Get a new clone of an svn server::

 $ hg svnclone <svn URI> [destination]

Real example::

 $ hg svnclone http://python-nose.googlecode.com/svn nose-hg

Pull new revisions into an already-converted repo::

 $ hg svn pull

For more information, see 'hg svn help' while in a converted repo.