如何修复Mercurial卡在Git子博客推送上的问题


  1. 我有根Mercurial repo(网站)
  2. 我从GitHub镜像中克隆WordPress到/wp子目录中
  3. 由于我想要非常具体(稳定)的WP版本,但没有正在进行的开发,所以我做git checkout 3.4.1(其中3.4.1是标签)
  4. 我在根Mercurial repo中将其设置为subrepo并提交(WP修订版在.hgsubstate中捕获良好)

麻烦开始了。我做hg push,当它到达WP:时

no branch checked out in subrepo wp
cannot push revision e9bc63e25dc40c07ac3a6778dc2b48e1aa486e36

然后它就退出了。甚至没有尝试推动根回购。

我理解为什么Mercurial尝试推送子博客(预期行为),但我不明白为什么它在子博客上完全失败:

  1. 没有更改
  2. 仍然具有只读原点

如何让它理解我想要这个特定的修订版,我不希望它干扰Git子博客?

此设置将遇到几个问题。

首先,mercurial似乎无法用分离的HEAD处理gitsubpos。

当您执行git checkout 3.4.1时,您的回购将进入分离的HEAD状态(您应该在执行该命令时看到一个警告)。此时,如果运行git branch,则会看到(no branch)被列为活动分支。当mercurial试图推动时,它会在这种状态下窒息。您可以询问mercurial开发人员列表为什么会发生这种情况,但这可能是现有subpo实现的限制。

其次,mercurial使用一个push命令来同步git-subpos

如果要运行git checkout -b <integration_branch> 3.4.1,它会使git脱离分离的HEAD状态。然而,当您尝试hg push时,它将尝试实际推送到远程git repo。对于mercurial子博客,即使您没有对远程的推送访问权限,它也可以检查传出的更改。然而,GitHub要求你进行身份验证,然后才会告诉你这两个转发是否同步。因此,如果您没有对git远程的推送访问权限,那么这将失败。这是mercurial子博客策略设计的一部分。

如果您需要继续此设置,您可能应该执行以下操作:

  1. 在GitHub上创建自己的WordPress repo分支
  2. 将你的fork克隆到mercurial子博客目录中
  3. git checkout -b <branch_name> 3.4.1
  4. 从那里继续

在这个相关的问题中还有一些额外的信息。

相关内容

  • 没有找到相关文章

最新更新