18.6. Использование CVS для создания однопользовательских локальных репозитариев

Проблема
Вы бы предпочли создать свой личный, локальный репозитарий на базе CVS, по тому что вы собираетесь использовать CVS в крупном проекте и хотите привык нуть к этой системе. А может быть, ваш личный репозитарий становится слиш ком сложным, и вы хотите использовать дополнительные возможности CVS,
включая поддержку более сложной структуры каталогов и возможность одновре менного извлечения нескольких файлов или целых каталогов.
Решение
CVS легко масштабируется от хранения персональных данных до больших про ектов. Процесс установки прост. Пакеты (как RPM, так и .deb) называются «cvs»;
если вы предпочитаете собрать программу по исходным текстам, загрузите их
с сайта https://www.cvshome.org/.
После установки CVS создайте свой личный репозитарий следующими коман дами:
$ mkdir -/cvsroot
$ chmod -R 700 -/cvsroot
$ cvs -d -/cvsroot init
Теперь выберите каталог с файлами, которые должны храниться в репозита рий. Перейдите в этот каталог и импортируйте его в репозитарий:
$ cd /scripts
$ cvs -d -/cvsroot import scripts jenns_configs versionl
N scripts/useradd.txt
N scn'pts/postfix_ube.txt
N scripts/1 ogparse.pl
No conflicts created by this import
В процессе импорта запускается текстовый редактор по умолчанию со следу ющим текстом:
CVS:
CVS: Enter log. Lines beginning with 'CVS:' are removed automatically
CVS:
CVS:
Введите описание проекта. Описание должно быть достаточно подробным, что бы даже через полгода вы вспомнили, о чем идет речь.
Чтобы извлечь файл для редактирования, необходимо сначала создать рабо чий каталог, находящийся за пределами каталога с репозитарием CVS. Перейди те в рабочий каталог и извлеките файл:
$ mkdir -/sandbox
$ cd -/sandbox
$ cvs -d -/cvsroot checkout scripts/postfix_ube.txt
cvs checkout: Updating scripts
U scripts/postfixube.txt
При извлечении файлов из репозитария CVS в рабочем каталоге создается ло кальный рабочий каталог, в котором выполняется вся непосредственная работа
(так называемая «песочница»). При извлечении файлов из CVS в «песочнице»
создается набор административных файлов CVS. Всегда работайте в «песочни це»; никогда не входите в репозитарий CVS для непосредственного редактирова ния файлов. Имя «песочницы» выбирается произвольно.
В нашем примере извлеченный файл находится в каталоге scripts, который
и является «песочницей». Перейдите в этот каталог, чтобы отредактировать
файл:
$ cd scripts
$ vim postfix_ube.txt
Завершив редактирование файла, сохраните его обычным способом и верните
в репозитарий CVS подкомандой commit:
$ cvs commit
cvs commit: Examining .
/home/jenn/cvsroot/scripts/postfix_ube.txt.v <

•- postfix_ube.txt
new revision: 1.2; previous revision: 1.1
Как и ранее, при этом запускается редактор по умолчанию, в котором вводит ся запись журнала с описанием изменений.
Если вы находитесь в «песочнице» (-/sandbox/scripts в нашем примере), при
выполнении операций извлечения и занесения файлов имя репозитария можно
не указывать.
Комментарии
Синтаксис команд CVS:
cvs [глобальныепараметрь!] команда \_ключи_коиандь1\ \_аргуненты_командь1\
Не жалейте времени на ввод записей журнала — вы еще не раз похвалите себя
за это во время работы над проектом CVS.
Имя корневого каталога CVS выбирается произвольно.
Аргументы jenns_config и version_l определяют метку поставщика и номер вер сии соответственно. Возможно, вам эти аргументы не понадобятся, но они нужны
для нормальной работы CVS. Метка поставщика обычно указывает, от кого были
получены исходные файлы, а второй аргумент задает начальный номер версии
проекта.
Один каталог со всеми файлами и подкаталогами называется проектом. Каждый
проект должен храниться в отдельном каталоге, даже если он состоит из одного файла.
Из репозитария можно извлекать отдельные файлы, группы файлов и целые
каталоги:
$ cvs checkout scripts/postfixjjbe.txt
$ cvs checkout scripts/postfix_ube.txt scripts/logparse.pl
$ cvs checkout scripts
В отличие от RCS при извлечении файлов в CVS не устанавливается блокировка,
предотвращающая одновременный доступ к ним со стороны других пользователей.
См. также
Локальная документация (/usr/share/doc/cvs/html-info/cvs_l.html); домашняя стра ница CVS (https://www.cvshome.org/).