5

名前付きブランチの柔軟性は気に入っていますが、ヘッドの増殖については懸念があります。

ブランチが閉じられても、まだ頭に表示されます。「hg ヘッド」からの出力をクリーンアップする方法についてのアイデアがあります。教祖への私の質問:「何が足りないのですか?」

最初に、名前付きブランチのヘッドを完全に非表示にする必要があるのはなぜですか? さまざまな理由で:

  • 機能は悪い考えです
  • この機能は良いアイデアであり、マージしてチップにする準備ができていませんが、おそらく数か月以内に
  • ブランチは古いタグ付きバージョンへのパッチ リリースです

編集: 頭部の増殖は、私が使用していた古いバージョンの mercurial の症状であることがわかりました。ブランチを閉じると、新しい Mercurial バージョンではブランチのヘッドが隠されます。

私の考えは、これらすべての閉じたブランチ ヘッドがマージされる「デッド」ヘッド ブランチを持つことです。
デッド ヘッドはチェンジセット 0 によって親にされ、現在必要のないストレイ ヘッドをまとめるという唯一の目的を果たします。

デッドヘッドには他のデッドヘッドの子のみがあり、デフォルト ブランチにマージされることはありません。

4

3 に答える 3

7

hg commit --close-branchブランチをクローズ済みとしてマークするために使用できます。

http://www.selenic.com/mercurial/hg.1.html#commit

閉じたブランチはデフォルトでは表示されません (/ オプションが指定されている場合hg branchesのみ) 。hg heads-c--closed

物事を統合することで、具体的に何を得ることができますか?

于 2010-09-03T19:36:01.897 に答える
1

Mercurial の新しいバージョンでは解決されていないデッド ヘッドを残すことにはマイナス面があるようです。

閉じたブランチ ヘッドが多数あり、閉じていないアクティブなブランチが 1 つだけあるとします。さらに、後の時点で、閉じていないヘッド (rev good) の上に悪いコミット (rev bad) を作成したとします。プッシュする前に、リポジトリのクローンを作成して、その悪いコミットをドロップします。それは通常、簡単なことです -

hg clone --rev good BadRepo FixedRepo

残念ながら、閉じたブランチ ヘッドは rev good の祖先ではないため、プルされません。閉じられたすべてのブランチは、複製されたリポジトリでは閉じられません。これを Mercurial 2.3.1 でテストしました。

考え?

ps hgflow 拡張機能は、マージ前に機能を閉じてブランチをリリースします。これにより、ヘッドが閉じている問題が回避されます。

クローンは醜いアプローチであるという点で、私にとっては非常にうまく機能し、簡単に機能しました。クローンは、リポジトリを不適切なコミットに置き換えます。クローンはローカルの取り組みです。その悪いリポジトリは破棄されます。私は通常、すぐに悪いコミットをしたことに気づきます。

-b オプションは、変更セット識別子の代わりにブランチ名を使用して --rev を言い換える方法にすぎません。--rev オプションを使用すると、トポロジ ツリー全体がリビジョンの下にプルされます。リビジョンがブランチのヘッドである場合、 --rev クローンは -b クローンと同じです。-b は、 --rev オプションで説明したのと同じ問題を残します。元のリポジトリで閉じられたブランチは、ヘッドとして残されている場合は再度開かれます。

パターンが閉じた頭を残すことである場合、それらはすぐに関連する頭を大幅に上回るでしょう。完全なクローンを作成しない限り、これらのクロージャーをクローンに入れるのはかなりの労力です。

于 2012-11-06T23:46:07.257 に答える
0

なぜ私が部分的なクローンを作成するのかということで、水が濁ってきたように感じます。クロージャーヘッドに関する私の懸念をより慎重にもう一度述べます。

リポジトリ X からリポジトリ Y への部分的なクローンの場合、リポジトリ X に閉鎖ヘッドを持つブランチ B が存在し、そのブランチが純粋にトポロジー上の理由でクローンに含まれている場合、ブランチ B はリポジトリ Y で閉じられません。マージパターンは、一般にクロージャーヘッドを残すことであり、クロージャーヘッドの数は開発時間の順序です。

これは私にとって懸念事項なので、マージする前にブランチを閉じます。hgflow (http://nvie.com/posts/a-successful-git-branching-model) を使用しています。可能な部分クローンは、開発ブランチをクローンし、それに続いてマスター ブランチをプルすることです (たとえば、行き止まりをなくしたい場合)。フィーチャー ブランチとリリース ブランチが最終的なマージ後に閉じられた場合、それらのブランチはクローンで再度開かれます。

于 2012-11-07T21:03:15.690 に答える