CVS コマンド・ラインを使ったプロジェクト・ファイルとディレクトリの管理

ファイルとディレクトリのリリース

プロジェクトの開発サイクルのある時点で、プロジェクトのソース・リポジトリの管理に不必要になったり、古くなったファイルやディレクトリを扱う作業が必要となります。 たとえば、モジュール内の特定の機能を破棄を決定するような場合です。または、インフラストラクチャの変更によって、ファイルの削除や移動が必要が生じる場合もあります。 このセクションでは、CVS でこのようなファイル管理問題を扱う場合の方法について説明します。

リリースとは、プロジェクトではもう使用されていない特定のディレクトリやモジュールを指定する方法を意味します。リリースを行うコマンドは、作業用コピー内で実行され、指定したディレクトリやファイルの cvs チェックアウトを実質的にキャンセルします。ファイルやディレクトリを明確に削除しない限り、ファイルやディレクトリは、ファイルの全リビジョン履歴を含めた情報とともにリポジトリ内に残ります。ただし、チェックアウトされる作業用コピーには含まれなくなります。

ファイルやディレクトリをリリースするコマンドは、次のとおりです。

cvs rel filename (または /directory_name)

リリースについての詳細

ファイルの削除

削除とは、プロジェクトのソース・リポジトリの一部としてファイルが必要なくなった場合にファイルを除外するもう 1 つの方法です。これには、まずローカルシステムでチェックアウトした作業用コピーからファイルを削除します。

それから、共有リポジトリからファイルを削除するために、次のコマンドを入力します。

cvs remove filename

1 つまたは複数のファイルを削除したら、変更をコミットしなければなりません。

cvs remove」 (または「cvs rm」) を使うと、古いファイルは完全に削除されるのではなく、完全なリビジョン履歴とともに「attic (屋根裏)」と呼ばれる CVS に保存されます。

ファイルおよびディレクトリの名前変更と移動

既存のソースコードをリポジトリにインポートする場合、ファイルやディレクトリの名前を変更したり、移動したい場合があります。

作業用コピーで名前を変更する最良の方法には、次の複数のステップを実行します。

cvs rm old_filename

古い名前を削除します。それから、

cvs add new_filename

さらに

cvs commit new_filename

ディレクトリの削除や名前の変更について、CVS には既定な方法はありません。ただし、新しいディレクトリを作成し、必要なファイルをそのディレクトリに移動し、古いディレクトリから不必要なファイルを削除してから古いディレクトリを使用しないようにすると、結果としてにディレクトリの名前を変更できます。その後、次のコマンドを使って作業用コピーを次回にチェックアウトしたときに、空のディレクトリを削除することができます。

cvs checkout -P

ファイルのないディレクトリを削除するには、次のコマンドを使ってアップデートすることによっても実行できます。

cvs update -dP

既存コードのインポート

プロジェクトに既存のファイルを追加する場合は、次のコマンドを使用します。

cvs import filename

インポート処理では、高度な「cvs add」を使って複数のファイルを一度に追加できます。既存のディレクトリおよびファイルをインポートするには、トップレベルのディレクトリで次のコマンドを入力します。

cvs import -m "log message" projectname

これは、このサイトにあるプロジェクトの CVS リポジトリにファイルおよびディレクトリを作成します。これらのファイルやディレクトリを元の状態で保存したい場合は、ほかの開発者がプロジェクト・ファイルの作業用コピーをチェックアウトし始める前に、元のファイル・セットにタグを付けるまたはアーカイブしておくことをお勧めします。

既存のファイルがすでにバージョン管理下にある場合は (ほかの CVS リポジトリにある、または RCS のような異なるバージョン管理システムにある)、ファイルの履歴を維持する既存ファイルの自動化されたインポート方法はありません。 cvs import コマンドを使い、ファイルのコピーや新規ファイルとしての作成をすると、ファイルの履歴は維持されません。

CVS と RCS

RCS をすでに使用している場合は、RCS および CVS は、個々のファイルのバージョン管理履歴を保存するために同じような形式を使用していることはご存知のことでしょう。 しかし、CVS を使用する場合には、次の 2 つの重要な違いに注意してください。

RCS と CVS についての詳細

キーワードの置換

キーワードの置換 (キーワードの展開ともいう) は、開発者には便利な RCS にもある機能です。基本的にキーワードは、ソース・ファイルに永久にバージョン情報を埋め込む役割を果たします。以降ファイルを編集するときにはいつでも、特定のキーワードに関連付けた完全なバージョン情報を含む文字列と置き換えることができます。

たとえば、次のようなキーワードがあります。

$Author: tigrisc $

ファイル内には、このリビジョンをチェックインしたユーザのログイン名が永久に残ります。

キーワードの置換は、ファイルが CVS リポジトリの一部でなくなった時点以降のファイル・バージョンを追跡する方法です。キーワードの置換を設定したり、使用不可にすることもできます。

キーワードについて詳細 (共通のキーワードリストを含む)

タグとブランチについて

このサイトでホストされているプロジェクトの CVS リポジトリは、ソース・ファイルのタグとブランチをサポートしています。プロジェクトのある時点で、プロジェクトの開発作業を同時に複数の方向に進行させたいような場合があります。 単一で直線的な開発パスを維持する代わりに、CVS のブランチ機能を使って、プロジェクトにこれまで費やした労力の結果に影響を与えることなく付随的な開発用のソース・ツリーを展開する、または分割することができます。ブランチ操作を行う理由としては、次のような例があります。

タグ機能の使い方は、ブランチ機能の使い方と同時に説明しなければなりません。この 2 つの操作は同時に使用されるためです。タグ機能を使うと、プロジェクトのある時点でプロジェクト全体の状態の「スナップショットを撮る」ことができます。これにより、特定の特徴を持つビルドを維持できます。 CVS は、個々のファイル・リビジョンを管理するため、タグ機能は、プロジェクトのソース・コードの全体的な状態のベンチマークを示すための重要なオプションです。 タグに含まれるファイルは、それぞれのリビジョン番号において異なる時点のものとなります。

ブランチおよびタグ機能の重要な違いは、2 つの操作を同時に使用する理由でもあります。

ブランチ操作は、個々のファイルのリビジョン番号に影響します。一方、タグ操作は、共通の識別マーカーをある時点の全プロジェクト・ファイルに割り当てます。

たとえば、ブランチが作成された時点でプロジェクト・ファイルにタグを挿入するのが普通です。

最終的に、満足のいく結果を持つプロジェクトのブランチは、主要な開発パスに戻され、統合されます。大規模で長期的なプロジェクトでは頻繁に行われますが、このマージが行われる時点でもタグが作成されます。

プロジェクト・ファイルにタグを挿入するには、次のコマンドを入力します。

cvs tag unique_tag_name

タグ名は、リリース名、日付、製品のバージョン識別子など自由に選択できます。

ブランチを作成するには、次のコマンドを入力します。

cvs tag -b unique_tag_name

ブランチおよびタグ操作は、さまざまな考慮点やオプションがあるため、複雑なトピックです。より詳しい情報や説明が必要な場合は、次のリソースを利用してください。