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

时间:2010-07-16 17:02:08

标签: python windows git mercurial

此时我真的非常沮丧。我有一个现有的hg存储库,里面有几个月的编码历史记录,我想把它变成一个私有的Github存储库,所以我可以从那里开始工作。不幸的是我使用Windows而且我似乎无法找到任何方式来转换我实际上可以正常工作的存储库。几乎我在网上找到的每一点帮助和建议似乎都假设我是从某种* nix shell运行的,我不是。

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

我尝试了什么:

  1. hg的hg-init插件 - 当我尝试使用gexport命令(以及hg-git中的其他命令)时,我只获得了python异常的字符串。我完全不能得到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转换为git转换器 - http://permalink.gmane.org/gmane.comp.version-control.git/36601 - 当我通过Python运行它时,我不想工作,因为它抱怨它在第44行有语法错误。我不知道python ,所以我不知道。

  4. 四小时的谷歌搜索和浏览无用的教程和人们 - 比我更幸运地赞美每个据称有用的博客文章,但我没有得到任何关于此。任何人都可以为我提供任何帮助或建议吗?

6 个答案:

答案 0 :(得分:19)

  1. 安装Cygwin(使用python,hg,git)
  2. 安装git-hg
  3. 运行git-hg clone ...url...
  4. 或者告诉我这个hg repo你的网址是什么,我可以为你转换它。

答案 1 :(得分:6)

关于如何在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 -- .

更多信息

您可以在blog article上找到有关这些主题的详细说明。

答案 2 :(得分:2)

您是否考虑过安装msysgit?它给你的git bash shell应该能够运行.sh文件。

答案 3 :(得分:2)

我读过关于Git的这些Hg转换器的所有内容确实指出了你做出的一个明显错误:使用Python 3!

你得到的那些Python错误是由于像hg-git这样的脚本和使用Python 2.6构建的快速导出。 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” 和'mercurial-2.2.2.win32-py2.6.exe'为32位。在您使用时,请获取随附的Mercurial 2.2.2安装程序,以防万一。

虽然您声明您不希望再安装其他VCS软件,但使用任何这些Hg转换器也需要安装Mercurial。

需要注意的另一个缺陷是这些转换器可能无法与最新版本的Mercurial一起使用。您可能需要对旧版本进行一些实验,以找到适合脚本的版本。

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

有一些补丁可以为Git和msysGit添加Mercurial支持,但是如果您希望遵循该路由,则需要熟悉从源代码修补和编译。

答案 4 :(得分:0)

这可能看起来很愚蠢(或绝望的解决方案......)但我认为Bazaar对Hg和Git存储库都有很好的支持,并且在Windows上运行良好。 所以如果其他所有方法都失败了,也许您可​​以使用bzr-hg和bzr-git进行转换......

答案 5 :(得分:-1)

如果原始的Mercurial存储库在网上可用,并且如果您不介意使用GitHub来执行此操作,那么从Mercurial到Git的转换现在很容易:

  1. 登录GitHub。
  2. 点击右上角的+
  3. 选择Import repository
  4. 提供Mercurial存储库的URL,您帐户下的URL名称以及它是公共还是私有。
  5. 单击Begin import并等待。

此后,您甚至无需停留在页面上。一段时间后,GitHub将通过电子邮件通知您导入已完成。