At the moment I am trying to get a clone of a remote subversion repository running. The remote repository is only available over a very slow link, so I went with svnsync
to create a local subversion repository. After nearly thirty hours I now have the local copy of the subversion repository.
How can I now clone this to a new mercurial repository? Problem being that neither of the following forms using file:///
appear to work:
$ hg clone svn+file:///home/user/repo repo.hg
abort: repository svn+file:///home/user/repo not found!
$ hg clone file+svn:///home/user/repo repo.hg
abort: repository file+svn:///home/user/repo not found!
$ hg clone file:///home/user/repo repo.hg
abort: repository /home/user/repo not found!
Conversely svn info file:///home/user/repo
does give me the info and proves there is a proper subversion repository in that place. svn://
obviously makes no sense as I am not running the server locally.
I also tried:
$ hgimportsvn file:///home/user/repo repo.hg
SVN branch isn't a copy
Finished! You can now pull all SVN history with 'hgpullsvn'.
but the hgpullsvn
only succeeds for the first half dozen revisions and then errors out:
Interrupted, please wait for cleanup!
External program failed (return code 1): hg '--encoding' 'utf-8' 'remove' '-A' 'branches/Company/CVSROOT'
branches/Company/CVSROOT: No such file or directory
(The CVSROOT
stems from a previous conversion to Subversion from CVS, apparently. This was before my time.)
Does hgsvn
not understand the file:///
protocol specifier even if I try to force it with svn+file:///
?
NB: I have tried to clone via hg
and hgsvn
before, but then ended up getting errors when synchronizing via hgsvn
after a while. Since cloning the whole history takes so long I went with the local subversion repository copy from which I intended to clone via hgsvn
as I did in the past the remote one.
Just opinion: don't use hgsvn, which "is in maintenance mode" from 2010, add hgsubversion extension to Mercurial and clone Subversion repository with it
PS: "svn+" prefix will be useful only for http-served repositories (because you can use http:// for Subversion, Mercurial, Git). Local Subversion repo (in clone with hgsubversion) will be file:///