我想知道为什么以下模式不可能。
创建了一个本地特征分支(minor_feature - 不打算与世界共享)我想将它的工作重新定义到一个众所周知的分支(稳定)的尖端。但是我发现,在自从分支离开稳定之后没有进展的情况下,rebase没有发现任何重新定位的东西。
我理解这违反了规则,即rebase的目的地不能成为源的祖先,但无法解决为什么在所示的简单情况下应该禁止这一点。我也明白,除了分支外,拓扑在rebase期间实际上不会发生变化。但鉴于分支名称对拓扑结构确实很重要,它似乎只是一个特殊情况,因为stable没有进一步的修改。在稳定的尖端进行一次额外的修改(比如从其他地方拉进来)我当然可以执行rebase
o branch:minor_feature
| rev:4
| changeset:746d8191aa5d
|
o branch:minor_feature
| rev:3
| changeset:520f565ba7f2
|
@ branch:stable
| rev:2
| changeset:64e7c753c090
|
o branch:stable
| rev:1
| changeset:3dc55a5c9971
|
o branch:stable
rev:0
changeset:fbf1f426945c
$hg rebase -b minor_feature
nothing to rebase
- 谢谢 克里斯戈尔曼
答案 0 :(得分:1)
Rebase严格用于更改变更集的祖先。正如你所观察到的,你并没有在这里改变祖先。分支不包括在祖先计算中。
我不是100%肯定你想要完成的事情。如果要有效地删除分支,那么只要你没有推动,你就可以使用MQ扩展。导入变更集,全部弹出。确保您已更新到稳定分支(默认情况下应该更新),并将其全部重新打开。
他们现在应该都在稳定的分支上。
答案 1 :(得分:0)
您可以使用convert extension执行此操作。您可以使用分支图将minor_feature
重新定位到default
。该文件(我们将其称为alldefault
)看起来像这样:
minor_branch default
然后命令就是:
$ hg convert --branchmap alldefault oldrepo newrepo
当它完成时,newrepo将在default
分支的顶部“更新”命名分支。