Introduction to VersionVault Express concepts の翻訳版です。
HCL VersionVault Express のコンセプトの紹介
2021年10月18日
著者: Michael Hudson / Director for the HCL Software DevOps Products
この記事では、VersionVault ExpressがVersionVault Unified Change Management(UCM)の機能を使用して、バージョン管理された資産を管理する方法について説明します。
VersionVault ExpressはUCMを使用して、仮想アプライアンスにパッケージされたバージョン管理システムを実装します。各VersionVault Expressインスタンスは、VersionVault Expressプロジェクトのセットをホストし、各プロジェクトは独自のソースリポジトリであるVOB(Versioned Object Base)を持ちます。 VOBは、プロジェクトに関するメタデータと、プロジェクト内で管理されるファイル/ディレクトリ/シンボリックリンクのバージョン管理されたコンテンツを格納します。プロジェクトのメンバーシップは、プロジェクトのオーナーが管理するVOBのアクセスコントロールリストに記録されます。 (VersionVault Expressでサポートされているロールの紹介については、この記事の最後にある参照リンクを参照してください)。
各VersionVault Expressプロジェクトは、ストリームとそのコンテンツを整理するために使用される1つのUCMプロジェクトと、バージョン管理されたファイルとディレクトリの要素を保存するために使用される1つのUCMコンポーネントを含む1つのVOB上に構築されます。 これらは、VersionVault Expressのプロジェクト作成時に自動的に作成されます。 ほとんどの場合、これらのUCMオブジェクトを明示的に管理する必要はありません。
UCM プロジェクトには複数の UCM ストリームが含まれており、プロジェクトのメンバーがバージョン管理されたオブジェクトを管理します。 開発者は、自分の作業を他の開発者の作業とマージする準備ができるまで、自分のストリームで作業を分離することができます。
各プロジェクトは独立しており、自己完結しています。 複数のプロジェクト間の調整が必要な場合は、VersionVault Expressの範囲外で自分自身で行います。
UCM ストリームは、バージョン管理されたデータのブランチを管理します。 プロジェクトのトップレベルのストリームは、統合ストリームです。 このストリームは、主に Builder ロールのアカウントによって管理されます。 開発者は通常、このストリームに変更を直接チェックインすることはありません。開発者は通常、開発者ストリームを変更と検証を行う場所として使用します。
各開発者は、プロジェクトに参加すると開発者ストリームを取得します。 開発者ストリームは、統合ストリームの子です。 開発者は、変更を統合ストリームに配信して、他の開発者がその変更を利用できるようにしたり、自分のストリームをリベースして、他の開発者が配信した最新の変更を自分のストリームに反映させたりすることができます。
コードベースは、開発者が各ストリームにコードをチェックインすることで、時間とともに進化します。 通常、プロジェクトのビルダー・ユーザーは、配信完了などの特定の操作の後に、統合ストリームにベースラインを作成します。 ベースラインは、ストリームの状態のスナップショットを表し、VOB内の制御された各要素の1つのバージョンを参照しています。 時間をかけて、ストリームの歴史を記録する一連のベースラインを作成します。
各ストリームには、「推奨ベースライン」と「基礎ベースライン」という2つの異なるベースラインがあります。ビルダーは、ストリームの中で作成されたベースラインを推奨ベースラインとして指定することができます。 推奨ベースラインは、子ストリームのリベース処理のデフォルトの選択肢として提供され、新しい開発者用ストリームや機能ストリームなどの新しい子ストリームの基礎ベースラインとしても提供されます。 統合ストリームの基礎ベースラインは、あまり興味深いものではありません(作成直後のプロジェクトの初期状態を表しているだけです)。 しかし、開発者ストリームには、時間の経過とともに変化する可能性のある基礎ベースラインがあります。 ストリームが作成されると、最初は基礎ベースラインがその親ストリームの推奨ベースラインに設定されます。開発者は、作業開始時の親ストリームの状態に基づいて、自分のストリームで単独で作業を行うことができます。 しかし最終的には、リベース操作を使って、親ストリームの最新の良いコードと統合する必要があります。 ビルダーが新しい推奨ベースラインを作成して指定した後、開発者は簡単に自分の開発者ストリームをリベースして、その変更を取り入れることができます。 (開発者は、テストされていないコードを扱うリスクを許容できるのであれば、後から推奨されないベースラインを選択することもできます)。) リベースが完了すると、リベースされたストリームの基礎ベースラインが、リベース時に使用されたベースラインに設定されます。
VersionVault Expressのストリームは、階層的に配置されています。プロジェクト統合ストリームが、すべての "標準 "開発者ストリームの親であることはすでに説明しました。 しかし、メインの統合ストリームを妨げることなく、さらに分離して開発者が共同作業を行う方法が必要な場合は、"機能ストリーム"(またはそのようなストリームの階層ツリー)を作成することができます。 1つのレベルの機能ストリームでは、次のような階層構造になっています。
ビルダーは機能ストリームでベースラインを管理し、機能に携わる開発者は機能ストリームからリベースして機能ストリームに配信する。
ビルダーは機能ストリームでベースラインを管理し、その機能に携わる開発者は機能ストリームからリベースして配信します。 ある時点で、その機能が良い状態になったら、ビルダーやリードデベロッパーは、機能ストリームからプロジェクト統合ストリームに配信します。 その機能を担当していない開発者は、機能ストリームと並行して自分の開発者ストリームで作業することができます。
VersionVault Expressの厳密な親子配信/リベース・モデルよりも複雑なマージ・パターンが必要な場合は、VersionVault Explorerを使用して個々のアクティビティやストリーム間のマージを管理することができますし、さらに柔軟性を高めるためにVersionVaultフル版にアップグレードすることもできます。
配信とリベースは、ストリームの階層に沿って行われます。リベースは、親ストリームの新しいベースラインから変更をピックアップし、配信は、自分のストリームの変更を親ストリームにマージします。
ストリーム内では、ファイルやディレクトリのバージョンをチェックアウトしたり、チェックインしたりすることができます。 これらのストリームは通常、継続的な開発に使用されるため、ストリーム内の各変更は、関連する一連の変更を追跡するためにUCMアクティビティにリンクする必要があります。VersionVault Expressは、完全なVersionVaultと同様に、UCMアクティビティを使用して、関連するバージョンの変更セットをリンクします。 開発者は、各論理的な変更を管理するアクティビティを作成し、そのアクティビティを現在のアクティビティとして設定している間に、チェックアウト/チェックイン/ファイルの追加を行います。 コードを親ストリームにマージする準備ができたら、アクティビティの一部だけを配信することも、マージされていない変更を含むすべてのアクティビティを配信することもできます。
VersionVault Expressでは、UCMプロジェクト、コンポーネント、ストリーム、ベースライン、アクティビティを使用して、要素への変更を管理することを学びました。 ストリームは階層的に配置されており、開発者は、他の人が変更を取得できるように変更を配信したり、同僚から変更を取得するためにリベースする際にこれに従います。 ベースラインは、プロジェクトの開発サイクルにおけるストリームのバージョンの変遷を示すものです。 アクティビティは、複数の要素のバージョンを収集して、関連する変更セットを一貫して作成します。
さらに詳しく
VersionVault Expressには、VersionVaultのパワーの上に構築された、より多くの機能があります。 ここでは、より詳しく知るための追加リソースをご紹介します。