在Windows上将Mercurial(hg)存储库转换为Git(7)

我真的很沮丧在这一点上。 我有一个现有的hg仓库,里面有几个月的编码历史,我想把它放到一个私人的Github仓库中,这样我就可以从那里开始工作了。 不幸的是我使用Windows,我似乎无法find任何方式来转换我实际上可以正常工作的存储库。 几乎所有的帮助和build议,我可以在网上find似乎假设我从某种* nixshell,我不是。

我目前已经安装了:TortoiseHG,Python 3.1和Git for Windows。

我试过了:

  1. hg-init插件 – 当我尝试使用gexport命令(以及其他来自hg-git)时,我只是得到了python例外的string。 我完全不能让git来识别gremote命令。 我试着按照下面这个: http : //github.com/blog/439-hg-git-mercurial-plugin

  2. hg-to-git(快速导出) – 所有教程都期望我运行一个.sh文件。 另一个stackoverflow线程似乎意味着Powershell可以运行.sh文件,但我不能让它运行在我的生活。 例如: http : //hivelogic.com/articles/converting-from-mercurial-to-git

  3. Mercurial混帐转换器 – http://permalink.gmane.org/gmane.comp.version-control.git/36601 – 这一个不想工作,当我运行它通过Python,它抱怨,它有一个语法错误在线44我不知道python,所以我不知道。

四个小时的谷歌search和通过无用的教程和人们 – 更幸运比我唱每个有用的博客文章的赞美,但我没有得到任何的地方。 任何人都可以提供任何帮助或build议,我尝试?

  1. 安装Cygwin (用python,hg,git)
  2. 安装git-hg
  3. 运行git-hg clone ...url...

或者告诉我这个你的hg回购网址是什么,我可以把它换成你的。

有很多关于如何在Windows上将Mercurial存储库转换为Git的冲突信息。 这真的很容易,只需要安装TortoiseHg和Git。

制备

通过将以下内容添加到您的Mercurial配置文件( %Userprofile%\ mercurial.ini )来启用hg-git:

 [extensions] hggit = hgext.bookmarks = [git] intree = True 

转变

在命令行上导航到存储库目录(包含.hg子目录)并执行以下命令:

 hg bookmark -r default master hg gexport --debug git config --bool core.bare false git reset HEAD -- . 

更多信息

您可以在我的博客文章中找到有关这些步骤的详细说明。

你有没有考虑安装msysgit ? 它给你的git bash shell应该可以运行.sh文件。

我已经读过的关于Git转换器的所有内容都指出了一个明显的错误:使用Python 3!

那些你得到的Python错误是由于像使用Python 2.6构建的hg-git和fast-export这样的脚本。 Python 3以不同的方式处理“打印”,因此您的错误。

重写脚本以使用您的版本或者安装Python 2.6。

确保将其添加到PATH设置。 当您安装msysGit时也是如此。 确保在安装时选择第二个选项,将Git添加到路径中。

您还需要Mercurial For Python,可在TortoiseHG的thg-winbuild项目中获得:

https://bitbucket.org/tortoisehg/thg-winbuild/downloads

该文件将被命名为64位Windows的“mercurial-2.2.2.win-amd64-py2.6.exe”和32位的“mercurial-2.2.2.win32-py2.6.exe”。 当你在这里,得到伴侣Mercurial 2.2.2安装程序,以防万一。

虽然您声明不希望再安装另一个VCS软件,但使用这些Hg转换器中的任何一个都需要安装Mercurial。

另一个需要注意的问题是这些转换器可能不适用于最新版本的Mercurial。 您可能需要在旧版本中尝试一下才能找到适合脚本的脚本。

请务必认真阅读教程和自述文件,了解您使用哪种转换器。 看起来很多你的悲伤和麻烦源自于仅仅掠过文档之后不耐烦地跳入深层。

有一些补丁可以为Git和msysGit添加Mercurial支持,但是如果你希望遵循这个路线,你需要对源码进行修补和编译。

这似乎很愚蠢(或绝望的解决方案),但我认为Bazaar对Hg和Git存储库都有很好的支持,而且它在Windows上运行良好。
所以,如果一切都失败了,也许你可以使用bzr-hg和bzr-git来进行转换…