3

我想知道为什么以下模式是不可能的。

创建了一个本地特性分支(minor_feature - 不打算与世界共享)后,我想将它的工作重新定位到一个众所周知的分支(稳定)的顶端。但是,我发现,在从它分支后稳定没有进展的情况下,rebase 没有发现任何要重新设置的内容。

我很欣赏这违反了规则,即 rebase 的目的地不能是源的祖先,但无法弄清楚为什么在所示的简单情况下应该禁止这样做。我也明白,除了分支之外,拓扑在变基期间实际上不会改变。但是考虑到分支名称对拓扑结构确实很重要,这似乎只是一种特殊情况,因为稳定版没有对其进行进一步的修订。在 stable 的尖端进行一个额外的修改(比如从其他地方拉进来)我当然可以执行变基

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

——谢谢克里斯·戈尔曼

4

2 回答 2

2

Rebase 严格用于更改变更集的祖先。正如您所观察到的,您不会在这里改变祖先。分支不包括在祖先计算中。

我不是 100% 确定你想要完成什么。如果是为了有效地移除分支,那么只要你没有推送,你就有可能使用 MQ 扩展。导入变更集,全部弹出。确保您已更新到稳定分支(默认情况下应该是),然后将它们全部推回。

他们现在应该都在稳定的分支上。

于 2010-11-10T16:31:38.813 回答
0

您可以使用转换扩展来做到这一点。您将使用分支图重新设置minor_featuredefault. 该文件(我们称之为alldefault)看起来像这样:

minor_branch default

那么命令就是:

$ hg convert --branchmap alldefault oldrepo newrepo

完成后,newrepo 将在分支顶部“重新定位”命名default分支。

于 2010-11-10T15:22:55.817 回答