将存储库从 Mercurial 转换为 Git 时,如何为 "master" 选择 "default" 以外的分支?
How do I choose a branch other than "default" for "master" when converting a repo from Mercurial to Git?
我需要将长期存在的 Mercurial 存储库转换为 Git 存储库(单向、一次性转换),我想选择 [=13= 以外的 Mercurial 分支] 成为 Git 仓库中的 master
分支。
我之前在一个较小的回购协议中从 Mercurial 转换为 Git,在遇到一些容易 Google 和修复的陷阱之后,一切顺利。在那种情况下,将 default
分支映射到 master
是有意义的。 (唯一的其他分支映射是 "dev" 到 "dev"。)
在这个新案例中,我继承的存储库使用 default
分支进行开发,然后将批准的更改合并到 stable
分支中。因此,当谈到 Git 时,我希望 Git master
分支反映 stable
Mercurial 分支,另一个分支反映 default
Mercurial 分支。
这可能吗?
当然可以。
只需使用您方便的任何工具将您的 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
手册页。
另一种方法是(当使用 hg-git 时)在您想要的 branch/revision 上为特定分支创建一个名为 master 的书签。
另一个解决方案是在 将存储库转换为 Git 之前,在 Mercurial 中创建一个分支 renaming/swapping,具体指定您想要的分支有。例如,要将 default
重命名为 dev
,然后将 stable
重命名为 default
,请创建一个名为 branchmap.txt
的文件:
default dev
stable default
然后 运行 转换(应该在您的 hgrc 中启用 "convert" 扩展)例如:
$ hg convert --branchmap branchmap.txt previousrepo newrepo
使用 "convert" 重命名分支的唯一危险部分是您生成的存储库将完全不同:所有 SHA1 都将不同。但是因为您之后要转换为 Git,所以在这种情况下并不重要。
我需要将长期存在的 Mercurial 存储库转换为 Git 存储库(单向、一次性转换),我想选择 [=13= 以外的 Mercurial 分支] 成为 Git 仓库中的 master
分支。
我之前在一个较小的回购协议中从 Mercurial 转换为 Git,在遇到一些容易 Google 和修复的陷阱之后,一切顺利。在那种情况下,将 default
分支映射到 master
是有意义的。 (唯一的其他分支映射是 "dev" 到 "dev"。)
在这个新案例中,我继承的存储库使用 default
分支进行开发,然后将批准的更改合并到 stable
分支中。因此,当谈到 Git 时,我希望 Git master
分支反映 stable
Mercurial 分支,另一个分支反映 default
Mercurial 分支。
这可能吗?
当然可以。
只需使用您方便的任何工具将您的 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
手册页。
另一种方法是(当使用 hg-git 时)在您想要的 branch/revision 上为特定分支创建一个名为 master 的书签。
另一个解决方案是在 将存储库转换为 Git 之前,在 Mercurial 中创建一个分支 renaming/swapping,具体指定您想要的分支有。例如,要将 default
重命名为 dev
,然后将 stable
重命名为 default
,请创建一个名为 branchmap.txt
的文件:
default dev
stable default
然后 运行 转换(应该在您的 hgrc 中启用 "convert" 扩展)例如:
$ hg convert --branchmap branchmap.txt previousrepo newrepo
使用 "convert" 重命名分支的唯一危险部分是您生成的存储库将完全不同:所有 SHA1 都将不同。但是因为您之后要转换为 Git,所以在这种情况下并不重要。