3

我想将 mercurial repo 转换为 git repo。实际上我做到了,但我没有看到树枝。转换 repo 后,我只能看到一个分支(作为主分支),我看不到任何其他分支,但我可以看到历史记录(所有更改)是正确的。单击任何提交时,我可以看到如下信息:

Date: 19 Nisan 2019 Cuma 15:14:37
Committer: sevgi.cakmak
Change dialog header

--HG--
branch : sevgi-2.0.0   

但我在左侧看不到 sevgi-2.0.0 分支(我正在使用 sourcetree)。

我的步骤:

mercurial.ini 文件:

[extensions]
strip = 
histedit = 
rebase = 
hggit = C:\Users\sevgi.cakmak\Desktop\hg-git\hggit
hgext.bookmarks =

[git]
intree = True

hg bookmark -r 2.0.0 master(也像这样尝试过:)hg bookmark -r default master然后我从 cmd 工作了这一行

hg gexport --debug //this line converting all revision

在完成这一行之后,我的输出如下:

converting revision a318482e0769e2fceb13a1545cb477d60a00b434
converting revision e444655d161131f9ed1676f6c175813097fd18g8
converting revision 0ab06d22eaf4ff4ecb96caba343fdcc3a85e367k
converting revision 8a4e7f4defb0b04e76e67a825bedf746fe4f3fc5  ......etc

然后我在这条线上工作git config --bool core.bare false。毕竟我确实在 .git 下打开了分支文件夹,而这个旧文件夹是空的。我想在我的仓库中看到分支。

参考:https ://helgeklein.com/blog/2015/06/converting-mercurial-repositories-to-git-on-windows/

我也尝试了快速导出,但没有奏效。

4

1 回答 1

5

文档部分用法

Hg-Git 将您的书签作为分支推送到 Git 服务器,并将 Git 分支下拉并将它们设置为书签。

...

配置

...

git.branch_bookmark_suffix

hg-git 不会在 Mercurial 命名分支和 git 分支之间转换,因为两者在概念上是不同的;相反,它使用 Mercurial 书签来表示 git 分支的概念。因此,当将 hg 存储库转换为 git 时,您通常需要创建书签来镜像您希望看到的所有命名分支转移到 git。对此的主要警告是,您的书签不能使用与命名分支相同的名称,而且在 Mercurial 中重命名分支没有可行的方法。

对于希望将 hg 存储库转移到 git 并维护与 hg 端相同的命名分支的用例,这branch_bookmark_suffix可能就是所需要的。这将显示一个字符串“后缀”,该字符串将在每个书签名称上被识别,并在书签被转换为 git 分支时被剥离:

[git]
branch_bookmark_suffix=_bookmark

上面,如果一个 hg repo 有一个名为的分支 release_6_maintenance,那么你可以将它链接到一个名为 的书签 release_6_maintenance_bookmark。然后 hg-git _bookmark将从这个书签名称中去掉后缀,并创建一个名为release_6_maintenance. 当从 git 拉回到 hg 时, _bookmark后缀将被应用回来,当且仅当存在该名称的 hg 命名分支时。例如,当对 release_6_maintenance分支的更改签入 git 时,这些更改将被放入release_6_maintenance_bookmarkhg 上的书签中。但是,如果一个名为的新分支release_7_maintenance被拉到 hg,并且还没有一个release_7_maintenance命名的分支,那么书签将被命名release_7_maintenance而没有使用后缀。

branch_bookmark_suffix选项与 authors 选项一样,旨在迁移遗留的 hg 命名分支。展望未来,与 git repo 链接的 hg repo 应该只使用书签进行命名分支。

于 2019-05-14T12:24:08.260 回答