SCCS とは、ソースコード管理システム (Source Code Control System) のことです。SCCS には次のような機能があります。
ソースファイルの変更のレコード (変更履歴) を管理します。
複数のプログラマが、同時にソースファイルを変更することを防ぎます。
バージョンスタンプによってバージョン番号を記録します。
SCCS の基本操作は次の 3 つです。
ファイルを SCCS 管理下に置きます。
編集のためにファイルをチェックアウトします。
ファイルをチェックインします。
この節では、SCCS を使用してこれらの操作を行う方法を説明し、前のプログラムを使用した簡単な例を示します。ここでは基本的な SCCS についてだけ説明し、3 つの SCCS コマンド、create、edit、および delget だけを紹介します。
ファイルを SCCS の管理下に置くには、次の処理を行う必要があります。
SCCS ディレクトリを作成します。
SCCS ID キーワードをファイルに挿入します (任意)。
SCCS ファイルを作成します。
まず最初に、プログラム開発を行なっているディレクトリに SCCS サブディレクトリを作成しなければいけません。次のコマンドを使用します。
demo% mkdir SCCS |
なお、SCCS は必ず大文字にします。
ファイルごとにいくつかの SCCS ID キーワードを挿入する開発者もいますが、これは必須ではありません。あとで、SCCS の get または delget コマンドによってファイルがチェックインされるたびに、キーワードはバージョン番号によって識別されます。キーワードの文字列は次の 3 か所によく置かれます。
コメント行
PARAMETER 文
初期化データ
キーワードを使用する利点は、ソースリストの中にも、コンパイルされたオブジェクトプログラムの中にも、バージョン情報が現れることです。文字列 @(#) を前に付けておけば、what コマンドを使用して、オブジェクトファイル中のキーワードを出力できます。
パラメータとデータの定義文だけを含むヘッダーファイルをインクルードした場合は、初期化データの生成は行われず、ファイルに対するキーワードは、通常コメントの中か PARAMETER 文に付けられます。ASCII データファイルやメイクファイルのようなファイルの場合には、SCCS 情報はコメントに現れます。
SCCS キーワードは % キーワード % の形式で現れ、SCCS の get コマンドによって本来の値に展開されます。頻繁に使用されるキーワードは、次のとおりです。
%Z% は、what コマンドで認識される識別子文字列 @(#) に展開されます。%M% は、ソースファイルの名前に展開されます。%I% は、この SCCS が管理するファイルのバージョン番号に展開されます。%E% は、現在の日付に展開されます。
たとえば、make のコメント中で次のようなキーワードを使用すると、メイクファイルを指定することができます。
# %Z%%M% %I% %E% |
ソースファイルの startupcore.f、computepts.f、および pattern.f は、次の形式の初期化データによって指定できます。
CHARACTER*50 SCCSID DATA SCCSID/"%Z%%M% %I% %E%\n"/ |
このファイルを SCCS で処理し、コンパイルし、SCCS の what コマンドでオブジェクトファイルを処理すると、次のように表示されます。
demo% f95 -c pattern.f ... demo% what pattern pattern: pattern.f 1.2 96/06/10 |
また、get でファイルに探査するたびに自動的に更新される、CTIME という名前の PARAMETER も作成できます。
CHARACTER*(*) CTIME PARAMETER ( CTIME="%E%") |
INCLUDE ファイルは、SCCS スタンプが入っている Fortran のコメントで注釈できます。
C %Z%%M% %I% %E% |
Fortran 95 ソースコードファイルから取得した 1 文字の型成分名を使用すると、SCCS キーワード認識と競合する可能性があります。たとえば、Fortran 95 構造体成分参照 X%Y%Z は、SCCS から渡された場合、SCCS の get を実行したあとに XZ となります。ここで、Fortran 95 プログラムで SCCS を使用するとき、構造体成分を定義するのに 1 文字の英字を使用しないように注意します。たとえば、Fortran 95 プログラムの構造体参照が X%YY%Z の場合、%YY% は SCCS によりキーワード参照として解釈されません。そのほかの方法としては、SCCS で get -k オプションを指定すると、SCCS キーワード ID を拡張しなくてもファイルが取得されます。
これで、SCCS の create コマンドによって、これらのファイルを SCCS の管理下に置くことができます。
demo% sccs create makefile commonblock startupcore.f \ computepts.f pattern.f demo% |
ソースコードを SCCS 管理下に置いたあとは、ユーザーは SCCS を 2 つの主な作業に使用します。 編集を可能にするためにファイルをチェックアウトすることと、編集の完了したファイルをチェックインすることです。
ファイルのチェックアウトには、sccs edit コマンドを使用します。たとえば、次のようにします。
demo% sccs edit computepts.f |
この例では、SCCS は computepts.f の書き込み可能なコピーを現在のディレクトリに作成し、ユーザーのログイン名を記録します。あるユーザーがファイルをチェックアウトしている間、ほかのユーザーはそのファイルをチェックアウトできません。 しかし、ほかのユーザーは、誰がそのファイルをチェックアウトしているかを知ることはできます。
編集が完了したら、sccs delget コマンドを使用して、修正したファイルをチェックインします。たとえば、次のとおりです。
demo% sccs delget computepts.f |
このコマンドを実行すると、SCCS システムは次の作業を行います。
ログイン名を比較して、ユーザーがそのファイルをチェックアウトしたユーザーかどうかを確認する。
変更に関するコメントを入力するようにユーザーに求める。
この編集セッションで何が変更されたかを記録する。
現在のディレクトリから computepts.f の書き込み可能なコピーを削除する。
書き込み可能なコピーを、SCCS キーワードが展開された読み取り専用のコピーで置き換える。
sccs delget コマンドは、より簡単な SCCS の 2 つのコマンド、delta と get を組み合わせたものです。delta コマンドが前述の項目のうちの最初の 3 つを実行し、get コマンドが最後の 2 つの作業を実行します。