get コマンド

目的

指定されたバージョンのソース・コード制御システム (SCCS) のファイルを作成します。

構文

SCCS ファイルの読み取り専用バージョンを作成する

get [ -g ] [ -m ] [ -n ] [ -p ] [ -s ] [ -c Cutoff ] [ -i List ] [ -r SID ] [ -t ] [ -x List ] [ -w String ] [ -l [ p ] ] [ -L ] File ...

SCCS ファイルの編集可能バージョンを作成する

get [ -e ] [ -k ] [ -b ] [ -s ] [ -c Cutoff ] [ -i List ] [ -r SID ] [ -t ] [ -x List ] [ -l [ p ] ] [ -L ] File ...

説明

get コマンドでは、指定したバージョンのソース・コード制御システム (SCCS) ファイルが読み取られ、指定したフラグに従って ASCII テキスト・ファイルが作成されます。 次に、get コマンドによって各テキスト・ファイルが、オリジナルの SCCS ファイルと同じ名前で s. プレフィックス (g ファイル) が付いていないファイルに書き込まれます。

フラグとファイルは任意の順序で指定できます。また、すべてのフラグは、指定したすべてのファイルに適用されます。 File パラメーターのディレクトリーを指定すると、get コマンドによって、要求したアクションが、ディレクトリー内の s. プレフィックスで始まるすべてのファイルに対して実行されます。 File パラメーターの値として - (負符号) を指定すると、get コマンドによって標準入力が読み取られ、各行が SCCS ファイル名として解釈されます。 get コマンドでは、ファイル終わり文字が読み取られるまで入力が読み取られます。

実効ユーザーが SCCS ファイルが入っているディレクトリー内で書き込み許可を持っていても、実ユーザーが書き込み許可を持っていなければ、-e フラグを使うときに 1 つのファイルしか命名できません。

注: get コマンドでは、 w フラグを使って指定するファイル名と文字列のデータについて、 マルチバイト文字セット (MBCS) がサポートされます。

読み取り専用ファイル・バージョンの作成

get コマンドでは、読み取り専用バージョンと編集可能バージョンのファイルが作成されます。 アプリケーションでファイル内容の変更が必要でない場合は、読み取り専用バージョンのファイルを使用してください。 読み取り専用バージョンのソース・コード・ファイルはコンパイルできます。 また、読み取り専用バージョンからテキスト・ファイルを表示したり印刷したりすることができます。

識別キーワードを使用するときには、編集可能バージョンと読み取り専用バージョンの違いが重要です。 識別キーワード とは、get コマンドによってファイルが読み取り専用として検索されるときに、一種のテキスト値に展開される記号です。 編集可能バージョンでは、キーワードは展開されません。 識別キーワードは SCCS ファイル内のどこにでも入れることができます。 識別キーワードについての詳細は、prs コマンドを参照してください。

SCCS ファイル

s. プレフィックス (s ファイル) のほかに、 get コマンドでは複数の補助ファイル、 つまり g ファイルl ファイルp ファイルz ファイルが作成されます。 これらのファイルはタグで識別されます。このタグとは、ハイフンの前の文字のことです。 get プログラムでは、 SCCS ファイル名の先頭の s. が正しいタグに置き換えられて、 補助ファイルが命名されます。ただし、g ファイルの場合は、 s. プレフィックスが除去されて命名されます。 したがって、ファイル名が s.sample であれば、 補助ファイル名は samplel.samplep.samplez.sample となります。

これらのファイルの用途は次のとおりです。

項目 説明
s-file オリジナル・ファイルのテキストと、ファイルに対して行われた変更内容 (デルタ) が定義されています。 また、ファイル内容を変更できるユーザー、変更したユーザー、変更時期、変更内容に関する情報も入っています。 このファイルは読み取り専用なので、ユーザーが直接編集することはできません。 ただし、ユーザーが編集できる g ファイルを作成するときに SCCS コマンドに必要となる情報が入っています。
g-file -r フラグで指定した SCCS ファイル・バージョン (または、デフォルトでは最新のトランク・バージョン) のテキストが入っている ASCII テキスト・ファイルです。 このファイルはユーザーが直接編集できます。 すべての変更を行った後でファイルの新しいデルタを作成する場合は、そのファイルに対して delta コマンドを実行できます。 get コマンドでは、現行ディレクトリー内に g ファイルが作成されます。

-g フラグまたは -p フラグを指定しなければ、get コマンドの実行時には必ず g ファイルが作成されます。 ファイルを所有するのは実ユーザーです (実効ユーザーではありません)。 -k フラグまたは -e フラグを指定しなければ、ファイルは読み取り専用となります。 -k フラグまたは -e フラグを指定すると、オーナーは g ファイルの書き込み許可を持つことになります。 g ファイルを作成するには、現行ディレクトリー内への書き込み許可が必要です。

l-file -l フラグを指定すると、get コマンドによって l ファイルが作成されます。 l ファイルは読み取り専用ファイルです。このファイルには、g ファイルの生成時に適用されたデルタを示すテーブルが入っています。 l ファイルを作成するには、現行ディレクトリー内の書き込み許可が必要です。 l ファイル内の行は次のような書式になっています。
  • デルタが適用されればブランク文字、適用されなければアスタリスク。
  • デルタが適用された場合、または適用されずに無視された場合は、ブランク文字。 デルタが適用されず、かつ無視されなかった場合は、アスタリスクが表示されます。
  • デルタが適用された特別な理由、または適用されなかった特別な理由を示す次のコード。
    Blankspace
    通常どおり組み込まれたか、または除外された
    I
    -i フラグを使って組み込まれた
    X
    -x フラグを使って除外された
    C
    -c フラグを使ってカットオフされた
  • SID
  • ファイルの作成日時
  • デルタを作成したユーザーのログイン名

コメントと変更要求 (MR) データは、水平タブ文字の 1 字分字下げされて次行に続きます。 ブランク行で各エントリーを終了します。 例えば、-c フラグを使ったデルタのカットオフの場合、l ファイル内のエントリーは次のようになります。


**C 1.3 85/03/13 12:44:16 pat

また、最初のデルタに関するエントリーは次のようになります。


1.1 85/02/27 15:42:20 pat
date and time created 85/02/27 15:42:20 by pat
p-file -e フラグまたは -k フラグを指定すると、get コマンドによって p ファイルが作成されます。 p ファイルでは、get -e コマンドからの結果情報が delta コマンドに渡されます。 また、それ以降は delta コマンドが実行されるか、SCCS ファイル内で結合編集キー文字 (j) を設定するまで、p ファイルは同じ SID について get -e コマンドが実行されないようにします。j キー文字を使うと、同じ SID に対して複数の get コマンドを実行できます。 p ファイルは、SCCS ファイル が入っているディレクトリー内で作成します。 SCCS ディレクトリー内で p ファイルを作成するには、そのディレクトリーの書き込み許可が必要です。 p ファイルの許可コードは、コードのオーナー以外の全ユーザーに対しては読み取り専用で、実効ユーザーが所有します。 p ファイルをオーナーが直接編集することはできません。 p ファイルには次の情報が入っています。
  • 現行 SID
  • 新たに作成されるデルタの SID
  • ユーザー名
  • get コマンドの日時
  • -i フラグ (ただし、存在する場合のみ)
  • -x フラグ (ただし、存在する場合のみ)

p ファイルには、ファイルについて保留中の各デルタに関する優先情報を持つエントリーが入っています。 2 つの行が同一の新しいデルタ SID に入ることはありません。

z-file z ファイルは、同時更新に対するロック機構です。 z ファイルには、このファイルを作成した get コマンドの 2 進プロセス番号が入っています。 このファイルは、SCCS ファイルが入っているディレクトリー内で作成し、get コマンドを実行中にだけ存在します。

get コマンドを使用すると、アクセス中の SID と SCCS ファイルから作成された行数が表示されます。 -e フラグを指定すると、SID がアクセスされてから行数が作成されるまでに実行されたデルタの SID が表示されます。 複数ファイル、ディレクトリー、標準入力のいずれかを指定すると、get コマンドによって各ファイルの処理前にファイル名が表示されます。 -i フラグを指定すると、get コマンドによって、ワード Included の下に組み込まれているデルタが表示されます。-x フラグを指定すると、get コマンドによって、ワード Excluded の下に排他デルタが表示されます。

次の表に、get コマンドによって取り出されるファイルの SID と保留中の SID の両方がどのように判別されるかを示します。 「指定された SID」の欄には、-r フラグを使って SID を指定するさまざまな方法を示します。 最初の欄にはまた、get -e コマンドと一緒に -b フラグを使用するかどうかを含め、 考えられるさまざまな条件を示します。「取り出された SID」の欄には、g ファイルを構成するファイルの SID を示してあります。 「作成されるデルタの SID」の欄には、delta コマンドを適用したときに作成されるバージョンの SID を示してあります。

SID の判別
指定された SID 検索された SID 作成されるデルタの SID
なし 1
-b を使用したか?
no
その他の条件
R のデフォルトは mR 2
mR.mL mR.(mL+1)
なし 1
-b を使用したか?
はい
その他の条件
R のデフォルトは mR
mR.mL mR.mL.(mB+1).1
R
-b を使用したか?
no
その他の条件
R>mR
mR.mL R.1 3
R
-b を使用したか?
no
その他の条件
R=mR
mR.mL mR.(mL+1)
R
-b を使用したか?
はい
その他の条件
R>mR
mR.mL mR.mL.(mB+1).1
R
-b を使用したか?
はい
その他の条件
R=mR
mR.mL mR.mL.(mB+1).1
R
-b を使用したか?
N/A
その他の条件
R<mR で、R は存在しない
hR.mL 4 hR.mL.(mB+1) .1
R
-b を使用したか?
N/A
その他の条件
リリース内のトランク後続オペレーション > R で R が存在する
R.mL R.mL.(mB+1).1
R.L.
-b を使用したか?
no
その他の条件
トランク後続オペレーションなし
R.L. R.(L+1)
R.L.
-b を使用したか?
はい
その他の条件
トランク後続オペレーションなし
R.L. R.L(mB+1).1
R.L.
-b を使用したか?
N/A
その他の条件
リリース内のトランク後続オペレーション > R または = R
R.L. R.L.(mB+1).1
R.L.B.
-b を使用したか?
no
その他の条件
分岐後続オペレーションなし
R.L.B.mS R.L.B.(mS+1)
R.L.B.
-b を使用したか?
はい
その他の条件
分岐後続オペレーションなし
R.L.B.mS R.L.(mB+1).1
R.L.B.S.
-b を使用したか?
no
その他の条件
分岐後続オペレーションなし
R.L.B.S. R.L.B.(S+1)
R.L.B.S.
-b を使用したか?
はい
その他の条件
分岐後続オペレーションなし
R.L.B.S. R.L.(mB+1).1
R.L.B.S.
-b を使用したか?
N/A
その他の条件
分岐後続オペレーション
R.L.B.S. R.L.(mB+1).1
注: SID 判別テーブルで、文字 R、L、B、 および S はそれぞれ SID のリリース、レベル、分岐、シーケンス・コンポーネントです。 文字 m は最大を表します。

1 ファイル内に -d (デフォルト SID) フラグが存在しない場合にのみ適用されます (admin コマンドを参照してください)。

2 mR は既存の最新のリリースを示します。

3 新しいリリース内で最初のデルタが強制的に作成されます。

4 hR は、指定された、存在しないリリース R よりも前の既存の最新リリースです。

識別キーワード

識別情報は、発生時に識別キーワードがその値に置き換えられることによって、SCCS ファイルから取り出されたテキストに挿入されます。 SCCS ファイルに格納されたテキストには、次のキーワードを使用できます。

キーワード
%M% モジュール名: ファイル内の m フラグの値、またはフラグが存在しない場合は、s. が除去された SCCS ファイルの名前。
%I% 取り出されたテキストの SCCS 識別コード (SID) (%R%.%L% または %R%.%L%.%B%.%S%)
%R% リリース
%L% レベル
%B% 分岐
%S% シーケンス
%D% YY/MM/DD フォーマットの現在の日付
%H% MM/DD/YY フォーマットの現在の日付
%T% HH:MM:SS フォーマットの現在の時刻
%E% 最新の適用デルタが作成された YY/MM/DD フォーマットの日付
%G% 最新の適用デルタが作成された MM/DD/YY フォーマットの日付
01:51:20 最新の適用デルタが作成された HH:MM:SS フォーマットの時刻
%Y% モジュール・タイプ: SCCS ファイル内の t フラグの値
%F% SCCS ファイル名
%P% SCCS の絶対パス名
%Q% ファイル内の -q フラグの値
%C% 現在行の番号。このキーワードは、「this should not have happened」というエラー・メッセージのような、プログラムによって出力されるメッセージを識別するためのものです。%C% は、すべての行にシーケンス番号を付けるためのものではありません。
%Z% what による認識が可能な 4 文字の文字列、@(#)
%W% what ストリングを作成するための省略表現: %W% = %Z%%M%<tab>%I%
%A% what 文字列を作成するための別の省略表現: %A% = %Z%%Y% %M% %I%%Z%

フラグ

項目 説明
-b 作成されるデルタに新しい分岐内の SID を持たせるように指定します。 新しい SID には、SID 判別表に示された規則に従って番号が付けられます。-b フラグは、-e フラグとのみ併用できます。 このフラグが必要なのは、リーフ・デルタ (後続オペレーションがないデルタ) から分岐するときだけです。 リーフ以外のデルタでデルタを作成しようとすると、b ヘッダー・フラグが設定されていなくても、自動的に分岐することになります。 SCCS ファイル内で b ヘッダー・フラグを指定しなければ、このファイルは分岐できないので、-b フラグは get コマンドによって無視されます。
-c Cutoff カットオフの日時を YY[MM[DD[HH[MM[SS]]]]] のフォーマットで指定します。 get コマンドでは、g ファイル内で指定されたカットオフ後に作成された SCCS ファイルには、デルタが組み込まれません。 Cutoff 変数に指定されていない項目のデフォルト値は、許容最大値になります。 したがって、年 (YY) だけを使ってカットオフ日時を指定すると、その年の最後の月、日、時間、分、秒を指定したことになります。 Cutoff 変数の日時の項目を 2 桁ずつ区切るには、数値以外の文字を使用します。これにより、次のようにさまざまな方法で日時を指定できます。

-c85/9/2,9:00:00
-c"85/9/2 9:00:00"
"-c85/9/2 9:00:00"
-e 作成中の g ファイルが、get コマンドを適用するユーザーによって編集されることを示します。 変更内容は、後で delta コマンドを使って記録します。 get -e コマンドは、delta コマンドを実行するまでは、 ほかのユーザーがさらに get -e コマンドを実行して同じ SID の第 2 の g ファイルを編集できないように、p ファイルを作成します。 このファイルのオーナーは、admin コマンドと -fj フラグを使って、同じ SID で共同編集できるようにすることで、この制限を無効にできます。許可を持つほかのユーザーは、-e フラグを付けずに get コマンドを使うことによって、読み取り専用コピーを作成できます。 get -e コマンドでは、SCCS ファイル内の上限、下限、許可ユーザーのリストで指定された SCCS ファイルの保護が強制的に実行されます。 admin コマンドを参照してください。
注: get -e コマンドで作成した g ファイル を誤って破壊してしまった場合は、get -k コマンドでそのファイルを再作成することができます。
-g g ファイルが実際に作成されるのを抑止します。 -g フラグは主に、l ファイルを作成するときや、特定の SID の存在を検証したりするときに使用します。 このフラグを -e フラグと併用しないでください。
-i List g ファイルの作成時に組み込まれるデルタのリストを指定します。 SID リストのフォーマットは、個々の SID をコンマで区切ったものと、2 つの SID をハイフンで区切って示される SID 範囲との組み合わせです。 次の 2 つのコマンド・ラインはいずれも同じ SID を指定します。
get -e -i1.4,1.5,1.6 s.file
get -e -i1.4-1.6 s.file

前述の表の「指定された SID」の欄の書式を使って、デルタの SCCS 識別コードを指定できます。 get コマンドは、部分的な SID が「取り出された SID」欄に記載されているとおりに解釈します。

-k g ファイル内の識別キーワードがその値に置き換えられるのを抑止します。 -k フラグは -e フラグによって暗黙指定されます。 get -e コマンドを使って作成した g ファイルを誤って破壊してしまった場合は、-e フラグの代わりに -k フラグを付けて get コマンドを再実行すると、 g ファイルを作成し直すことができます。
-l[ p ] デルタの要約を l ファイルに書き込みます。 -lp を指定すると、デルタの要約は標準出力に書き出され、get コマンドによって l ファイルは作成されません。 このフラグは、現在使用中の g ファイルを作成するときにどのデルタを使ったかを判別するときに使用します。 l ファイルのフォーマットについては、sccsfile ファイルを参照してください。また、-L フラグも参照してください。
-L デルタの要約を標準出力に書き出します。 -L フラグの指定は、-lp フラグを使用するのと同じです。
-m g ファイルの各テキスト行の前に、その行を SCCS ファイルに挿入したデルタの SID を書き込みます。 フォーマットは次のとおりです。

SID tab line of text

-n g ファイル内の各テキスト行の前に %M% キーワードの値を書き込みます。 書式は、%M% の値の後に水平タブが付き、その後にテキスト行が続きます。 -m フラグと -n フラグの両方を使用すると、書式は次のようになります。

%M% value tab SID tab line of text

-p SCCS ファイルから作成されたテキストを標準出力に書き出しますが、g ファイルを作成しません。 -s フラグと -p フラグを共に使用しなければ、通常は標準出力に送られるすべての情報出力が、標準エラーに送られます。 この場合、通常は標準出力に送られる出力はどこにも表示されません。
-r SID 作成される SCCS ファイル・バージョンの SCCS 識別文字列 (SID) を指定します。 SID 判別表には、作成されるファイルのバージョンと、指定された SID の機能として保留中のデルタの SID を示してあります。
-s 通常は標準出力に書き込まれるすべての出力を抑止します。 エラー・メッセージ (標準エラー出力に書き込まれる) は、影響を受けません。
-t 指定されたリリース、または指定されたリリースとレベルで最も新しく作成されたデルタにアクセスします。
-w String 編集用でない g ファイル内の %W% キーワードを String 値で置き換えます。
-x List g ファイルの作成時にデルタの指定されたリストを除外します。 SID リストの形式については、 -i フラグを参照してください。

終了状況

このコマンドは次の終了値を戻します。

項目 説明
0 正常終了。
>0 エラーが発生しました。

次の説明と例は、読み取り専用バージョンのファイルと編集可能バージョンのファイルとの違いを示しています。

  1. ファイル内の現在の日付と SID を印刷するには、 ファイルに次の記号を入れます。
    
    %H% %I%
    %H% は現在の日付を表す記号で、%I% は SID を表す記号です。get コマンドでは、ファイルを編集可能バージョンとして取り出すと、記号をファイル内に残して、テキスト値には置き換えません。
  2. 次の get コマンドの例では、 ファイルのバージョンを指定しないので、最新の SID を持つバージョンが作成されます。
    
    $ ls
    s.test.c
    $ get s.test.c
    3.5
    59 lines
    $ ls
    s.test.c test.c
  3. 次の 2 つの例では、-r フラグを使って、 取得されるバージョンを指定します。
    
    $ get -r1.3 s.test.c
    1.3
    67 lines
     
    $ get -r1.3.1.4 s.test.c
    1.3.1.4
    50 lines
  4. SID のリリース番号のみを指定すると、 get コマンドによって、 そのリリース番号の範囲内で最新のレベルのファイルが検出されます。
    
    $ get -r2 s.test.c
    2.7
    21 lines
  5. 指定した SID が既存の最高 SID より大きい場合は、 get コマンドによって、既存の最新 SID が取得されます。指定した SID が既存の最低 SID より小さい場合は、SCCS によってエラー・メッセージが書き込まれます。 次の例では、リリース 7 が既存の最新リリースです。
    $ get -r9 s.test.c
    7.6
    400 lines
  6. -t フラグによって、 指定したリリースまたはレベル内で最上位のバージョンが取得されます。最上位のバージョンとは、位置に関係なく最も新しく作成されたデルタのことです。 次の例では、リリース 3 内で既存の最上位デルタは 3.5 で、最も新しく作成されたデルタは 3.2.1.5 です。
    $ get -t -r3 s.test.c
    3.2.1.5
    46 lines
  7. これまでの例では、 get コマンドを使って読み取り専用ファイルを取得しました。編集して新しいデルタの作成に使えるファイルのコピーを作成するには、get コマンドで -e フラグを使用します。 get -e コマンドの効果を取り消して、デルタを作成する前にファイルに対して行った変更内容を廃棄するには、unget を使用します。次の例は、-e フラグの使用方法を示します。
    $ ls
    s.test.c
    $ get -e s.test.c
    1.3
    new delta 1.4
    67 lines
    $ ls
    p.test.c s.test.c test.c
    作業ファイルは test.c です。 このファイルを編集し、その変更内容を delta コマンドを用いて 保存すると、SCCS は SID が 1.4 の新規デルタを作成します。 ファイル p.test.c は、 ファイル・バージョンをトラックするために SCCS が使用する一時ファイルです。

    前の例では、-r フラグを使って特定のバージョンを取得しました。 リリース 1 が既存の最新リリースであり、デルタ 1.3 が既に存在し、リリース内の最上位デルタであると想定すると、次の 3 つの get コマンドではいずれも同じ処理が実行されます。

    $ get -e s.test.c
    $ get -e -r1 s.test.c
    $ get -e -r1.3 s.test.c
  8. 新しい (値が最大の) リリース番号を使い始めるには、 -r フラグを使ってファイルを取得し、 既存の最新リリース番号より大きいリリース番号を指定します。次の例では、リリース 2 がまだ存在していません。
    
    $ get -e -r2 s.test.c
    1.3
    new delta 2.1
    67 lines
    delta コマンドによって SCCS ファイルに変更内容が格納される場合、get コマンドによって、作成される新しいデルタのバージョンが示されることに注目してください。
  9. 分岐デルタを作成するには、-r フラグを使って、 分岐を作成するリリースとレベルを指定します。次の例では、デルタ 1.31.4 が既に存在しています。
    $ get -e -r1.3 s.test.c
    1.3
    new delta 1.3.1.1
    67 lines
    これと同じ方法を使って、分岐上でデルタを作成します。

    ファイルを編集するには、get -e コマンドを使ってファイル・バージョンを取得し、delta コマンドを使って変更内容を保管します。 複数の異なる編集可能バージョンの SCCS ファイルを存在させることができますが、その場合は各バージョンが異なるディレクトリー内になければなりません。 delta コマンドを使用せずに (get コマンドを使って) 同じ編集可能ファイル・バージョンを同じディレクトリーに複数入れようとすると、SCCS によってエラー・メッセージが書き出されます。

    同じ編集可能ファイル・バージョンを複数回取得するには、admin コマンドを使って SCCS ファイル内に j ヘッダー・フラグを設定します。 次に、-f フラグを使って j オプションを設定します。 これにより、各 get コマンドごとに別々のファイルを作成して、異なるディレクトリーから同じ SID を複数回取得できます。 各ファイルの起点は 1 つの SID ですが、SCCS によってそれぞれに固有の新しい SID が提供されます。

  10. 次の例では、 pwd コマンドによって現行ディレクトリーが表示されます。次に、admin コマンドを使って j オプションが設定されます。
    注: この例でコマンドを実行するためには、 両方のディレクトリーへの書き込みアクセス権が必要です。
    $ pwd
    /home/marty/sccs
    $ admin -fj s.test.c
  11. 次に get コマンドを使って、 ファイルの最新バージョンを取り出します。
    注: この例でコマンドを実行するためには、 両方のディレクトリーへの書き込みアクセス権が必要です。
    $ get -e s.test.c
    1.1
    new delta 1.2
    5 lines
  12. /home/new ディレクトリーに移動して、 再び get コマンドを実行します。
    注: この例でコマンドを実行するためには、 両方のディレクトリーへの書き込みアクセス権が必要です。
    
    $ cd /home/new
    $ get -e /home/marty/sccs/s.test.c
    1.2
    new delta 1.1.1.1
    5 lines
    SCCS によって、1 つのオリジナル・ファイル・バージョン 1.1 から、 2 つのデルタ、1.2 と、 1.1.1.1 が作成されることに注目してください。p.test.c ファイルを確認してください。このファイルは、現在使用中の各バージョンごとに個別のエントリーを表示します。 delta コマンドまたは unget コマンドを使って両方のファイル・バージョンを処理するまで、p.test.c ファイルはそのままディレクトリー内に残ります。

ファイル

項目 説明
/usr/bin/get get コマンドが入っています。