convert_svn ("release early" edition)

Shun-ichi GOTO shunichi.goto at gmail.com
Tue Apr 3 13:43:32 CDT 2007


2007/2/12, Daniel Holth <dholth at fastmail.fm>:
>
> convert-repo patched to convert from Subversion.

It's cool!

I've tried, patched and have some comments.
(Attached patch is to work with subversion 1.4 binding
 and python 2.3)

> fast, but you will probably need to compile the latest Subversion
> bindings from Subversion since the Python interface has only recently
> become capable enough. I hear the ones in Ubuntu have the enhancements
> (because the bzr developers did the work) but I have not tried them
> myself.

I'm interesting in what feature of latest binding (1.5?) is
required. I tried it to work with 1.4.x binding with attached
patch and it seems ok. (not yet checked enough against converted
repos)


> The Subversion Repository and converted that.
>
> "convert-repo file:///subversionrepo/trunk trunk-hg"
>
> Features:
>
> - - Converts from any SVN URL to a hg repository

With svn 1.4, I should remove heading '/' from path
passed to API on the case of http: url.
See attached a patch.


> Known Bugs:
>
> - - No +x bit or symlinks

+x can be get as svn:external in return value of ra.get_file().

> - - Move, rename info not propagated from SVN

I hope it would be in future version!

> - - Always requests whole file from SVN instead of diffs

# I doubt svn delta editor in python binding doesn't work...

> - - Probably loses files if an entire directory is moved (since the svn
> log doesn't list each file individually in this case)

Sure, but it can be found tracking directory change.


> - - Loses empty directories
> - - Ugly first-draft code


And more suggestion (for convert-repo, not only for svn):
 * Progress display on each stage will help us on converting
   non-small repo.
 * Create target repo if not exist.
 * When optional second arg is omitted, convert-repo try to
   use url + '-hg' as dest. It's not good.


And attached patch is a change not using ra access in
callback of ra.get_log(). It is required for svn 1.4 binding
at least.
I've successed converting small repository with
file:/http:/svn+ssh: urls.

But failed on another middle size repo. I didn't figure out the
reason yet, but maybe move/copy related thing.

Anyway, I'm grad to see this tool.
Thanks!

-- 
Shun-ichi GOTO
-------------- next part --------------
A non-text attachment was scrubbed...
Name: svn-work-with-1.4-and-python-2.3
Type: application/octet-stream
Size: 4195 bytes
Desc: not available
Url : http://www.selenic.com/pipermail/mercurial-devel/attachments/20070404/676ed527/svn-work-with-1.4-and-python-2.obj


More information about the Mercurial-devel mailing list