バージョン管理について
バージョン管理システムは、時間を追って作成されるファイルの全バージョンのセットを管理し整理します。バージョン管理システムを使うと、前のバージョンに戻ったり、変更箇所を確認するために 2 つのバージョンを比較することができます。この方法により、ファイルへの変更履歴の正確なログを保持することができるだけでなく、前のバージョンのファイルを復元することができます。 さらに、バージョン管理システムを使うと、同じファイルに別の場所から変更を加えるなど、インターネットや社内ネットワーク上で開発プロジェクトを共有して作業を進めることができます。
バージョン管理の主要概念
- リポジトリ:
- バージョン管理下にある全ファイルの完全なバージョン履歴を保存しておく共有データベースです。
- 作業用スペース:
- ローカル・ハードディスクや Unixユーザ・アカウントで編集するファイルのコピー。作業用スペースでファイルを編集する場合は、ファイルはリポジトリとは同期がとれていない状態となります。 これで作業が進んだ事を意味します。その後、ほかのユーザが変更箇所を閲覧できるように、変更したファイルをリポジトリに戻します。
- ファイルまたはディレクトリのチェックアウト:
- ファイルのバージョン (通常最新のバージョン) をリポジトリから作業用スペースにコピーします。ディレクトリをチェックアウトすると、そのディレクトリにある全ファイルとサブディレクトリがコピーされます。
- ファイルまたはディレクトリのチェックイン:
- 作業したディレクトリを新しいバージョンとしてディレクトリにコピーします。
- ファイルまたはディレクトリのコミット:
- ファイルまたはディレクトリのチェックインと同じです。「変更をコミットした」ということは、ユーザが変更を加えて、変更をコミットしてリポジトリに戻したということを意味します。
- バージョン:
- ファイルの各ドラフトに付けられる番号です。1.1、1.2、1.3、1.4、2.0、2.1 などになります。ファイルを編集してリポジトリにコミットすると、バージョン番号が増えていきます。 1 桁目の番号は、自由にいつでも変更できます。
- 競合:
- 同じファイルに別のユーザが同時に変更を行う場合、変更が競合することがあります。 この競合を解決する方法には、 ロックおよびマージという 2 つの方法があります。
- ロック:
- バージョン管理で競合を管理する方法の 1 つで、ファイルをロックして一度に 1 人のユーザしか読み取り/書き込みコピーをチェックアウトできないようにします。 ほかのユーザは読み取りコピーの権利のみを利用できます。この方法により、同時に複数のユーザが同じファイルで作業することを防止します。 これは安全な方法ですが、実際には効率的な方法とは言えません。 また、1 人のユーザがファイルをロックしてからその日またはその週そのままにしておくと、その間ほかのユーザは不必要にブロックされてファイルに変更を加えることができなくなります。
- マージ:
- 競合を管理するもう 1 つの方法で、同時に複数のユーザが同じファイルで作業を行うことができます (ファイルはロックされません)。それから、結果を 1 つのバージョンにマージします。 これは、バージョン管理ツールがない場合に、複数の優れたユーザが並行して作業を行う状態に近い方法です。 変更の 2 つのセットを組み合わせることができる場合にはマージがうまく機能し、変更を組み合わせることができない場合にはうまく機能しません。 CVS はマージ機能を使用しています。
詳しくは、>新規ユーザのためのCVS(記事)をご覧ください。