3

我创建了一个 SVN 存储库的 Mercurial 镜像(使用本教程:http: //oreilly.com/opensource/excerpts/opensource-mercurial/migrating-to-mercurial.html)。同步效果很好,除了我注意到它没有选择主 SVN 存储库中引用的外部存储库...

理想情况下,我希望能够将所有内容作为单个 repo 拉入 Mercurial(如果可能,还包括变更集)。

我不确定的是:缺少外部是 svnsync 的限制,还是 hg convert 的限制?

有什么办法可以强制将外部同步到同一个 Mercurial 存储库中?


我认为一个好的解决方案是为外部重新设置同步过程。创建当前 hg 镜像的 fork,并将外部同步到 hg 镜像 fork。

问题是,外部的主干旨在进入第一个镜像的子文件夹,那么如何使用转换复制它?我怀疑我可以告诉 convert 导入到子文件夹中...

4

1 回答 1

3

缺少外部是 svnsync 的限制还是 hg convert 的限制?

svnsync用于创建 SVN 存储库的镜像。这包括任何svn:externals属性。因此它必须是一个限制hg convert

请注意,您实际上并不需要使用svnsync. 这篇文章建议这样做只是因为拥有一个本地副本可能会加快转换过程。

有什么办法可以强制将外部同步到同一个 Mercurial 存储库中?

SVN 存储库通常包含多个松散相关的项目,每个项目都有自己的分支和标签。但是 Mercurial 不是这样工作的:当您分支时,您会分支存储库中的所有内容。您应该为 SVN 中具有自己的主干/分支/标签的每个项目创建一个单独的 mercurial 存储库。这种不同的方法很可能是为什么hg convert忽略外部的原因,即使它们在同一个 SVN 存储库中。

svn:externals在 mercurial 中有一个等价物;它被称为“子存储库”。您在项目的根目录中拥有一个具有相似内容的文件,而不是拥有一个或多个svn:externals属性。.hgsub您应该首先将每个 SVN 项目转换为单独的 mercurial 存储库,然后将它们与子存储库连接。有关更多详细信息,请参阅子存储库的mercurial wiki 页面。

于 2010-11-23T17:13:13.467 回答