11

ClearCase のブランチとストリームの違いは何ですか?

4

1 に答える 1

9

ブランチは、特定のファイルのバージョンの履歴を並列化するための従来のバージョン管理方法です。「いつブランチする必要があるか」を参照してください

Stream はブランチではありません。これは、その Stream を参照するビューがどのようなベースラインを表示するかを記憶できる単なるメタデータです。
Stream を作成しても、何も起こりません (ブランチは作成されません)。ただし、ファイルがチェックアウトされると
、ストリーム名が使用されます。すべてのビューは、その構成仕様を設定して、ストリームにちなんで名付けられたブランチを作成し、そのブランチでの開発作業を分離します。
(「ClearCase でプロジェクトまたはストリームのスナップショット ビューを作成するにはどうすればよいですか?」を参照してください) 。

これが、ストリームに適切な名前を付けることが重要な理由です: " " という名前のストリームを作成するVonCと、最終的に (変更されたファイルのバージョン ツリーに) " " という名前のブランチが表示されますVonC:ブランチ " "の目的は何ですか? VonC?
「 」という名前のストリームを作成すると、「REL2.2_FIX」という名前のブランチがREL2.2_FIX表示され、リリース 2.2 で修正を行うためにそのストリームを参照するビューがあることが推測されます。これは、はるかに便利な名前です。(これが、「開発者モデルごとに1つのストリーム」が好きではない理由です)

したがって、書き込み可能なコンポーネントがある場合、 Stream はブランチのテンプレートと見なすことができます。

  • ストリームで必要なものを宣言します (どのベースラインを見たいか)
  • そのストリームにビューを作成します
  • チェックアウトすると、ストリームにちなんで名付けられたブランチが作成されます。

(これが、非常に多くの UCM ユーザーが「ストリーム」と「ブランチ」を混同または同一視する理由です)

ただし、プロジェクトに書き込み不可のコンポーネントしかない場合、ストリームは、そのストリームで作成する任意のビューで表示するベースライン (コンポーネントのラベル) のリストにすぎません。
これは視覚化メカニズムになり、システムをテストするために一連のコンポーネントの正確なバージョンにアクセスするだけでよいテスト環境に役立ちます。
その場合、どのファイルでもチェックアウトが行われないため、ブランチは作成されません。コンポーネントは UCM プロジェクトで書き込み不可と宣言されます。


Stream とブランチのその他の主な違いは、階層 (親 Stream / サブ Streams) 内の Stream の編成です
その階層は、ブランチには存在しません: 3 つのブランチがAある場合 , B, C:

  • A作業が終わったら、ブランチからマージする場所がわかりません。
  • あなたが行うマージは同じ意味を持ちます: A->B、またはC->A、またはB->C、または ...

Stream を使用すると、次のようになります。

MyProject_Int
 |
 --MyProject_Dev
    |
    -- MyProject_Feature1

ストリームの階層は、次の目的で存在します。

  • マージの可能なワークフローを導入します(あるストリームから別のストリームにマージする必要がある場所、つまりその親を知っています。必須ではありませんが、少なくとも次のことを視覚的に知る方法があります。
    • Feature1は、完全に開発されると、元に戻ります (マージされます) MyProject_Dev(その親ストリーム)。
    • MyProject_Devは、安定した状態に達すると、その親 Stream にマージできます。そこでは、開発が中断されずに進行している間MyProject_Intに統合テストを実施できます。MyProject_Dev
  • これらのマージに意味を追加します:
    • サブストリームからその親または他の親ストリームへのマージ (たとえば、必要に応じて からMyProject_Feature1に直接マージできMyProject_Intます) は、 と呼ばれますdeliver
    • 親ストリーム ( などMyProject_Dev) から直接のサブストリーム ( ( など) へのマージは、MyProject_Feature1と呼ばれrebaseます。
      その目的は、Feature1が の最新の変更で開発されていることを確認しDevて、最終的な配信を可能な限り簡単にすることです。 2 つの Streams から派生した 2 つのブランチの 2 つの並列化された履歴の間で、共通のコード セットが大きく分岐することはありませんでした。

これら 2 つの UCM 操作deliverrebaseは、その核心において、2 つのブランチAとの間の単純なマージにすぎないことに注意してくださいBただし、それらの名前から、任意の 2 つのブランチ間だけでなく、サブストリームと親ストリーム ( )、または親ストリームとサブストリーム ( )
の間でマージすることがわかります。deliverrebase

于 2011-04-12T14:32:57.613 に答える