从 Mercurial 迁移到 Git

Posted

技术标签:

【中文标题】从 Mercurial 迁移到 Git【英文标题】:Migrating from Mercurial to Git 【发布时间】:2013-07-31 12:24:11 【问题描述】:

我知道这个问题之前被问过几次并标记为“可能重复”,但它们似乎都没有正常工作。我尝试了快速导出,但它给出了错误。谁能帮助如何?我需要历史。如能分步列出将不胜感激。

更新:

我尝试了快速导出:

cd ~
git clone git://repo.or.cz/fast-export.git
git init git_repo
cd git_repo
~/fast-export/hg-fast-export.sh -r /path/to/old/mercurial_repo **[I get error in this line]**
git checkout HEAD

这给出了错误:

..... hg-fast-export.sh:第 79 行:python:找不到命令

感谢您的帮助!

【问题讨论】:

这个 S.O.问题包含很多选项和文档链接(不仅是快速导出选项):***.com/questions/10710250/… 如果您希望我们为您提供帮助,请在您的问题中添加更多详细信息。您使用什么命令进行迁移?是否有任何错误信息?您已经尝试过哪些不起作用的方法?您提供的信息越多,我们能为您提供的帮助就越多! @Cupcake 我更新了我的问题。 @MF82 我完全按照那个链接。查看我的更新 你的python是怎么安装的? 【参考方案1】:
    将 hg-git 添加到 Mercurial 将 hg-repo 推送到 git-target

分步指南

从it's repository 克隆Hg-Git Extension 到某个本地PATH\TO\HG-GIT

B 在(全局 mercurial.ini 或存储库特定的 .hgrc)中启用扩展

[extensions]
bookmarks = 
...
hggit = PATH\TO\HG-GIT

书签是很久以前添加的,当时这个扩展不是 TortoiseHG|Mercurial 的一部分,不确定今天的配置

C 创建具有读|写权限的新 Git 存储库(或记住现有的?!)

D 从 p 添加 Git-repo。 C 到 .hgrc 的 [paths] 部分,用于 Mercurial 存储库,您希望在 Git 中以任何名称导出。我的本地 Mercurial 存储库的示例,它在 Github 上有 Git-mirror

[paths]
default = git+ssh://git@github.com/lazybadger/Fiver-l10n.git

E 之后,您可以在 Mercurial 中像往常一样使用 Git-repository 远程存储库,并且作为第一个操作(对于创建的空 Git-repository),您必须推送到新远程

F 检查 Git 存储库是否存在,推送后将 Mercurial 的完整历史记录镜像到其中

G 照常使用 Git-repository

本指南中使用的来源

WP 主题的本地 Mercurial 存储库,具有非常简单的线性历史记录

Git-mirror Github 上的这个 repo

【讨论】:

能否提供更多步骤? @Dilshod - 是的,答案现在扩展(将会) 感谢您发布所有内容。我正在尝试将扩展名添加到我的 HG,但它没有显示在扩展名列表中。这就是我尝试的方式。 hgext.bookmarks = hggit = C:/hg_builds/hg-git。我尝试了带有反斜杠“\”和引号的路径。不知道怎么回事。 @Dilshod - 我从未使用过纯 Mercurial(仅 THG),因此 - 在这方面什么也说不出来 抓住重点(D),你如何构建“git+ssh://git@github.com/lazybadger/Fiver-l10n.git”字符串?

以上是关于从 Mercurial 迁移到 Git的主要内容,如果未能解决你的问题,请参考以下文章

OpenJDK 项目迁移到 GitHub

牛逼!OpenJDK 源码要迁移到 GitHub 了!

牛掰!OpenJDK 居然要迁移到 GitHub,再也不用龟速下载了!

Mercurial:迁移到新的存储库结构 - 子存储库更新

牛逼!OpenJDK 源码要迁移到 GitHub 了!

移至 Mercurial 时,SVN“缺少修订”