RCS

Что такое RCS.

RCS - это Система Управления Исправлениями (revision control system), представляет собой пакет программ, которые отслеживают изменения в текстовых файлах и управляют разделенным доступом в ситуации с рабочими группами. Также они поддерживают исходные тексты модулей и отслеживают изменения в документах.

RCS была написана Walter F. Tichy и Paul Eggert. Последняя версия, которая перенесена под Linux, была RCS 5.7. Также существует полуофициальная версия. Большая часть информации в этом HOWTO взята из руководства по RCS.

RCS включает в себя следующие программы:rcs(1), которая управляет атрибутами архивного файла RCS; ci(1) и co(1), проверяющие старые и измененные архивы RCS; ident(1), которая производит поиск в архивах RCS по ключевому слову; rcsclean(1), программа которая удаляет нерабочие или неизмененные файлы; rcsdiff(1), которая запускает diff(1) для сравнения версий; rcsmerge(1),, которая объединяет результаты работы двух пользователей над файлом в один работающий файл; rlog(1),, которая выводит сообщения из журнала RCS.

Архивы, сделанные RCS, могут быть различного формата, и даже двоичными, если программа diff поддерживает 8-ми битный данные. Также у файла может быть включена строка идентификации для поиска при помощи ident(1). RCS использует утилиты diff(1) и diff<3> для формирования файлов изменений. Архив RCS состоит из начальной версии файла (версия 1.1) и файлов изменений для каждого изменения. Каждый раз файл сравнивается с предыдущей версией программой co(1), редактируется и записывается программой ci(1), номер версии каждый раз увеличивается, например, 1.2, 1.3, 1.4 при внесенных изменениях .

Сами архивы находятся в подкаталоге ./RCS

Для просмотра архивов прочтите руководство к rcsintro(1).

Требования к системе.

RCS требует для работы diff(1) и diff3(3) для создания diff-файлов, отражающих изменения в файлах. У вас должны быть установлены эти утилиты, но, в любом случае, при установке RCS, программа установки проверит их наличие.

Эти утилиты (скомпилированные) можно взять на: ftp://sunsite.unc.edu/pub/Linux/utils/text/diffutils-2.6.bin.ELF.tar.gz или на зеркалах этого сайта. Если вам потребуется скомпилировать исходник diff(1), то он находится на: ftp://prep.ai.mit.edu/pub/gnu/diffutils-2.7.tar.gz или с зеркал этого сайта.

Если вы будете устанавливать скомпилированный diff(1), то понадобятся установленные библиотеки ELF. Для уточнения этого вопроса прочтите ELF-HOWTO.

Компиляция исходников RCS.

Скачайте дистрибутив RCS версии 5.7. Он находится по адресу ftp://sunsite.unc.edu/pub/Linux/devel/vc/rcs-5.7.src.tar.gz или на зеркалах этого сайта. После того, как вы разархивировали все в каталог исходных текстов, вам надо настроить RCS под свою систему. Это можно сделать, при помощи скрипта configure, находящегося в каталоге исходных текстов. Для этого надо его запустить. Он создаст Makefile и соответствующий вашей системе conf.sh. Затем вы можете набрать make install, который создаст программу. В принципе, это лучше сделать, как пользователь root, чтобы разместить все в нужные каталоги.

Создание и поддержка архивов.

Программа rcs(1) создает архивы и изменяет их атрибуты. Все опции rcs(1) описаны в руководстве rcs(1).

Самый простой способ создать архив - это сначала mkdir RCS в текущем каталоге, затем командой rcs -i название_рабочего_файла создать архив. Она создает архив под именем ./RCS/название_рабочего_файла,v и запрашивает описание архива, но не помещает туда сам архив. вы можете включить и выключить изменение архивов командами rcs -L название_рабочего_файла и rcs -U название_рабочего_файла соответственно. Есть и другие опции для управления доступом к архивам, указания формата и нумерации версий, о которых рассказано в руководстве к rcs(1).

ci(1) и co(1).

Команды ci(1) и co(1) используются для проверки старых и измененных файлов, при помощи сравнения их с архивом RCS. Команда ci(1) может быть использована для проверки всех архивов. В самой простой форме эти команды требуют только имя файла: ci название_рабочего_файла и co название_рабочего_файла Команда ci -l название_рабочего_файла проверяет новый файл, с включенной опцией изменения архивов, а co -l название_рабочего_файла выполняется автоматически. Это означает, что команда ci -l проверяет и старые файлы. ci -u название_рабочего_файла выполняет проверку нового и предыдущей версии, при выключенной опции изменения файлов. Во всех случаях пользователю предоставляется журнал изменений.

ci(1)также создает архив RCS, если он не был создан до этого.

Если вы не указываете номер изменения, ci(1) увеличивает номер версии на единицу, по отношению к предыдущему, и записывает измененный файл туда. Если вы сами указываете номер версии, то он не должен быть меньше, чем существующий. ci(1) также может произвести ветвление версии, если вы укажете несуществующую ветвь версии. Прочтите руководство к ci(1) и co(1) для выяснения деталей.

ci(1) и co(1) имеют несколько опций для интерактивного и пакетного режима использования.

Просмотр внесенных изменений.

Программа rlog(1) обеспечивает пользователя информацией об архиве и журналом изменений. Командой rlog work_file_name вы выведете названия версий файла, дату его создания и авторские userids. А также вы можете указать некоторые опции файла относящиеся к просмотру.

Включение информации для RCS в рабочие файлы.

co(1) поддерживает ключевые слова базы данных RCS, которая расширяется при проверке файла. Ключевое слово $Id$ в документе включает в себя имя файла, номер версии, дату проверки, автора, статус проверки и имя того, кто изменял права на внесение поправок в документ. Вместе с ключевым словом, $Log$ выдаст журнал изменений.

Эти ключевые слова могут использоваться, как идентификационный критерий при поиске в архиве RCS. Прочтите руководство к ident(1) для уточнения деталей.

RCS и контроль версий в emacs(1)

Функция контроля версии (Version Control) у emacs(1) является ярким примером использования RCS. Это в особенности относится к Версии 19.34 GNU Emacs, который поставляется с большинством дистрибутивов Linux. Когда вы редактируете файл, при помощи emacs(1), он регистрируется RCS, команда vc-toggle-read-only (по умолчанию C-x C-q ) проверит версию файла, а затем это сделает RCS. Emacs откроет буфер, в котором вы можете написать сообщение в журнал RCS. Для того, чтобы закрыть этот журнал и продолжить процесс проверки, есть команда C-c C-c.

Если на файле стоит опция запрещения редактирования RCS, вы можете ее снять, редактируя его в emacs(1). Вы можете проверить файл при помощи, Version Control командой % в режиме меню буфера.

Для уточнения деталей прочтите руководство к GNU Emacs.