2011-12-14 52 views
4

我正在尝试在Git和Mercurial之间做出决定,无论我做出什么决定,我都想知道从一个SCM转移到另一个有多困难。从Mercurial迁移到Git并返回毫不费力?

我知道在这两种工具中都有导出+导入选项,我只想知道它是否会保留诸如分支,标签等内容。此外,是否还会有其他含义,如错误跟踪器等提交的错误引用。?

+3

你” d更擅长选择一个并坚持它,而不是浪费你的时间试图找出哪个更好。他们都很好。两者都不是错误的选择。 – 2011-12-14 10:57:12

回答

7

我先回答你的两个问题:

  • 它可以毫不费力地大多在两个系统之间的映射,因为它们的基本模型非常相似。但是,有几件事情无法来回映射。两个例子:Mercurial中的名称分支在Git中没有直接的等价物,并且Meritial不支持Git章鱼合并。

    有像hg-git这样的工具可以很好地让你使用Mercurial作为Git仓库的客户端。这是系统之间的双向桥梁,这意味着您可以使用它来双向转换。它适用于很多人,并且会保留标签和分支等内容。

  • 是的,会有来自外部工具的引用断开 - 虽然这两个工具都使用SHA-1来生成变更集散列,但它们有不同的事情,因此为不同的ID提供了本应相同的变更集。

+1

我也必须注意到,如果你不对每个系统做任何太疯狂的事情,这并不难。对我而言,从HG到Git是相当痛苦的,因为git可以通过快速导出将每个HG提交记录为git-commit(至少我认为它是快速导出)。 这可能是麻烦 - 但对于大多数基本的事情,它工作正常。 – Tigraine 2011-12-14 12:20:46

+0

@Tigraine:我完全同意。两个系统之间的基础模型非常相似,因此98%可以直接映射到它们之间。我会更新我的答案,使其听起来不那么困难。 – 2011-12-14 12:25:09

0

而Git和Mercurial是根普遍,他们有一些显著差异

  • Git使用自己的行话,这不存在(在部分)相同的条款在DVCS世界中有不同的含义,你必须采用这些变化来切换VCS
  • 对于数据模型:与Git相比,Mercurial在存储库中存储更多元数据,所以 - 如果将存储库从一个SCM转换为另一个并回来,Mercuri git - > Mercurial和Git - > Mercurial - > Git会向您显示不同的结果,比较Step1和Step3的回购。保存所有数据,对于米高梅你会发现在最后的Mercurial回购
  • 水银一些数据丢失GMG路径已经较成熟的GUI在Windows世界中,超过CLI为中心的Git