将 Subversion 存储库拆分为多个 Mercurial 存储库?
-
25-09-2019 - |
题
我们正在从 Subversion 迁移到 Mercurial,并且在 SVN->Hg 转换过程中遇到了障碍。目前,我们的单个 SVN 存储库保存了几个不同“项目”的代码,我们希望在迁移过程中将它们分开。我们的 SVN 存储库的组织方式如下:
.
|-- proj1
| |-- branches
| |-- tags
| `-- trunk
`-- proj2
|-- branches
|-- tags
`-- trunk
我们只想简单地做 proj1
和 proj2
他们自己的汞库。当然,我们不想有特定的历史 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库。 分裂库通过过滤库历史
正如您所建议的,使用“转换”扩展可以轻松完成此操作。程序如下:
- 做一个
hg convert SVNREPO all-in-one-mercurial-repo
从 svn 到 Mercurial,应有尽有 - 做多个
hg convert --filemap projectfilemap.txt all-in-one-mercurial-repo project-repo
命令——每个项目一个
这些文件映射中包含如下行:
exclude proj1
rename proj2 .
这将是从一体式 Mercurial 存储库中提取项目二的存储库时使用的文件映射。您可能需要列出这些映射中的每个单独文件,但我认为目录是可以的。
这里还有另一个问题,我回答了几乎相同的问题,并粘贴了一个完整的示例,但这应该足以让你继续下去。
不隶属于 StackOverflow