0

我有一个旧的Subversion 存储库,里面有很多项目。每个项目都遵循 SVN 的规范trunk-branches-tags约定。

我可以使用以下方法将整个 SVN 存储库转换为 Mercurial:

$ hg convert /some-path/old-svn-rep
# This creates old-svn-rep-hg

$ cd old-svn-rep-hg
$ hg update
# Can see all the projects as separate directories

如果你了解SVN,你就知道里面的目录组织/some-path/old-svn-rep是:

$ ls /some-path/old-svn-rep
conf/
db/
hooks/
locks/
format
README.txt

如何将此 SVN 存储库中的单个项目(例如名为Foo)转换为 Mercurial 存储库?

这显然不起作用:

$ hg convert /some-path/old-svn-rep/Foo
assuming destination Foo-hg
initializing destination Foo-hg repository
/some-path/old-svn-rep/Foo does not look like a Subversion repository

请假设 SVN 项目在主干、许多分支和标签中发生了变化。

4

3 回答 3

1

hg convert可以采用任何 URL,您将使用该 URL 来签出 SVN 存储库中的项目。

在我的测试中,svn checkout /some-path/old-svn-repo/Foo也不起作用。file://如果您从本地文件系统克隆某些内容,您需要做的是为其添加前缀- 即svn checkout file:///some-path/old-svn-repo/Foo

hg convert所以尝试是一样的hg convert file:///some-path/old-svn-repo/Foo

于 2013-06-05T05:58:56.867 回答
0

我可以通过以下步骤做到这一点:

svnadmin create Foo

我需要更改此命令,因为我无权访问 svn 服务器,因此在克隆期间版本不匹配:

svnadmin create --compatible-version 1.6 Foo

按照此处的步骤 1-5:如何使用 svnsync 在 Windows 上镜像存储库

svnsync init file:///projects/Foo /some-path/old-svn-rep/Foo
svnsync sync file:///projects/Foo

按照此处的步骤 2 创建 usermapping.txt:再见 Subversion,Hello Mercurial:迁移指南

安装 hgsubversion:hgsubversion

hg clone --config extensions.hgsubversion=/path-to-hgsubversion / 
--config hgsubversion.authormap=usermapping.txt / 
file:///projects/Foo hg-Foo
于 2013-11-07T20:40:17.370 回答
0

HGSubversion 扩展并从项目根目录hg clone克隆 SVN-repo ( )

于 2013-06-04T14:23:59.040 回答