【问题标题】:How do I choose a branch other than "default" for "master" when converting a repo from Mercurial to Git?将存储库从 Mercurial 转换为 Git 时,如何为“master”选择“默认”以外的分支?
【发布时间】:2015-03-20 18:28:56
【问题描述】:

我需要将长期存在的 Mercurial 存储库转换为 Git 存储库(单向、一次性转换),并且我想选择 default 以外的 Mercurial 分支作为 master 分支在 Git 存储库中。

我之前在一个较小的存储库中从 Mercurial 转换为 Git,经过一些易于 Google 和修复的陷阱后,它运行良好。在这种情况下,将default 分支映射到master 是有意义的。 (唯一的其他分支映射是“dev”到“dev”。)

在这个新案例中,我继承的存储库使用default 分支进行开发,然后将批准的更改合并到stable 分支中。所以,当谈到 Git 时,我希望 Git master 分支反映 stable Mercurial 分支,另一个分支反映 default Mercurial 分支。

这可能吗?

【问题讨论】:

    标签: git mercurial branch


    【解决方案1】:

    当然可以。

    只需使用方便的工具将 Mercurial 存储库转换为 git。如果最终的分支不符合您的喜好,您可以轻松地重命名它们。使用git rename

    例如,将分支“master”重命名为“dev”(即相互交换分支):

    git rename -m master master-old
    
    git rename -m dev master
    
    git rename -m master-old dev
    

    有关详细信息,请参阅 git-rename 手册页。

    【讨论】:

    • 谢谢。我以前从来没有需要重命名一个分支,我没想到会那么容易。
    • 哦,有一件事:您必须设置别名或自定义扩展名,因为我必须使用 git branch -m master master-oldmutatis mutandis 来重命名分支,因为我没有'没有可用的git rename 命令。想法是对的;我只需要更改命令。
    【解决方案2】:

    另一种方法是(使用 hg-git 时)为特定分支创建一个书签,名称为 master 在您想要的分支/修订版上。

    【讨论】:

      【解决方案3】:

      另一个解决方案是在将存储库转换为 Git 之前在 Mercurial 中进行分支重命名/交换,并准确指定您想要拥有的分支。例如,要将 default 重命名为 dev,然后将 stable 重命名为 default,请创建一个名为 branchmap.txt 的文件:

      default dev
      stable default
      

      然后运行转换(应在您的 hgrc 中启用“convert”扩展),例如:

      $ hg convert --branchmap branchmap.txt previousrepo newrepo
      

      使用“convert”重命名分支的唯一危险部分是您生成的存储库将完全不同:所有 SHA1 都将不同。但由于您之后将转换为 Git,因此在这种情况下并不重要。

      【讨论】:

        猜你喜欢
        • 2017-08-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-05-29
        • 2014-10-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多