2. Первоначальная настройка

Внимание: Наверное, лучше сначала выполнить эту процедуру с пустым тестовым хранилищем, чтобы понять все последствия ваших действий. Как обычно в таких случаях, у вас должны иметься свежие читаемые резервные копии!

2.1. Инициализация хранилища

Первым делом при настройке нового хранилища необходимо его инициализировать, для чего выдать CVS такую команду:

% cvs -d path-to-repository init

Результатом ее выполнения будет созданный CVS служебный каталог CVSROOT, в котором выполняется вся настройка.

2.2. Группа пользователей хранилища

Теперь мы создадим группу, которая будет владеть хранилищем. В этой группе должны присутствовать все коммиттеры, для того, чтобы они могли писать в хранилище. Для этой группы мы примем стандартное для FreeBSD название ncvs.

# pw groupadd ncvs

Затем вы должны при помощи команды chown(8) сменить владельца и группу для только что добавленного каталога:

# chown -R :ncvs path-to-your-repository

Это нужно для того, чтобы никто не мог записывать в хранилище, не являясь членом группы.

2.3. Получение исходных текстов

Теперь вам нужно получить каталог CVSROOT из хранилища FreeBSD. Проще всего это делается извлечением с анонимного зеркала CVS FreeBSD. Обратитесь к соответствующей главе Руководства для получения дополнительной информации. Мы будем полагать, что исходные тексты хранятся в подкаталоге CVSROOT-freebsd текущего каталога.

2.4. Копирование скриптов FreeBSD

Теперь мы скопируем исходные тексты FreeBSD из CVSROOT в наше хранилище. Если вы знакомы с CVS, то для вас может иметь смысл попытаться импортировать скрипты, чтобы облегчить синхронизацию с последующими версиями. Однако при этом оказывается, что CVS имеет в этой области недостаток: при импортировании исходных текстов в каталог CVSROOT она не будет обновлять необходимые административные файлы. Чтобы в этом убедиться, вам нужно проверить каждый файл после импортирования, при этом смысл cvs import теряется. Поэтому рекомендуемым методом является простое копирование скриптов.

Не имеет значения, как вы относитесь к предыдущему параграфу—результат один и тот же. Просто поместите ваш CVSROOT и скопируйте файлы FreeBSD поверх ваших локальных (неизмененных) копий:

% cvs -d path-to-your-repository checkout CVSROOT
% cd CVSROOT
% cp ../CVSROOT-freebsd/* .
% cvs add *

Заметим, что вы, скорее всего, получите несколько предупреждений о том, что некоторые каталоги не были скопированы; это нормально, вам они не нужны.

2.5. Скрипты

Теперь у вас есть рабочий каталог и точная копия скриптов, которые используются в проекте FreeBSD для работы с хранилищем. Далее следует краткое описание назначения каждого файла.

2.6. Настройка скриптов

Следующим шагом является настройка скриптов так, чтобы они работали в ваших условиях. Вы должны просмотреть все файлы в каталоге и выполнить ваши настройки. В частности, вы может потребоваться отредактировать следующие файлы:

  1. Если вы не хотите использовать специфичные для FreeBSD возможности скриптов, то вы можете без последствий удалить файл access:

    % cvs rm -f access
    
  2. Отредактируйте avail так, чтобы он содержал различные каталоги хранилища, доступом к которым вы хотите управлять. Обязательно сохраните строчку avail||CVSROOT, иначе вы заблокируете сами себя на следующем шаге.

    Другими параметрами, которые вы можете добавить в этот файл, являются группы коммиттеров. По умолчанию FreeBSD использует файл access для перечисления всех коммиттеров, но вы можете использовать любой файл. Вы можете также добавить группы, если хотите (синтаксис описан в начале файла cvs_acls.pl).

  3. Отредактируйте файл cfg_local.pm так, чтобы он содержал параметры, которые вы хотите. В частности, вы должны взглянуть на такие пункты настройки:

    • %TEMPLATE_HEADERS - они обрабатываются скриптами ведения протокола, и вставляются ниже почтового сообщения, если они присутствуют и не являются пустыми в сообщении при коммите. Вы можете, наверное, удалить строки PR и MFC after. И, конечно, вы можете добавить свои собственные.

    • $MAIL_BRANCH_HDR - если вы хотите в каждое сообщение при коммите вставлять заголовок, описывающий ветку, в которую был выполнен коммит, задайте это в соответствии с вашим окружением. Или оставьте это пустым, если не хотите иметь такой заголовок.

    • @COMMIT_HOSTS - задайте здесь список хостов, с которых можно выполнять коммиты.

    • $MAILADDRS - задайте здесь адрес администратора или списка, в который должны направляться почтовые сообщения при коммите.

    • @LOG_FILE_MAP - измените этот массив по своему усмотрению - каждое регулярное выражение сравнивается с каталогом коммита, и протокольное сообщение при коммите сохраняется в подкаталоге commitlogs в указанном файле.

    • $COMMITCHECK_EXTRA - если вы не хотите использовать специфичные для FreeBSD проверки доступа, то вы должны удалить определения $COMMITCHECK_EXTRA из этого файла.

    Замечание: Изменение параметра $IDHEADER гарантированно работает только на платформах FreeBSD; это зависит от специфичных для FreeBSD модификаций в CVS.

    Вы можете проверить cfg.pm на предмет того, какие другие параметры могут быть изменены, но перечисленное выше является достаточным подмножеством.

  4. Отредактируйте exclude для удаления специфичных для FreeBSD записей (например, всех строк, которые начинаются с ^ports/ и так далее). Более того, закомментируйте строки, начинающиеся с ^CVSROOT/, и добавьте одну строку только с ^CVSROOT/. После установки обработчика (wrapper) вы можете добавить свои заголовки к файлам в каталоге CVSROOT и восстановить эти строки, но теперь они будут иметь смысл, только когда вы попытаетесь выполнить коммит позже.

  5. Отредактируйте файл modules и удалите всё, что относится к FreeBSD. Добавьте собственные модули, если хотите.

  6. Замечание: Этот шаг необходим, если только вы задали значение для $IDHEADER в cfg_local.pm (что работает только при использовании модифицированной во FreeBSD версии CVS).

    Отредактируйте файл options так, чтобы он соответствовал метке, которую вы задали в cfg_local.pm. Глобальный поиск и замена FreeBSD на вашу метку должны сработать.

  7. Отредактируйте файл rcstemplate так, чтобы он содержал те же самые ключевые слова, что заданы в cfg_local.pm.

  8. Опционально удалите проверки FreeBSD из tagcheck. Вы можете просто добавить exit 0 в начало файла, чтобы запретить все проверки при установке метки.

  9. Последним действием, которое нужно сделать перед тем, как закончить работу, является проверка того, что протоколы коммитов могут сохраняться. По умолчанию они сохраняются в хранилище, в подкаталоге commitlogs каталога CVSROOT. Этот каталог должен быть создан, так что выполните следующее:

    % mkdir commitlogs
    % cvs add commitlogs
    

А теперь, после тщательной проверки, вы должны выполнить коммит ваших изменений. Убедитесь, что вы дали сами себе доступ к каталогу CVSROOT в вашем avail до того, как его делать, так как в противном случае вы заблокируете сами себя. Так что убедитесь, что всё именно так, как вы и предполагали, а затем выполните следующее:

% cvs commit -m '- Initial FreeBSD scripts commit'

2.7. Тестирование настройки

Вы готовы к первому тестированию: принудительному коммиту в файл avail, чтобы убедиться, что всё работает так, как ожидалось.

% cvs commit -f -m 'Forced commit to test the new CVSROOT scripts' avail

Если всё работает, поздравляем! Теперь у вас имеется работающая настройка скриптов FreeBSD для вашего хранилища. Если CVS всё ещё о чём-то сообщает, вернитесь и проверьте, все ли вышеупомянутые шаги были выполнены правильно.

Этот, и другие документы, могут быть скачаны с ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.

По вопросам, связанным с FreeBSD, прочитайте документацию прежде чем писать в <questions@FreeBSD.org>.
По вопросам, связанным с этой документацией, пишите <doc@FreeBSD.org>.
По вопросам, связанным с русским переводом документации, пишите в рассылку <frdp@FreeBSD.org.ua>.
Информация по подписке на эту рассылку находится на сайте проекта перевода.