НАЗВАНИЕ
rcsfile - формат архивного файла в Системе Отслеживания Версий RCS .
ОПИСАНИЕ
Текст, помещенный в архив может иметь свободный формат, но сам архивный файл обязан заканчиваться символом новой строки. Разделители -- символы пробела, забоя, табуляции, новой строки, вертикальной табуляции, смены страницы, и возврата каретки -- имеют особое значение только в специальных строках и не могут появляться внутри следующих элементов: id, num и sym.
Специальные строки ограничены с обеих сторон символами @. Если архивируемая или специальная строка сама содержит @, то этот символ удваивается. Специальная строка может содержать любые символы.
Мета-синтаксис формул, использованный ниже, придерживается следующих соглашений: Символ `|' разделяет два элемента, из которых нужно выбрать один. Символы `{' и `}' ограничивают необязательный элемент. Символы `{' и `}*' ограничивают элемент, который может быть повторен ноль или более раз. Символ `{' and '}+' ограничивают элемент, который должен быть повторен один или более раз.
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
special ::= $ | , | . | : | ; | @
string ::= @{любой символ, но @ удваиваются}*@
newphrase ::= id word* ;
word ::= id | num | string | :
Для идентификаторов имеет значение, прописная буква или строчная. Все ключевые слова набраны в нижнем регистре. Множества идентификаторов и ключевых слов могут пересекаться. Для большинства операционных систем в RCS используется стандарт ISO 8859/1 , где печатаемыми символами считаются коды 041-176 и 240-377 в восьмеричной записи, а пробелами -- 010-015 и 040 (что согласуется с КОИ-8 и кодировками IBM для OS2 и MS-Windows [code page 2041] и Mackintosh для славянских языков, но стандартная и альтернативная [code page 866] кодировки для MS-DOS приводят к двоичным файлам).
Даты после ключевого слова date имеют вид Y.mm.dd.hh.mm.ss, где Y -- год, mm -- месяц (01-12), dd день -- (01-31), hh -- час (00-23), mm -- минута (00-59), и ss секунда (00-60). Для обозначения дат с 1900 по 1999 Y представляет собой две последние цифры года; следующие года будут обозначаться четырьмя цифрами. Во внутреннем формате файла используются Григорианский Календарь и Всемирное Время.
Конструкция newphrase зарезервирована для дальнейшего расширения формата системы RCS. Гарантируется, что newphrase не будет начинаться с используемых в настоящее время ключевых слов.
Вершины, соответствующие delta образуют дерево. Вершины с номерами из двух чисел (напр., 2.3, 2.1, 1.3, и т.п.) образуют главную ветвь, и заданы обратными приращениями текста в убывающем порядке версий, начиная с последней версии главной ветви, записанной в архив целиком. Поле head в блоке admin указывает на вершину этой цепочки, т.е. на последнюю в лексикографическом смысле пару. Поле branch в блоке admin указывает на ветвь (или версию) используемую по умолчанию. Если это поле пусто, то используется последняя версия на главной ветви (старшая ветвь, выходящая из последней версии).
Вершины delta, чьи номера заданы 2n числами (n>=2) (напр., 3.1.1.1, 2.1.2.2, и т.п.) связаны следующим образом. Вершины с одинаковыми 2n-1 первыми номерами, упорядочены по последнему полю в возрастающем порядке и заданы прямыми приращениями, начиная с основания побочной ветви -- точке ветвления, заданной 2n-2 числами, общими для побочной ветви. Вершина соответствующая точке ветвления содержит упорядоченный по возрастанию список начальных вершин всех побочных ветвей, выходящих из нее.
Следующая диаграмма демонстрирует организацию информации в архиве.