我有一个具有以下布局的Subversion存储库:

svnrepo/projectA/trunk
svnrepo/projectA/tags
svnrepo/projectA/branches
svnrepo/projectB/trunk
svnrepo/projectB/tags
svnrepo/projectB/branches



我想转到经过修改的版式的商品回购中:
hgrepo / projectA
hgrepo / projectB

最好的方法是什么?我的一些想法是:

选项1

将Subversion中的路径重新排列(使用svn move)为中间格式:

svnrepo/trunk/projectA
svnrepo/trunk/projectB
svnrepo/tags/projectA
svnrepo/tags/projectB
svnrepo/branches/projectA
svnrepo/branches/projectB


然后hg在svnrepo / trunk上转换。这会混淆hg导入吗?

选项2
hg将每个项目/主体转换为单独的hg仓库。然后将它们合并到一个单独的hg仓库中(使用hg init,hg pull -f projectA等)。我认为这将丢失第一个导入项目上的分支名称和标签。

最佳答案

在Mercurial中,将不相关的代码库存储在同一存储库中是一个坏主意,因为它将


合并非常复杂。合并将取决于对所有项目所做的更改,而不仅仅是您要合并的项目。
导致存储和检出开销-据我所知,Mercurial不支持仅检出存储库的子目录。您必须一次分支所有项目。


解决方案是将您的单个Subversion存储库转换为多个Mercurial存储库。大多数转换工具都支持此功能。

09-04 14:49