我已经使用 'hg convert' 命令尝试将我的 SVN 存储库移动到 hg,它似乎工作(需要一段时间并打印出所有提交消息),但最后生成的 Mercurial 目录是空的。它有 .hg 隐藏子目录,大约 200 MB,所以发生了一些事情,但没有文件在那里。
有什么想法吗?
我能想到的唯一涉及的是,我们有许多项目,而不是顶级主干、分行、标签目录,每个项目都有自己的主干、分支、标签:
svn-repository/
Project1/
trunk/
branches/
tags/
Project2/
trunk/
branches/
tags/
等等...
这可能是导致问题的原因吗?我的理解是 SVN 并不真正关心您如何组织存储库,但是 Mercurial 呢?
请您参考如下方法:
您需要运行 hg update
以获取工作副本。
(这种没有工作副本的 mercurial 存储库可以用作推送修订或从中拉出修订的纯通信点,就像一个颠覆服务器。在这种情况下,它是由 hg convert 创建的,但您也可以使用 hg clone --noupdate
或hg update null
。省略工作副本文件可以节省一些空间。)
另外,我建议您 分别转换每个项目 。如果您提供“project1”的 URL, hg convert
将自动检测 trunk
、 branches
和 tags
子文件夹,并会做正确的事情。
在 mercurial 中,分支是一流的概念,而不仅仅是碰巧从主干 svn 复制的文件夹。分支并不像 svn 那样位于任何用户可见的位置。在单个 mercurial 存储库中拥有多个项目(每个项目都有自己的分支)并没有什么意义。