名称


rcsfile - RCS ファイルの書式

解説


RCS ファイルの内容は以下の文法に基づき記述されます。

テキストはフリーフォーマットであり、 文字列中のスペース、バックスペース、 タブ、改行、垂直タブ、改頁、復帰 (まとめて 空白 と呼びます) は意味を持ちません。 例外として、id, num, sym 内では空白があってはならず、 RCS ファイルは改行で終わらなければなりません。

文字列は @ で括られます。文字列が @ 自身を含む場合、2 重化されなければならず、それ以外は任意の バイナリデータを含むことができます。

以下、簡便のためにメタ文法を用います。 ‘|’ (縦棒) は選言を分けます。 ‘{’ と ‘}’ は省略可能な句を括ります。 ‘{’ と ‘}*’ は 0 回以上繰り返される句を括ります。 ‘{’ と ‘}+’ は 1 回以上繰り返される句を括ります。 終端記号は 太字 で、非終端記号は 斜体 で表記します。

rcstext  ::=        admin {delta}* desc {deltatext}*

admin    ::=        head{num};             { branch{num}; }             access  {id}*;             symbols {sym : num}*;             locks   {id : num}*; {strict ;}             { comment{string}; }             { expand{string}; }             { newphrase }*

delta    ::=        num             date    num;             author  id;             state   {id};             branches{num}*;             next    {num};             { newphrase }*

desc     ::=        descstring

deltatext::=        num             log     string             { newphrase }*             text    string

num      ::=        {digit | .}+

digit    ::=        0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9

id       ::=        {num} idchar {idchar | num}*

sym      ::=        {digit}* idchar {idchar | digit}*

idchar   ::=        special を除く任意の可視文字 (visible graphic character)

special  ::=        $ | , | . | : | ; | @

string   ::=        @{任意の文字、ただし @ は 2 重化される}*@

newphrase::=        id word* ;

word     ::=        id | num | string | :

識別子は大文字小文字を区別します。 キーワードは小文字のみです。 キーワードと識別子の集合は重複可能です。 ほとんどの環境では、RCSISO 8859/1 エンコーディングを用います。 このコードでは、可視文字のコードが 041-176 と 240-377 で、 空白文字のコードが 010-015 と 040 です。

date キーワードの後に現れる日時は Y.mm.dd.hh.mm.ss という書式で、それぞれ Y が年を、 mm が月 (01-12) を、 dd が日 (01-31) を、 hh が時 (00-23) を、 mm が分 (00-59) を、 ss が秒 (00-60) を表します。 Y は 1900 年から 1999 年までは年の最後の 2 桁で表し、それ以降は 年のすべての桁で表します。 日付はグレゴリオ暦を用い、時刻は UTC (協定世界時) で表します。

文法中の newphraseRCS ファイル書式の今後の拡張のために予約されています。 すでに使われているキーワードでは newphrase は始まりません。

複数の delta ノードが集まって、木を形成します。 単一の組からなる番号のノード (例えば 2.3, 2.1, 1.3 など) は すべて幹 (trunk) であり、降順で next フィールドを通してリンクされています。 admin ノードの head フィールドは、このシーケンスの先頭 (head; すなわち最高位の組) を示します。 admin ノードの branch ノードは、 ほとんどの RCS 操作が利用するデフォルトの枝 (もしくはリビジョン) を示します。 もしこれが存在しなければ、幹の最高位の枝が用いられます。

2n 個 (n>=2) のフィールドからなる番号を持つ全 delta ノード (例えば 3.1.1.1, 2.1.2.2 など) は、次のようにリンクされます。 すなわち、先頭の 2n-1 個のフィールドの番号が等しい全ノードは、昇順で next フィールドを通してリンクされます。 シーケンス中の delta ノードの番号の先頭 2n-2 個分と等しい番号を持つ delta ノードは、そのシーケンスの分岐点と呼ばれます。 ノードの branches フィールドは、 そのノードが分岐点となっている全シーケンスに対し、 最初のノード番号のリストを保持しています。 このリストは昇順で並べられています。

以下の図は RCS ファイルの構成の例を示しています。

Head | | v / --------- / / / | | / / / / | 2.1 | / / / / | | / / /1.2.1.3 /1.3.1.1 | | /1.2.2.2 /1.2.2.1.1.1 --------- --------- --------- --------- ------------- ^ ^ | ^ ^ | | | | | | | v | | / | --------- / | / | 1.3 / / | / --------- / / ----------- /1.2.1.1 / /1.2.2.1 --------- / --------- ^ | ^ | | | | v | | --------- | | 1.2 / | ---------------------- /--------- / / | | v --------- 1.1 / / / /

Head

\D’l0.000i 0.500i’

\D’l-0.025i 0.100i’

\D’l-0.025i -0.100i’

\D’l0.750i 0.000i’

\D’l0.000i -0.500i’

\D’l-0.750i 0.000i’

\D’l0.000i 0.500i’

2.1

\D’l0.000i 0.500i’

\D’l-0.025i 0.100i’

\D’l-0.025i -0.100i’

1.3

\D’l-0.375i -0.500i’

\D’l0.750i 0.000i’

\D’l-0.375i 0.500i’

\D’~-0.500i 0.000i 0.000i -0.500i’

\D’l0.025i -0.100i’

\D’l0.025i 0.100i’

1.3.1.1

\D’l-0.375i 0.500i’

\D’l0.750i 0.000i’

\D’l-0.375i -0.500i’

\D’l0.000i 0.500i’

\D’l-0.025i 0.100i’

\D’l-0.025i -0.100i’

1.2

\D’l-0.375i -0.500i’

\D’l0.750i 0.000i’

\D’l-0.375i 0.500i’

\D’~-0.500i 0.000i -0.500i 0.000i -0.500i 0.000i 0.000i -0.500i’

\D’l0.025i -0.100i’

\D’l0.025i 0.100i’

1.2.1.1

\D’l-0.375i 0.500i’

\D’l0.750i 0.000i’

\D’l-0.375i -0.500i’

\D’l0.000i -0.500i’

\D’l0.025i -0.100i’

\D’l0.025i 0.100i’

1.2.1.3

\D’l-0.375i 0.500i’

\D’l0.750i 0.000i’

\D’l-0.375i -0.500i’

\D’~0.500i 0.000i 0.000i -0.500i’

\D’l0.025i -0.100i’

\D’l0.025i 0.100i’

1.2.2.1

\D’l-0.375i 0.500i’

\D’l0.750i 0.000i’

\D’l-0.375i -0.500i’

\D’~0.500i 0.000i 0.000i -0.500i 0.000i -0.500i’

\D’l0.025i -0.100i’

\D’l0.025i 0.100i’

1.2.2.1.1.1

\D’l-0.375i 0.500i’

\D’l0.750i 0.000i’

\D’l-0.375i -0.500i’

\D’l0.000i -0.500i’

\D’l0.025i -0.100i’

\D’l0.025i 0.100i’

1.2.2.2

\D’l-0.375i 0.500i’

\D’l0.750i 0.000i’

\D’l-0.375i -0.500i’

\D’l0.000i 0.500i’

\D’l-0.025i 0.100i’

\D’l-0.025i -0.100i’

1.1

\D’l-0.375i -0.500i’

\D’l0.750i 0.000i’

\D’l-0.375i 0.500i’

作者


Author: Walter F. Tichy, Purdue University, West Lafayette, IN, 47907. Manual Page Revision: 1.5.2.1; Release Date: 2001/07/22. Copyright © 1982, 1988, 1989 Walter F. Tichy. Copyright © 1990, 1991, 1992, 1993, 1994, 1995 Paul Eggert.

関連項目


rcsintro(1), ci(1), co(1), ident(1), rcs(1), rcsclean(1), rcsdiff(1), rcsmerge(1), rlog(1) Walter F. Tichy, RCS—A System for Version Control, Software—Practice & Experience 15, 7 (July 1985), 637-654.

openSUSE Logo

コンテンツ