2010-11-10 15 views
2

我想知道为什么下面的模式是不可能的。如果在不同的分支上,为什么我不能将其转换为源变更集的祖先?

已经创建了本地特性分支(minor_feature - 不打算与世界分享)我想在变基其上的工作,一个众所周知的分支(稳定)的尖端。然而我发现rebase在稳定没有进步的情况下没有发生任何重新设定。

我认识到,这打破了重订的目标不能是源的祖先,但不能工作了,为什么本应在所示的简单情况下被禁止的规则。我也明白,除了分支之外,拓扑在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

您可以用convert extension做到这一点。您可以使用分支图将minor_feature重新设置为default。该文件(我们叫它alldefault)将是这个样子:

minor_branch default 

然后命令将只是:

$ hg convert --branchmap alldefault oldrepo newrepo 

当它完成,newrepo将有一个名为分支“重订”在default分支的顶部。

1

再次基于严格改变的变更的祖先。正如你所观察到的,你不会在这里改变祖先。分支不包括在血统计算中。

我不是100%肯定你想完成的任务。如果要有效移除分支,那么只要您没有推送,就可以使用MQ扩展。导入变更集,全部弹出。确保你已经更新到稳定的分支(它应该是默认分支),然后重新推回它们。

他们现在应该都可以在稳定分支。

相关问题