我在Mac上使用GIT。我有工具,我有经验。我想继续使用它。这里没有战争……
问题总是与互操作性有关。大多数人使用SVN,这对我来说很棒。Git SVN开箱即用,是一种简单的解决方案。人们可以继续愉快地使用SVN,我也不会丢失我的工作流程和工具。
现在…有些人跟着Mercurial。对他们来说很好:他们有自己的理由。但是我找不到任何现成的GIT HG。我不想切换到HG,但我仍然需要与他们的存储库进行互操作。
你们有谁知道简单的解决办法吗?
我在Mac上使用GIT。我有工具,我有经验。我想继续使用它。这里没有战争……
问题总是与互操作性有关。大多数人使用SVN,这对我来说很棒。Git SVN开箱即用,是一种简单的解决方案。人们可以继续愉快地使用SVN,我也不会丢失我的工作流程和工具。
现在…有些人跟着Mercurial。对他们来说很好:他们有自己的理由。但是我找不到任何现成的GIT HG。我不想切换到HG,但我仍然需要与他们的存储库进行互操作。
你们有谁知道简单的解决办法吗?
当前回答
你应该可以使用hg-git。
hg clone <hg repository>
编辑~ /。HGRC并添加:
[extensions]
hgext.bookmarks =
hggit =
创建一个书签,这样你就可以在git中拥有一个master:
cd <repository>
hg bookmark -r default master
在仓库中编辑.hg/hgrc并添加:
[git]
intree = true
现在你可以创建git存储库:
hg gexport
您可以使用生成的目录作为git克隆。从mercurial提取如下:
hg pull
hg gexport
然后推到mercurial:
hg gimport
hg push
(是的,你需要在这个工作流中使用hg,但你的黑客将全部在git中)
P.S.如果你对这个工作流程有问题,请提交一个bug。
其他回答
您可以尝试hg2git,这是一个python脚本,是fast-export的一部分,您可以在http://repo.or.cz/w/fast-export.git上找到它。
不过,您需要安装mercurial。
你应该可以使用hg-git。
hg clone <hg repository>
编辑~ /。HGRC并添加:
[extensions]
hgext.bookmarks =
hggit =
创建一个书签,这样你就可以在git中拥有一个master:
cd <repository>
hg bookmark -r default master
在仓库中编辑.hg/hgrc并添加:
[git]
intree = true
现在你可以创建git存储库:
hg gexport
您可以使用生成的目录作为git克隆。从mercurial提取如下:
hg pull
hg gexport
然后推到mercurial:
hg gimport
hg push
(是的,你需要在这个工作流中使用hg,但你的黑客将全部在git中)
P.S.如果你对这个工作流程有问题,请提交一个bug。
我已经尝试了cosmin的git-hg和abourget的git-hg-again都在mutt的hg回购,似乎后者尊重一个合并的顺序好,前者有点随机。你可以从下面的截图中看到。
cosmin的git-hg导入mutt的合并历史图:
abourget's git-hg-again导入mutt的合并历史图:
hgk在mutt's hg库上绘制的实际历史图:
正如你从上面看到的,abourget的git-hg-第二个图非常接近原始的hgk图,实际上反映了mutt的真实工作流程。
我再次发现git-hg的一个缺点是它没有添加一个'hg'远程,而是将所有的引用作为本地标签导入,git-hg有一个很好的'hg'远程表示上游hg repo。
我试过hggit。对我来说很管用,因为我得应付那些流浪汉和流浪汉的工作。 特别是对于评论来说,这是很棒的。
关于这个主题的一个小问题/警告:
我尝试用hg克隆一个稳定的linux内核存储库。这些存储库在git中维护,通常有大量的文件。
它非常慢。我花了2天时间完全克隆和更新一个工作副本。
2021年的最新答案似乎是git朱砂,Firefox就是用的。
本页上建议的其他脚本要么没有维护,要么需要过时的软件才能运行(通常是python 2.7)。相比之下,cinnabar可以使用python 3.5+,并且至少可以维护到本文撰写之日。
一旦朱砂安装,你可以克隆mercurial库直接前缀hg:::
git clone hg::https://hg.mozilla.org/mozilla-unified
或添加或设置一个远程到
git remote set-url origin hg::https://hg.mozilla.org/mozilla-unified
git fetch origin
你可以按下多变的遥控器。
使用hg2git和git2hg命令允许将git提交的sha1转换为mercurial更改集。 更多文档可在github页面。