バージョン管理グロッサリ

バージョン管理とは何か?

バージョン管理システムとは、時間を追って作成されるファイルの全バージョンのセットを管理し、整理するシステムです。バージョン管理システムを使うと、前のバージョンに戻ったり、変更箇所を確認するために 2 つのバージョンを比較することができます。この方法により、ファイルへの変更履歴の正確なログを保持することができるだけでなく、前のバージョンのファイルを復元することができます。さらに、バージョン管理システムを使うと、同じソース・リポジトリにマージすることにより、インターネットや社内ネットワーク上で開発プロジェクトを別の場所から共有して作業を進めることができます。

バージョン管理の重要語

ファイルまたはディレクトリのチェックイン
作業ディレクトリを新しいバージョンとしてリポジトリにコピーします。
ファイルまたはディレクトリのチェックアウト
ファイルの最新バージョンをリポジトリから作業用スペースにコピーします。ディレクトリのチェックアウトを行うと、そのディレクトリにある全ファイルとサブディレクトリがコピーされます
ファイルまたはディレクトリのコミット
ファイルまたはディレクトリのチェックインと同じです。「変更をコミットした」ということは、ユーザが変更を加えて、これらの変更をリポジトリに戻したということを意味します。
競合
同じファイルに 2 人の開発者が同時に変更を行ってリポジトリに変更をコミットする場合、変更が競合することがあります。競合が発生した場合には CVS が競合を検出します。変更を確認する前に誰かが競合を解決しなければなりません。
マージ
ソース・リポジトリにある同じファイルの異なる作業用コピーに加えられた複数の変更を統合する作業を指します。マージは、ファイルをロックする方法ではなく同時に複数のユーザによる作業を可能にするために競合を管理する方法で、作業が 1 つのバージョンに統合されます。2 種類の変更セットが異なる行に適用されている場合はマージ作業がスムーズに進み簡単にマージできます。ファイルへの変更が同じ行または同じ複数行にある場合は競合が生じ、いずれかがソース・リポジトリで変更をコミットする前にファイルを手作業で編集しなければなりません。
リポジトリ
バージョン管理下にある全ファイルの完全なバージョン履歴を保存しておく共有データベースです
解決
複数のユーザによって加えられた変更の競合は、ファイルを手作業で編集して解決します。いずれかがファイルを 1 行ずつ見直し、ある変更を受け入れまたその他の変更を削除していきます。競合のあるファイルは、競合がすべて解決されるまで、ソース・リポジトリでコミットすることはできません。
リビジョン
個々のファイルに対する特定のアップデートに番号を付けたドラフトのことです。ファイルを編集してリポジトリにコミットするたびに、ファイルのリビジョン番号が増えます。
バージョン
ある時点でタグおよび名前を付けたファイルのセットを識別するために使用される連番方法です。
作業用スペース
ローカル・ハード・ディスクや Unix ユーザ・アカウントで編集するファイルのコピーです。作業用スペースでファイルを編集すると、ファイルはリポジトリと同期化されていない状態となります。これは作業が進んだ事を意味します。その後、ほかの開発者が変更箇所を閲覧できるように、変更したファイルをリポジトリに戻します。

コピー・編集・マージ開発のサイクル

CVS は非常に強力なツールであるため、学習には時間がかかる場合があります。CVS の完全な知識ベースを提供する書籍や Web サイトが多数あります (このサイトのメイン CVS ページの下部には、良いリソースが多数記載されています)。ただし、すべての知識を吸収しなくても、CVS をソフトウェア開発の実践に直ちに、しかも効率良く統合することができます。

CVS を使うと、プロジェクト全体の開発サイクルを追跡しながら、独自の開発内で作業を行うことができます。

  1. プロジェクトのリポジトリまたはプロジェクトのソースファイルを集めたモジュールをチェックアウトする、つまり独自の作業用コピーを取得することにより、プロジェクトの作業を開始します。
  2. これらのファイルに変更を加えたり、新しいファイルを作成して、プロジェクトの作業を進めます。

    この作業サイクルは、CVS には直接関係ありません。ローカル・マシンのファイル・エディタを使ってプロジェクト・ファイルの作業用コピーに変更を加えます。編集したファイルを保存してコンパイルし、ほかの開発者が同じプロジェクト・ファイルで行っている作業に影響を与えることなく、変更が自分の作業している特定のプロジェクト・モジュールにどのように反映されるかを確認できます。変更をプロジェクト・リポジトリでコミットするまでは、加えた変更はほかの開発者の作業には影響しません。

  3. 自分の行った変更がプロジェクト全体を壊したりすることがないように、自分の作業用スペースで最新の変更をテストし、編集します。
  4. 最後に、自分の作業をメインまたはプロジェクト・ファイルの「トップ」部分にチェックインし、CVS の用語でヘッドと言われる最新の作業バージョンに自分の変更をマージします。

    自分の変更をほかの開発者の作業にマージして変更をコミットする部分は、CVS の最も強力な部分ですが、同時にこれは最も危険な部分でもあります。どの変更をコミットしてよいかがわからなくなったり、間違って自分の変更でほかの開発者の作業を上書きしてしまうことがあるからです。自分が行った変更は、ある時点で必ずほかの開発者の作業と競合します。自分の作業用コピーをアップデートする方法やタイミング、マージの競合の解決方法を理解することは、コラボレーション開発プロジェクトで CVS を使用するために特に重要な問題となります。

このコピー・変更・マージのサイクルは、参加しているすべての開発者によってプロジェクトが続く限り繰り返されます。CVS は、参加者全員がプロジェクト・ファイルで同時に作業し、ほかの開発者によって加えられた最新の変更をつねに維持し、ほかの開発者の作業サイクルを妨害することなくプロジェクト全体に自分の変更がどのように影響するかをテストすることを可能にします。

CVS を初めてお使いになる場合は、次のページを参照してください。