プログラミングユーティリティ

さまざまな情報の確認

以下のサブコマンドは、ファイルまたはその履歴を問い合わせる際に便利です。

取り出されたバージョンを確認する : what コマンド

SCCS を使用することによって、ファイル履歴中の任意のバージョンを取り出すことができるため、ディレクトリ内にある作業中のコピーが必要なバージョンでないという可能性もあります。what コマンドは、ファイル中の SCCS ID キーワードを検査します。また、バイナリファイルでもキーワードを検査するため、どのバージョンのソースからプログラムがコンパイルされたかを確認できます。

$ what program.c program 
program.c:
      program.c 1.1 88/07/05 SMI; 
program: 
      program.c 1.1 88/07/05 SMI;

この例では、ファイルにはバージョン 1.1 の作業用のコピーが含まれています。

最新バージョンを確認する : sccs get -g

sccs get -g を使用すると、最新のデルタの SID を確認できます。

$ sccs get -g program.c
1.2

この例では、最新のデルタは 1.2 です。このバージョンは、前述の what の例でのバージョン 1.1 よりも新しいため、get を使用して最新のバージョンを取り出します。

ファイルをチェックアウトしたユーザーを確認する : sccs info

どのファイルが編集中であるかを確認するには、以下のように入力します。

$ sccs info

このサブコマンドは、編集中のすべてのファイルと、ファイルをチェックアウトしたユーザー名などの情報を表示します。同様に、以下のコマンドを使用できます。

$ sccs check

このコマンドは、編集されているファイルがある場合に、警告を出力せずにゼロ以外の終了ステータスを返します。このコマンドを makefile で使用して、ソースファイルがチェックアウトされている場合に make(1S) を強制的に停止することができます。

チェックアウトしたすべてのファイルをチェックインする場合は、以下のコマンドを使用できます。

$ sccs delta 'sccs tell -u'

tell は、編集中のファイルの名前だけを 1 行に 1 つずつ表示します。-u オプションを使用すると、tell を実行したユーザーがチェックアウトしたファイルの名前だけを出力します。-u の引数としてユーザー名を指定すると、そのユーザーがチェックアウトしたファイルの名前だけを出力します。

デルタのコメントを表示する : sccs prt

sccs prt は、SID、作成日時、各バージョンをチェックインしたユーザー名、挿入/削除/変更なしの行数、コメントが記録されているバージョンログ (デルタテーブルとも呼びます) のリストを出力します。

$ sccs prt program.c
D 1.2  80/08/29 12:35:31      pers  2 1 00005/00003/00084 
corrected typo in widget(), 
null pointer in n_crunch()

D 1.1  79/02/05 00:19:31      zeno  1 0 00087/00000/00000 
date and time created 80/06/10 00:19:31 by zeno

最新バージョンのコメントだけを表示するには、-y オプションを使用します。

デルタのコメントを追加する : sccs cdc

コメントに大切な情報を記述し忘れたなどの場合に、以下のコマンドを使用して、コメントに情報を追加できます。

sccs cdc -r sid

このコマンドを実行するには、最新のデルタ (または分岐中で最新のデルタ、「分岐」を参照) を指定する必要があります。また、そのデルタをチェックインしたユーザーであるか、履歴ファイルおよび SCCS サブディレクトリの両方に書き込み権を持つ所有ユーザーである必要があります。cdc は、コメントを入力するためのプロンプトを表示し、そこで入力された情報をコメントに追加します。

$ sccs cdc -r1.2 program.c
comments? also taught get_in() to handle control chars

prt を使用して新しいコメントを表示すると、以下のようになります。

$ sccs prt program.c
D 1.2  80/08/29 12:35:31       pers  2 1 00005/00003/00084
also taught get_in() to handle control chars 
*** CHANGED *** 88/08/02 14:54:45 pers
corrected typo in widget(),
null pointer in n_crunch()

D 1.1  79/02/05 00:19:31       zeno  1 0 00087/00000/00000 
date and time created 80/06/10 00:19:31 by zeno 

チェックインしたバージョンを比較する : sccs sccsdiff

チェックインした 2 つのバージョン、たとえば 1.1 と 1.2 の 2 つのデルタを比較するには、以下のコマンドを使用して、両者の違いを確認します。

$ sccs sccsdiff -r1.1 -r1.2 program.c

全履歴を表示する : sccs get -m -p

ファイルの変更内容および変更を行なったデルタをすべて表示するには、-m-p のオプションを使用します。

$ sccs get -m -p program.c
1.2 
1.2 #define L_LEN 256 
1.1
1.1 #include <stdio.h>
1.1
.  .  .  
84

特定のデルタに対応する行を抽出するため、出力を grep(1V) にパイプすることができます。

$ sccs get -m -p program.c | grep '^1.2'

-p だけを使用すると、取り出したバージョンの中身を (ファイルではなく) 標準出力に送ることができます。

レポートを作成する : sccs prs -d

prs サブコマンドと -d dataspec オプションを使用すると、SCCS が管理するファイルに関する情報を取り出し、それをレポートとして表示することができます。dataspec 引数には、履歴ファイルの一部分に対応するデータキーワードのセットを指定します。データキーワードは、以下の書式で指定します。

:X :

表 5-3 にデータキーワードのリストを示しています。引数 dataspec では、データキーワードを任意の回数使用できます。有効な dataspec は、テキストおよびデータキーワードで構成される文字列を二重引用符で囲んだものです。prs は、認識した各キーワードを履歴ファイルの適切な値に置換します。

データキーワードの値の形式は、1 行または複数行のいずれかです。前者の場合は、展開された値は単純な文字列になります。後者の場合は、展開された値に復帰改行が含まれます。

タブ¥t で、復帰改行¥n でそれぞれ指定します。

以下に例を示します。

$ sccs prs -d"Users and/or user IDs for :F: are:¥n:UN:" program.c 
Users and/or user IDs for s.program.c are:
zeno
pers
$ sccs prs -d"Newest delta for :M:: :I:.  Created :D: by :P:." -r program.c 
Newest delta for program.c: 1.3.  Created 88/07/22 by zeno.