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

理想情况下,我希望能够将所有内容作为单个存储库提取到 Mercurial 中(如果可能的话,还包括变更集)。

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

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


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

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

有帮助吗?

解决方案

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

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

请注意,您实际上并不需要使用以下命令创建镜像 svnsync. 。本文建议这样做只是因为拥有本地副本可能会加快转换过程。

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

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

有一个等价于 svn:externals 善变的;它称为“子存储库”。而不是拥有一个或多个 svn:externals 属性,你有一个 .hgsub 项目根目录中包含类似内容的文件。您应该首先将每个 SVN 项目转换为单独的 Mercurial 存储库,然后将它们与子存储库连接。请参阅 子存储库的 Mercurial Wiki 页面 更多细节。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top