2010-12-13 5 views
13

分岐戦略がnフィーチャブランチで構成される場合、「マスター」(メインライン)と「インテグレーション」ブランチがあります。統合ブランチの目的は何ですか?フィーチャーブランチ自体でテストと統合を実行できないのはなぜですか?"統合ブランチ"の目的は何ですか?

答えて

13

これは機能ブランチだからです。 1つの機能に関連する変更のみが含まれている必要があります。統合ブランチは、最後にマスターにプッシュする前に、複数の機能をまとめてテストする場所です。

もちろん、にはがありません。 は、機能ブランチ上での統合を行うことができます。と同じように、はすべてあなたの仕事をマスターで行うことができます。しかし、懸念の分離は良いことです。

+1

この分岐戦略を使用する典型的なワークフローは何ですか?機能ブランチのコード "developer complete"を入手し、統合ブランチに移動してQAのリリースを作成しますか? – Ben

+0

@Ben:基本的にはい。しかし、最初のステップは、マスターの最新の変更をマージすることです。特に、その機能がしばらく進んでいる場合は特にそうです。実際には、機能は定期的にマスタからマージして、最後に大きな悪いマージを避ける必要があります。また、単一の最終的な統合ブランチである必要はありません。 1つの統合ブランチは、バージョン* x *のいくつかの機能をマージする役目を果たしますが、別の統合ブランチは同時にバージョン* x * - 1の一連のバグ修正を照合するために使用されます。もっと少なく。 –

+0

開発が統合ブランチに移行した後、どのような状況でさらに機能ブランチがコミットされるのでしょうか? – Ben

2

「統合」ブランチの必要性についてよく見受けられる主な理由の1つは、自分のフィーチャーブランチが自分自身でテストできない場合です。私の経験では、これは通常、データベースの依存関係によるものです。または、データベースにバックアップされているWebサイトプロジェクトを考えてみましょう.BEA WeblogicでホストされているJSPアプリケーションを60GBのOracleデータベースに戻すことができます。テストするために各機能ブランチに独自のBEA WeblogicとOracleインスタンスを与えるには、多くのハードウェアが必要です。代わりに、できる限り機能ブランチにできるだけ開発するのが一般的に簡単ですが、完全なWebサーバーとデータベースでQAを実行する必要がある完全なQAテストのために統合ブランチに移行してください。

3

正確に「分離が良い」理由についてもう少し詳しく説明します。統合ブランチの目的は、新機能が単独で機能するかどうか、また他の新機能と組み合わせて機能するかどうかを判断することです。これは、機能が矛盾を引き起こし、解決に時間がかかることを意味します。

ただし、新しい機能のサブセットをメインラインブランチに展開したいので、2つの機能の間に互換性がないため、すべての機能をブロックしないでください。

フィーチャブランチをすでに互いにマージしていた場合は、フィーチャブランチを別々にメインラインにマージするのが難しくなります。それは完全に不可能ではありませんが、それは確かに面倒です(私は試してみました)。

機能ブランチに大規模なコードチャーンが含まれている場合や、作業中のコードの領域に関して重複している場合は、このアイデアをさらに引き継ぎ、マージ前に2つの機能を統合するブランチグローバルインテグレーションブランチを含むどこにいても、それらはi。 e。複数の統合レベルがあります。もちろん、これは一般的に望ましい状況ではありませんが、回避することができない可能性があります。統合ブランチを十分に活用していれば、結果の競合が解決しやすくなります。

関連する問題