将 mercurial 与 hg-git 一起用作 github 客户端

Using mercurial with hg-git as a github client

我是 mercurial 的满意用户,我想用它来处理 github 上的一些回购协议。我已经在 SO 上安装了 hg-git (still having connectivity problems but that's not the question) and looked at the documentation and various questions,但我仍然不确定它提供的解决方案有多完整。

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

  2. 是否因为githg的不同分支模型存在问题或限制? (This 六年前的问题表明当时的体验还不够无缝。)

  3. hg-git 网站上,我读到 "In theory, the changeset IDs should not change [in hg -> git -> hg conversion], although this may not hold true for complex histories." 我应该对此有多担心?如果我只是在 github 和单个 hg 存储库之间同步(双向),会发生这种情况吗?

我正在查看两个用例:

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

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

我不希望 100% 完全替换。我拥有并使用 git,我只是更喜欢在日常工作中使用 hg。如果重要的话,我的大部分工作都是在 OS X 上完成的。

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