我们正在从 Subversion 迁移到 Mercurial,并且在 SVN->Hg 转换过程中遇到了障碍。目前,我们的单个 SVN 存储库保存了几个不同“项目”的代码,我们希望在迁移过程中将它们分开。我们的 SVN 存储库的组织方式如下:

.
|-- proj1
|   |-- branches
|   |-- tags
|   `-- trunk
`-- proj2
    |-- branches
    |-- tags
    `-- trunk

我们只想简单地做 proj1proj2 他们自己的汞库。当然,我们不想有特定的历史 proj1 出现在 proj2的日志。此刻,当 hg convert 进行转换时,它只是非常愚蠢地读取所有文件,甚至不区分分支和主干。

按目录过滤并识别SVN分支的过程是什么 hg convert?

有帮助吗?

解决方案

我找到了现在的工作,多亏了 ConvertExtension维基页面

我试过Ry4an的方法,但它具有先转换SVN回购了成分裂一切之前的中间水银回购的缺点来了,没有被承认,树枝,树干和标签,因为有各两个项目与自己的分支机构,躯干和标签。

我发现,手动指定分支,躯干和标签目录用于一次从SVN将一个项目到水银很好工作:

hg \
--config convert.svn.trunk=proj1/trunk \
--config convert.svn.branches=proj1/branches \
--config convert.svn.tags=proj1/tags \
convert --authors authors.txt original-svn-dir hg-proj1

这会照顾识别SVN分支,标签,和躯干的为在同一时间仅proj1修正滤波器。然后,我只是重复它proj2

其他提示

的另一种方法来解决它是使用svnadmin的转储和过滤流因为svn文档中描述的svn回购分成每一个项目新svn库。 分裂库通过过滤库历史

正如您所建议的,使用“转换”扩展可以轻松完成此操作。程序如下:

  1. 做一个 hg convert SVNREPO all-in-one-mercurial-repo 从 svn 到 Mercurial,应有尽有
  2. 做多个 hg convert --filemap projectfilemap.txt all-in-one-mercurial-repo project-repo 命令——每个项目一个

这些文件映射中包含如下行:

exclude proj1
rename proj2 .

这将是从一体式 Mercurial 存储库中提取项目二的存储库时使用的文件映射。您可能需要列出这些映射中的每个单独文件,但我认为目录是可以的。

这里还有另一个问题,我回答了几乎相同的问题,并粘贴了一个完整的示例,但这应该足以让你继续下去。

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