来自Subversion的Mercurial:移动,重命名和标记

Sze*_*ere 2 svn mercurial mercurial-convert

我有一个subversion repo,具有以下布局:

svnrepo/projectA/trunk
svnrepo/projectA/tags
svnrepo/projectA/branches
svnrepo/projectB/trunk
svnrepo/projectB/tags
svnrepo/projectB/branches
Run Code Online (Sandbox Code Playgroud)


我想转移到一个经过修改的布局的mercurial repo:
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
Run Code Online (Sandbox Code Playgroud)

然后hg转换为svnrepo/trunk.这会混淆hg导入吗?

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

Joh*_*kin 6

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

  • 合并显着复杂化.合并将取决于对所有项目所做的更改,而不仅仅是您尝试合并的项目.
  • 导致存储和检出开销 - 据我所知,Mercurial不支持仅检出存储库的子目录.您必须立即分支所有项目.

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