我们有一个代码审查存储库,人们可以在其中存储hg push -f
各种东西。审核完成后,我们从项目的中央存储库中提取、变基和推送。我最近升级到 mercurial 2.1 并收到此消息:
abort: can't rebase immutable changeset 43ab8134e7af
(see hg help phases for details)
当我尝试hg pull --rebase
从中央存储库中。我如何解决它?
我们有一个代码审查存储库,人们可以在其中存储hg push -f
各种东西。审核完成后,我们从项目的中央存储库中提取、变基和推送。我最近升级到 mercurial 2.1 并收到此消息:
abort: can't rebase immutable changeset 43ab8134e7af
(see hg help phases for details)
当我尝试hg pull --rebase
从中央存储库中。我如何解决它?
我不认为在服务器上禁用相位支持是正确的解决方案,但你的问题听起来很奇怪。
Pull --rebase
应该在远程更改之上重新设置您的本地更改,即使客户端支持阶段,只要其他任何人都没有看到这些更改,就应该允许这样做,例如。他们没有被推到任何地方。
您是否可能已经将自己的更改推送到其他地方(将它们设置为公共阶段),然后尝试从测试存储库中提取?因为那时,这是您所看到的正确行为。
大多数情况下,手动(使用 )搞乱阶段是一个坏主意hg phase -f
,因为它很容易导致历史重写,这可能导致重复的变更集,或者当其他人尝试拉/推时出现各种错误。如果变更集被标记为公开(如您的情况),则可能是有充分理由发生的。
我遇到过折叠变基的这种行为。逐步退出草稿并没有帮助我。所以我刚刚拉起 ( hg pull -u
) 以与远程仓库同步,然后只是嫁接了问题提交 ( hg graft <problem_commit>
),然后修改了这个非常新的提交。