3

次のパターンが不可能な理由を知りたいです。

ローカル機能ブランチ (minor_feature - 世界と共有することを意図していない) を作成したので、その作業をよく知られているブランチ (安定版) の先端にリベースしたいと思います。ただし、安定版から分岐してから安定版が進行していない場合、rebase は再構築するものを何も見つけられないことを発見しました。

これは、リベースの宛先がソースの祖先であってはならないという規則に違反していることを理解していますが、示されている単純なケースでこれが禁止されるべき理由がわかりません。また、ブランチはさておき、リベース中にトポロジが実際に変更されないことも理解しています。しかし、ブランチ名がトポロジにとって実際に重要であることを考えると、安定版にそれ以上のリビジョンがコミットされていないという特別なケースにすぎないようです。安定版の先端に追加のリビジョンを 1 つ追加するだけで (たとえば、他の場所から取り込まれたとします)、もちろんリベースを実行できます。

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

リベースは、変更セットの祖先を変更するためのものです。あなたが観察したように、あなたはここで祖先を変えていません。ブランチは祖先の計算に含まれません。

あなたが達成しようとしていることは 100% わかりません。ブランチを効果的に削除する場合は、プッシュしていない限り、MQ 拡張機能を使用できます。変更セットをインポートし、すべてポップします。安定版ブランチ (デフォルトでは安定版) に更新されていることを確認し、それらをすべてプッシュして戻します。

それらはすべて安定版ブランチにあるはずです。

于 2010-11-10T16:31:38.813 に答える
0

これは、 convert 拡張機能を使用して行うことができます。minor_featureにリベースするには、branchmap を使用しdefaultます。そのファイル (ここでは と呼びますalldefault) は次のようになります。

minor_branch default

次に、コマンドは次のようになります。

$ hg convert --branchmap alldefault oldrepo newrepo

完了すると、newrepo は名前付きブランチ「リベース」をdefaultブランチの上に置きます。

于 2010-11-10T15:22:55.817 に答える