2013-03-15 62 views
0

目前我正在尝试获取正在运行的远程Subversion存储库的克隆。远程存储库仅在非常慢的链接上可用,所以我使用svnsync创建了本地Subversion存储库。近三十个小时后,我现在拥有Subversion版本库的本地副本。如何使用hgsvn从本地(file:///)SVN仓库进行克隆?

我该如何将其克隆到新的mercurial存储库?问题是,无论是使用file:///以下形式出现的工作:

$ 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! 

相反svn info file:///home/user/repo给我的信息,并证明有在那个地方适当的颠覆库。 svn://显然没有意义,因为我没有在本地运行服务器。

我也试过:

$ hgimportsvn file:///home/user/repo repo.hg 
SVN branch isn't a copy 
Finished! You can now pull all SVN history with 'hgpullsvn'. 

hgpullsvn只成功了上半场打的修改,然后出现了错误:

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 

(该CVSROOT从以前的转换茎颠覆从CVS,显然,这是在我的时间之前。)

是否hgsvn不明白file:///协议说明符,即使我试图强制它与svn+file:///

注:之前我曾尝试通过hghgsvn进行克隆,但最终在通过hgsvn进行同步之后经过一段时间后出现错误。因为克隆整个历史需要很长时间,所以我通过hgsvn与本地Subversion版本库副本一起进行克隆,就像我以前在远程版本中那样。

回答

3

就认为:只有“SVN +”前缀将是有益的:不要从2010年使用hgsvn,其“处于维护模式”,hgsubversion扩展添加到水银和克隆它Subversion版本库

PS对于http服务的存储库(因为您可以使用http://用于Subversion,Mercurial,Git)。本地颠覆回购(克隆与hgsubversion)将文件:///

+0

等一下,'hgsvn'和'hgsubversion'有区别。哇。直到现在,这个事实完全避开了我。 +1为现在的答案。我将不得不首先用替代扩展来测试它。是的,我知道'svn +'是用来消除歧义的,尽管这对本地回购也是有意义的。 – 0xC0000022L 2013-03-16 14:24:54

+0

作品,谢谢。我只是没有意识到这是两个不同的项目。 – 0xC0000022L 2013-03-18 11:19:27

1

我再次遇到这个问题。这是错误配置或未安装hgsubversion扩展的一个症状。

请确保您在.hgrcMercurial.ini(全局或本地)中有适当的行,如on the documentation site for HgSubversion所示。实例(如需要调整的路径):

[extensions] 
hgsubversion = ~/hgsubversion/hgsubversion 

然后检查:

hg help hgsubversion 
hg help subversion 

我的猜测是,如果没有扩展汞柱根本不知道预期的文件夹中什么等等需要一个Mercurial回购,它无法找到。

在我的情况下,这是通过覆盖本地~/.hgrc再次导致