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 ::= desc string
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 | :
識別子は大文字小文字を区別します。
キーワードは小文字のみです。
キーワードと識別子の集合は重複可能です。
ほとんどの環境では、RCS
は ISO 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 (協定世界時)
で表します。
文法中の
newphrase は RCS
ファイル書式の今後の拡張のために予約されています。
すでに使われているキーワードでは
newphrase
は始まりません。
複数の
delta
ノードが集まって、木を形成します。
単一の組からなる番号のノード
(例えば 2.3, 2.1, 1.3 など) は
すべて幹 (trunk)
であり、降順で
next
フィールドを通してリンクされています。
admin ノードの
head
フィールドは、このシーケンスの先頭
(head;
すなわち最高位の組)
を示します。 admin
ノードの
branch
ノードは、
ほとんどの RCS
操作が利用するデフォルトの枝
(もしくはリビジョン)
を示します。
もしこれが存在しなければ、幹の最高位の枝が用いられます。
2
n 個 (
n≥2)
のフィールドからなる番号を持つ全
delta ノード (例えば 3.1.1.1,
2.1.2.2 など)
は、次のようにリンクされます。
すなわち、先頭の 2
n-1
個のフィールドの番号が等しい全ノードは、昇順で
next
フィールドを通してリンクされます。
シーケンス中の delta
ノードの番号の先頭
2
n-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 /
\ /
\ /
\ /
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.