如何在不丢失分支的情况下将mercurial存储库转换为git存储库?

时间:2019-05-14 11:56:47

标签: git version-control mercurial atlassian-sourcetree hg-git

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

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下的branchs文件夹,这个较旧的为空。我想在我的仓库中看到分支。

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

我也尝试了快速导出但没有用。

1 个答案:

答案 0 :(得分:2)

来自docs section Usage

  

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

...

  

配置

     

...

git.branch_bookmark_suffix
     

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

     

在一个用例中,有人希望将汞回购转移到   git,并保持与hg上相同的命名分支   方面,branch_bookmark_suffix可能就足够了。这个   呈现一个字符串“后缀”,该字符串将在每个书签上被识别   名称,并在将书签翻译为git分支时将其剥离:

[git]
branch_bookmark_suffix=_bookmark
     

以上,如果汞仓库有一个名为   release_6_maintenance,然后可以将其链接到名为   release_6_maintenance_bookmark。 hg-git然后将剥离   在该书签名称后加上_bookmark后缀,并创建一个git分支   称为release_6_maintenance。从git拉回到hg时,   当且仅当名为hg的hg时,才应用_bookmark后缀   该名称的分支存在。例如,当更改   release_6_maintenance分支被检入git,这些将是   放置在hg上的release_6_maintenance_bookmark书签中。但   如果将名为release_7_maintenance的新分支拉到hg,   并且还没有release_7_maintenance命名分支,   书签将被命名为release_7_maintenance,而不会使用   后缀。

     

branch_bookmark_suffix选项类似于authors选项,   用于迁移旧的hg命名分支。往前走   与git repo链接的repo应该只使用书签   用于命名分支。