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

26 投票
6 回答
7746 浏览
提问于 2025-04-16 01:24

我现在真的很沮丧。我有一个已经存在的hg(Mercurial)代码库,里面有几个月的编码历史,我想把它放到一个私有的Github代码库里,这样我就可以在那儿继续工作。不幸的是,我用的是Windows系统,找不到任何能正常工作的转换方法。网上几乎所有的帮助和建议都假设我在用某种*nix(类Unix)命令行,但我并不是。

我现在安装了:TortoiseHG、Python 3.1和Git for Windows。

我尝试过的:

  1. hg-init插件 - 当我尝试使用gexport命令(还有hg-git中的其他命令)时,出现了一堆Python错误。我根本无法让git识别gremote命令。我试着按照这里的内容操作:http://github.com/blog/439-hg-git-mercurial-plugin

  2. hg-to-git(fast-export) - 所有的教程都期待我运行一个.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,所以完全不知道该怎么解决。

我花了四个小时在谷歌上搜索,翻阅了一堆无用的教程,还有那些比我幸运的人在赞美每个所谓有用的博客文章,但我一点进展都没有。有没有人能给我一些帮助或建议让我尝试一下?

6 个回答

2

你有没有想过安装 msysgit 呢?它提供的 git bash 终端应该可以运行 .sh 文件。

7

关于如何在Windows上将Mercurial仓库转换为Git,网上有很多相互矛盾的信息。其实这很简单,只需要安装TortoiseHg和Git就可以了。

准备工作

通过在你的Mercurial配置文件中添加以下内容来启用hg-git(这个文件通常在%Userprofile%\mercurial.ini):

[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 -- .

更多信息

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

19
  1. 安装 Cygwin(记得选择安装python、hg和git)
  2. 安装 git-hg
  3. 运行 git-hg clone ...url...

或者告诉我你这个hg仓库的url是什么,我可以帮你转换一下。

撰写回答