使用mercurial和hg-git作为github客户端

时间:2016-12-01 10:04:07

标签: git github mercurial hg-git

我是mercurial的满意用户,我想用它来处理github上的一些回购。我已经安装了hg-git(仍然存在连接问题,但这不是问题)并且在SO上查看了文档和各种questions,但我仍然不确定它提供的解决方案有多完整。

  1. git / github的重要功能是hg + hg-git支持不可用,有限还是容易出错?我使用分支和合并,标签,偶尔使用mercurial commit --amend命令。我真的不需要书签,子目录,自定义挂钩或mercurial补丁队列。

  2. 由于githg的分支模型不同,是否存在问题或限制? (This六年之久的问题表明当时这不是一种无缝的体验。)

  3. hg-git网站上,我读到"理论上,变更集ID不应更改[in hg - > git - > hg转换],虽然这可能不适用于复杂的历史。" 我对此有多担心?如果我只是在github和单个hg回购之间进行同步(两个方向),会发生这种情况吗?

  4. 我正在研究两个用例:

    A)使用hg作为大型项目的github客户端,有很多分支,通常由git用户(master分支等)开发。

    B)使用github来托管我用mercurial开发的我自己的(较小的)项目。

    我没想到100%完全更换。我有并使用git,我更喜欢每天与hg合作。如果重要的话,我会在OS X上完成大部分工作。

1 个答案:

答案 0 :(得分:1)

  1. hg-git的使用存在限制,例如git-lfs。使用大文件的存储库将无法正常工作。有一些极端情况,例如章鱼合并(与两个以上的祖先合并)会在Mercurial方面造成麻烦,并且它们在Mercurial中没有等效物。然而,在日常工作中,很少遇到这些限制。在大多数情况下,hg-git将完全正常工作。
  2. Mercurial分支无法正确反映到Git中,因为git没有相同的概念。我认为hg-git将分支映射到书签,所以你应该继续使用书签。如果你想将某个命名分支推送到git存储库,然后在git端重命名,你就不能重命名Mercurial中的命名分支,所以要避免使用命名分支。
  3. 在你的情况下,它很可能会很好。 hg-> git-> hg错误是由于例如名称分支转换,缺少章鱼合并等。