我在Mac上使用GIT。我有工具,我有经验。我想继续使用它。这里没有战争……

问题总是与互操作性有关。大多数人使用SVN,这对我来说很棒。Git SVN开箱即用,是一种简单的解决方案。人们可以继续愉快地使用SVN,我也不会丢失我的工作流程和工具。

现在…有些人跟着Mercurial。对他们来说很好:他们有自己的理由。但是我找不到任何现成的GIT HG。我不想切换到HG,但我仍然需要与他们的存储库进行互操作。

你们有谁知道简单的解决办法吗?


当前回答

有一个新的git-remote-hg提供本地支持:

Git中对Mercurial和Bazaar的桥接支持

只需要复制git-remote-hg到你的$PATH,让它可执行,就是这样,没有依赖(除了Mercurial):

git clone hg::https://www.mercurial-scm.org/repo/hg/

您应该能够从它中推入和拉出,就像它是一个原生Git存储库一样。

当您推送新的Git分支时,将为它们创建Mercurial书签。

有关更多信息,请参阅git-remote-hg wiki。

其他回答

有一个新的git-remote-hg提供本地支持:

Git中对Mercurial和Bazaar的桥接支持

只需要复制git-remote-hg到你的$PATH,让它可执行,就是这样,没有依赖(除了Mercurial):

git clone hg::https://www.mercurial-scm.org/repo/hg/

您应该能够从它中推入和拉出,就像它是一个原生Git存储库一样。

当您推送新的Git分支时,将为它们创建Mercurial书签。

有关更多信息,请参阅git-remote-hg wiki。

我已经尝试了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。

双向hg-git(和git-git, hg-hg)同步也可以通过服务Git-hg Mirror实现。它在幕后使用hg-git(以及其他),其代码也是开源的。


免责声明:我来自它背后的公司。

你应该可以使用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。

由于hg-git是一个双向桥接,它还允许您将更改集从Git推到Mercurial。