Skip to main content
 首页 » 编程设计

svn之颠覆后的空存储库 -> mercurial 转换

2025年01月19日20jirigala

我已经使用 '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 --noupdatehg update null 。省略工作副本文件可以节省一些空间。)

另外,我建议您 分别转换每个项目 。如果您提供“project1”的 URL, hg convert 将自动检测 trunkbranchestags 子文件夹,并会做正确的事情。

在 mercurial 中,分支是一流的概念,而不仅仅是碰巧从主干 svn 复制的文件夹。分支并不像 svn 那样位于任何用户可见的位置。在单个 mercurial 存储库中拥有多个项目(每个项目都有自己的分支)并没有什么意义。