Mercurial:在没有公共阶段的情况下从远程存储库中提取更改(非发布服务器,“abort:不能重新定义不可变的变更集”)

时间:2013-03-19 21:30:52

标签: mercurial mercurial-queue mercurial-extension mercurial-phases

背景

Mercurial现在有Phases这是一个很好的机制,可以防止人们改变不应该改变的历史。将变更集推送到远程存储库时,变为public且不能再为rebased。如果存储库是公共的并且您不希望其他人更改您的更改集,这通常是一件好事。

但是,如果您拥有自己的临时存储库,只能与自己共享draft更改集,则会非常烦人。 Mercurial has a option to turn this off。将其添加到远程存储库的.hg/hgrc文件

[phases]
publish = False 

这将阻止推送到远程存储库的更改集从draft阶段转移到public阶段(本地变更集和刚刚推送到远程存储库的变更集。但是,仍然将此变更集拉下来将始终在public阶段将其拉下来。

问题

我希望在draft阶段取消变更集。我只是想将变更集推送到我的个人服务器,然后在家中将其下载。在我拉出它之后,我将rebase我的临时提交放在我从真正的发布服务器上提取的任何提交之后。

任何避免将拉出的变更集自动移动到public的方法都会很棒。这个远程存储库是我自己的完整和完整的草稿服务器。在rebase尝试失败后,被迫手动将变更集移回draft真正开始磨损。

参考

2 个答案:

答案 0 :(得分:1)

这似乎是一个错误。您使用的是什么版本的Mercurial?您是否尝试在https://bz.mercurial-scm.org处提交错误?

答案 1 :(得分:0)

我通过Bugzilla的帮助解决了这个问题。这是my final post there的片段(感谢您让我走上正确的道路djc)。

  

看起来我们可以将其归结为用户错误/错误测试用例(   课程)。如果有人责备(除了我自己),它可能是   TortoiseHg。我的测试用例包括剥离提交和一个提交   两个存储库然后更改该提交的阶段   另一个存储库再次推/拉。好像是TortoiseHg   有时会陷入错误的阶段(可能是缓存问题)。一世   当我来回切换我的服务器时,仍然可以重现这一点   在出版和非出版之间(但不是那么一致)   前)。

     

但是,执行命令行拉动似乎每次都能正常工作。   我正在使用命令行检查传出/传入,执行阶段   变化等等,但可能从未用它来实际拉动。

     

很抱歉浪费每个人的时间。我把它解决为无效,不确定是否   有人想把它改成更好的类别。如果有,请告诉我   是你要我检查或扩展的任何其他内容。

我会在任何更新中进行编辑,如果有人仍然遇到此问题,请与我们联系。