Add cvs-freebsd translated article.

Obtained from:	The FreeBSD Russian Documentation Project
This commit is contained in:
Dmitry Morozovsky 2005-01-03 14:34:57 +00:00
parent efe4b39e5a
commit ed745d2d81
Notes: svn2git 2020-12-08 03:00:23 +00:00
svn path=/head/; revision=23425
3 changed files with 755 additions and 1 deletions
ru_RU.KOI8-R/articles

View file

@ -14,7 +14,7 @@ SUBDIR+= committers-guide
SUBDIR+= console-server
#SUBDIR+= contributing
#SUBDIR+= contributors
#SUBDIR+= cvs-freebsd
SUBDIR+= cvs-freebsd
#SUBDIR+= cvsup-advanced
SUBDIR+= dialup-firewall
SUBDIR+= diskless-x

View file

@ -0,0 +1,22 @@
#
# The FreeBSD Russian Documentation Project
#
# $FreeBSD$
# $FreeBSDru: frdp/doc/ru_RU.KOI8-R/articles/cvs-freebsd/Makefile,v 1.3 2005/01/03 08:14:37 marck Exp $
#
# Original revision: 1.5
#
DOC?= article
FORMATS?= html
INSTALL_COMPRESSED?= gz
INSTALL_ONLY_COMPRESSED?=
SRCS= article.sgml
URL_RELPREFIX?= ../../../..
DOC_PREFIX?= ${.CURDIR}/../../..
.include "${DOC_PREFIX}/share/mk/doc.project.mk"

View file

@ -0,0 +1,732 @@
<!--
The FreeBSD Russian Documentation Project
$FreeBSDru: frdp/doc/ru_RU.KOI8-R/articles/cvs-freebsd/article.sgml,v 1.6 2005/01/03 14:32:47 marck Exp $
Original revision: 1.15
-->
<!DOCTYPE article PUBLIC "-//FreeBSD//DTD DocBook V4.1-Based Extension//EN" [
<!ENTITY % articles.ent PUBLIC "-//FreeBSD//ENTITIES DocBook FreeBSD Articles Entity Set//EN">
%articles.ent;
]>
<article lang="ru">
<articleinfo>
<title>Настройка хранилища CVS - подход FreeBSD</title>
<author>
<firstname>Stijn</firstname>
<surname>Hoop</surname>
<affiliation>
<address><email>stijn@win.tue.nl</email></address>
</affiliation>
</author>
<copyright>
<year>2001</year>
<year>2002</year>
<year>2003</year>
<holder role="mailto:stijn@win.tue.nl">Stijn Hoop</holder>
</copyright>
<releaseinfo>$FreeBSD$</releaseinfo>
<legalnotice id="trademarks" role="trademarks">
&tm-attrib.freebsd;
&tm-attrib.general;
</legalnotice>
<abstract>
<para>В этой статье описаны шаги, которые я предпринял для настройки
хранилища CVS, использующего те же самые скрипты, что используются в
проекте FreeBSD в их настройке. Это имеет некоторые преимущества перед
стандартной настройкой CVS, включая более точный контроль доступа к
дереву исходных текстов и генерация читабельных сообщений электронной
почты при каждом коммите.</para>
</abstract>
</articleinfo>
<sect1 id="introduction">
<title>Введение</title>
<para>Большинство программных проектов с открытым кодом используют
<application>CVS</application> в качестве системы управления исходным
кодом. Хотя <application>CVS</application> весьма хороша в этом
качестве, у ней есть свои неудобства и недостатки. Одним из них является
то, что совместное использование дерева исходных текстов с другими
разработчиками может быстро привести к кошмарным проблемам при
администрировании, особенно если кто-то захочет защитить части дерева от
общедоступности.</para>
<para>FreeBSD является одним из проектов, использующим
<application>CVS</application>. Здесь также имеет большое количество
разработчиков, разбросанных по всему миру. Они разработали некоторые
скрипты, облегчающие управление хранилищем. Недавно эти скрипты были
пересмотрены и приведены в порядок Джозефом Карсаузером (Joseph
Karthauser), в целях облегчения их использования в других проектах. Эта
статья описывает один из методов использования новых скриптов.</para>
<para>Чтобы извлечь максимум информации из этой статьи, вы должны владеть
основными методами работы с <application>CVS</application>.</para>
</sect1>
<sect1 id="first-setup">
<title>Первоначальная настройка</title>
<warning>
<para>Наверное, лучше сначала выполнить эту процедуру с пустым тестовым
хранилищем, чтобы понять все последствия ваших действий. Как обычно в
таких случаях, у вас должны иметься свежие читаемые резервные
копии!</para>
</warning>
<sect2>
<title>Инициализация хранилища</title>
<para>Первым делом при настройке нового хранилища является указание
<application>CVS</application> на его инициализацию:</para>
<screen>&prompt.user; <userinput>cvs -d <replaceable>path-to-repository</replaceable> init</userinput></screen>
<para>Это указывает <application>CVS</application> на создание служебного
каталога <filename>CVSROOT</filename>, в котором выполняется вся
настройка.</para>
</sect2>
<sect2>
<title>Группа пользователей хранилища</title>
<para>Теперь мы создадим группу, которая будет владеть хранилищем. В
этой группе должны присутствовать все коммиттеры, для того, чтобы они
могли писать в хранилище. Для этой группы мы примем стандартное для
FreeBSD название <literal>ncvs</literal>.</para>
<screen>&prompt.root; <userinput>pw groupadd <replaceable>ncvs</replaceable></userinput></screen>
<para>Затем вы должны при помощи команды &man.chown.8; сменить владельца и
группу для только что добавленного каталога:</para>
<screen>&prompt.root; <userinput>chown -R :<replaceable>ncvs</replaceable> <replaceable>path-to-your-repository</replaceable></userinput></screen>
<para>Это нужно для того, чтобы никто не мог записывать в хранилище, не
являясь членом группы.</para>
</sect2>
<sect2>
<title>Получение исходных текстов</title>
<para>Теперь вам нужно получить каталог <filename>CVSROOT</filename> из
хранилища FreeBSD. Проще всего это делается извлечением с анонимного
зеркала CVS FreeBSD. Обратитесь к <ulink
url="&url.books.handbook;/anoncvs.html">соответствующей главе
Руководства</ulink> для получения дополнительной информации. Мы будем
полагать, что исходные тексты хранятся в подкаталоге
<filename>CVSROOT-freebsd</filename> текущего каталога.</para>
</sect2>
<sect2>
<title>Копирование скриптов FreeBSD</title>
<para>Теперь мы скопируем исходные тексты FreeBSD из
<filename>CVSROOT</filename> в наше хранилище. Если вы знакомы с
<application>CVS</application>, то для вас может иметь смысл попытаться
импортировать скрипты, чтобы облегчить синхронизацию с последующими
версиями. Однако при этом оказывается, что
<application>CVS</application> имеет в этой области недостаток: при
импортировании исходных текстов в каталог <filename>CVSROOT</filename>
она не будет обновлять необходимые административные файлы. Чтобы в
этом убедиться, вам нужно проверить каждый файл после импортирования,
при этом смысл <literal>cvs import</literal> теряется. Поэтому
рекомендуемым методом является простое копирование скриптов.</para>
<para>Не имеет значения, как вы относитесь к предыдущему
параграфу&mdash;результат один и тот же. Просто поместите ваш
<filename>CVSROOT</filename> и скопируйте файлы FreeBSD поверх ваших
локальных (неизмененных) копий:</para>
<screen>&prompt.user; <userinput>cvs -d <replaceable>path-to-your-repository</replaceable> checkout CVSROOT</userinput>
&prompt.user; <userinput>cd CVSROOT</userinput>
&prompt.user; <userinput>cp ../CVSROOT-freebsd/* .</userinput>
&prompt.user; <userinput>cvs add *</userinput></screen>
<para>Заметим, что вы, скорее всего, получите несколько предупреждений о
том, что некоторые каталоги не были скопированы; это нормально, вам они
не нужны.</para>
</sect2>
<sect2>
<title>Скрипты</title>
<para>Теперь у вас есть рабочий каталог и точная копия скриптов, которые
используются в проекте FreeBSD для работы с хранилищем. Далее следует
краткое описание назначения каждого файла.</para>
<itemizedlist>
<listitem>
<para><filename>access</filename> - по умолчанию при стандартной
настройке этот файл не используется. Он применяется в <link
linkend="freebsdspecific">специфичных для проекта FreeBSD
настройках</link>, где он управляет доступом к хранилищу. Вы
можете удалить этот файл, если вы не собираетесь использовать такую
настройку.</para>
</listitem>
<listitem>
<para><filename>avail</filename> - этот файл управляет доступом к
хранилищу. В нем вы можете указать группы людей, которым разрешен
доступ к хранилищу, а также запретить коммиты на уровне каталогов.
Вы должны поднастроить его так, чтобы он содержал группы и
каталоги, имеющиеся в вашем хранилище.</para>
</listitem>
<listitem>
<para><filename>cfg.pm</filename> - этот файл анализирует вашу
конфигурацию и содержит настройки по умолчанию. Вы
<emphasis>не</emphasis> должны изменять этот файл. Вместо этого
размещайте ваши изменения в конфигурации в файле
<filename>cfg_local.pm</filename>.</para>
</listitem>
<listitem>
<para><filename>cfg_local.pm</filename> - этот файл содержит все
настраиваемые параметры системы. Вы должны настраивать все
параметры здесь, например, куда посылается почта при коммите, с
каких хостов можно выполнять коммиты, и прочее. Ниже дается более
полная информация об этом.</para>
</listitem>
<listitem>
<para><filename>checkoutlist</filename> - эти файлы перечисляют все
файлы, управляемые <application>CVS</application> в этом каталоге.
Вы должны отредактировать его для удаления некоторых специфичных
для FreeBSD файлов.</para>
</listitem>
<listitem>
<para><filename>commit_prep.pl</filename> - этот скрипт выполняет
различные проверки перед выполнением коммита, в зависимости от
того, включили ли вы их в <filename>cfg_local.pm</filename>. Вам
не нужно его трогать.</para>
</listitem>
<listitem>
<para><filename>commitcheck</filename> - этот скрипт вызывается
непосредственно из <application>CVS</application>. Сначала он
проверяет, с использованием <filename>cvs_acls.pl</filename>,
имеет ли коммитер доступ к указанной части дерева, а
затем запускает <filename>commit_prep.pl</filename> для выполнения
различных проверок перед коммитом. Если они выполнились нормально,
то <application>CVS</application> позволит выполнить коммит. Вам
не нужно трогать этот файл.</para>
</listitem>
<listitem>
<para><filename>commitinfo</filename> - этот файл используется в
<application>CVS</application> для определения того, какой скрипт
запускать перед коммитом&mdash;в данном случае
<filename>commitcheckl</filename>. Вам не нужно трогать
этот файл.</para>
</listitem>
<listitem>
<para><filename>config</filename> - конфигурационный файл для этого
хранилища. Вы должны изменять его при необходимости, но
большинство администраторов могут оставить все настройки по
умолчанию. Дополнительную информацию о параметрах, которые могут
быть здесь заданы, можно найти в руководстве
по <application>CVS</application>.</para>
</listitem>
<listitem>
<para><filename>cvs_acls.pl</filename> - этот скрипт идентифицирует
пользователя и то, имеет ли он доступ к дереву. Это делается
на основе информации в файле <filename>avail</filename>. Вам не
нужно трогать этот файл.</para>
</listitem>
<listitem>
<para><filename>cvsignore</filename> - этот файл перечисляет файлы,
которые <application>CVS</application> не должна помещать в
хранилище. Вы можете отредактировать его по своему усмотрению.
Более полная информация об этом файле находится в руководстве по
<application>CVS</application>.</para>
</listitem>
<listitem>
<para><filename>cvswrappers</filename> - этот файл используется в
<application>CVS</application> для включения или выключения
расширения ключевых слов, или должен ли файл считаться бинарным.
Вы можете редактировать его по своему усмотрению. Более полная
информация об этом файле находится в руководстве по
<application>CVS</application>. Имейте ввиду, что опции
<application>CVS</application> <literal>-t</literal> и
<literal>-f</literal> некорректно работают в режиме
клиент/сервер.</para>
</listitem>
<listitem>
<para><filename>edithook</filename> - этот файл больше не
используется, но оставлен по историческим причинам. Вы можете
спокойно удалить этот файл.</para>
</listitem>
<listitem>
<para><filename>editinfo</filename> - <application>CVS</application>
использует этот файл для настройки редактора. FreeBSD не
использует эту функциональность, так как обработка сообщений
для журнала выполняется в файлах <filename>verifymsg</filename> и
<filename>logcheck</filename>. Это происходит по той причине,
что <filename>editinfo</filename> некорректно работает в режиме
клиент/сервер, или в случаях когда используются опции
<literal>-m</literal> или <literal>-F</literal>. Вам не нужно
трогать этот файл.</para>
</listitem>
<listitem>
<para><filename>exclude</filename> - в этом файле перечислены
регулярные выражения, используемые
<filename>commit_prepl.pl</filename> для выделения файлов, в которых
могут не содержаться заголовки с номером версии. В настройке
FreeBSD все файлы содержащиеся в хранилище должны иметь
заголовок с версией (типа &dollar;FreeBSD&dollar;). Все файлы
с именами, которые соответствуют одной из строк этого файла,
исключаются из проверки. Вы должны добавить выражения в этот
файл, если вы помещаете в хранилище файлы, которые не могут
иметь заголовки с версиями. Для целей установки скриптов лучшим
решением может оказаться исключение <filename>CVSROOT/</filename>
из проверки заголовков.</para>
</listitem>
<listitem>
<para><filename>log_accum.pl</filename> - это скрипт, который
принимает журнальное сообщение в виде, данном скриптом
<filename>logcheck</filename>, и добавляет его к файлу журнала в
хранилище для хранения резервной копии. Он также отрабатывает
посылку сообщения по электронной почте на адрес, который вы
зададите (в файле <filename>cfg_local.pm</filename>). Он
подключается к <application>CVS</application> через
<filename>loginfo</filename>. Вам не нужно трогать этот
файл.</para>
</listitem>
<listitem>
<para><filename>logcheck</filename> - при коммите этот файл
анализирует сообщение для журнала, которое составляют коммиттеры, и
пытается его некоторым образом улучшить. Он подключается к
<application>CVS</application> через <filename>logcheck</filename>.
Вам не нужно трогать этот файл.</para>
<note>
<para>Этот скрипт зависит от ряда локальных модификаций
<application>CVS</application>, сделанный во FreeBSD: эта версия
читает журнальное сообщение повторно после того, как этот скрипт
его модифицирует. Стандартная версия
<application>CVS</application> этого не делает, что делает этот
скрипт бесполезным, так как он не может модифицировать
журнальное сообщение, хотя может проверить его на предмет
правильности синтаксиса. <application>CVS</application>
версии 1.11.2 и выше может быть настроен, чтоб иметь
поведение подобное FreeBSD, путем установки опции
<literal>RereadLogAfterVerify=always</literal> в
файле <filename>config</filename>.</para>
</note>
</listitem>
<listitem>
<para><filename>loginfo</filename> - этот файл используется
<application>CVS</application> для управления того, куда посылается
протокольная информация. С помощью этого файла подключается
<filename>log_accum.pl</filename>. Вам не нужно трогать этот
файл.</para>
</listitem>
<listitem>
<para><filename>modules</filename> - этот файл сохраняет своё
традиционное назначение в <application>CVS</application>. Вы
должны удалить модули FreeBSD из стандартной версии. Вы можете
редактировать этот файл по своему усмотрению. Более полная
информация об этом файле находится в руководстве по
<application>CVS</application>.</para>
</listitem>
<listitem>
<para><filename>notify</filename> - этот файл используется в
<application>CVS</application> в том случае, если кто-то задаст
отслеживание файла. Это не используется в хранилище FreeBSD. Вы
можете редактировать его по своему усмотрению. Более полная
информация об этом файле находится в руководстве по
<application>CVS</application>.</para>
</listitem>
<listitem>
<para><filename>options</filename> - этот файл специфичен для
версии <application>CVS</application> от FreeBSD, но также
поддерживается версией для Debian. Он содержит
ключевое слово для расширения в заголовках версий. Вы должны
заменить это на ключевое слово, которое вы задали в файле
<filename>cfg_local.pm</filename> (если вы используете эту
возможность, которая в настоящее время специфична для
FreeBSD).</para>
</listitem>
<listitem>
<para><filename>rcsinfo</filename> - этот файл отображает каталоги в
хранилище на файлы шаблонов, как например
<filename>rcstemplate</filename>. По умолчанию FreeBSD использует
один шаблон для всего хранилища. Вы можете добавлять другие
к этому файлу по своему усмотрению.</para>
</listitem>
<listitem>
<para><filename>rcstemplate</filename> - этот файл является
актуальным файлом шаблона, который видят коммиттеры, когда помещают
что-то в хранилище. Вы должны отредактировать его для описания
различных дополнительных параметров, которые вы определили в
<filename>cfg_local.pm</filename>.</para>
</listitem>
<listitem>
<para><filename>tagcheck</filename> - эти файлы управляют доступом к
созданию меток в хранилище. Стандартная для FreeBSD версия не
позволяет создавать метки с именами типа RELENG* из-за пересечения
с процессом создания релизов. Вы должны отредактировать этот файл
по вашему усмотрению.</para>
</listitem>
<listitem>
<para><filename>taginfo</filename> - этот файл ставит в соответствие
операции с метками над каталогами хранилища скриптам управления
доступом, например <filename>tagcheck</filename>. Вам не нужно
трогать этот файл.</para>
</listitem>
<listitem>
<para><filename>unwrap</filename> - этот скрипт нужен для
автоматической обратной обработки (<quote>unwrap</quote>) двоичных
файлов (посмотрите <filename>cvswrappers</filename>) при
извлечении. Это не используется в текущей настройке FreeBSD по
причине того, что не работает с конфигурацией клиент/сервер. Вам
не нужно трогать этот файл.</para>
</listitem>
<listitem>
<para><filename>verifymsg</filename> - этот файл ставит в
соответствие каталогам хранилища скрипты вторичной обработки
журнальных сообщений, например <filename>logcheck</filename>.
Вам не нужно трогать этот файл.</para>
</listitem>
<listitem>
<para><filename>wrap</filename> - этот скрипт может быть использован для
автоматической обработки (<quote>wrap</quote>) двоичных файлов
(посмотрите <filename>cvswrappers</filename>) при помещении в
хранилище. Это не используется в текущей настройке FreeBSD, по
причине того, что не работает с конфигурацией клиент/сервер. Вам
не нужно трогать этот файл.</para>
</listitem>
</itemizedlist>
</sect2>
<sect2>
<title>Настройка скриптов</title>
<para>Следующим шагом является настройка скриптов так, чтобы они работали
в ваших условиях. Вы должны просмотреть все файлы в каталоге и
выполнить ваши настройки. В частности, вы может потребоваться
отредактировать следующие файлы:</para>
<procedure>
<step>
<para>Если вы не хотите использовать <link
linkend="freebsdspecific">специфичные для FreeBSD
возможности</link> скриптов, то вы можете без последствий удалить
файл <filename>access</filename>:</para>
<screen>&prompt.user; <userinput>cvs rm -f access</userinput></screen>
</step>
<step>
<para>Отредактируйте <filename>avail</filename> так, чтобы он
содержал различные каталоги хранилища, доступом к которым вы хотите
управлять. Обязательно сохраните строчку
<literal>avail||CVSROOT</literal>, иначе вы заблокируете сами себя
на следующем шаге.</para>
<para>Другими параметрами, которые вы можете добавить в этот файл,
являются группы коммиттеров. По умолчанию FreeBSD использует файл
<filename>access</filename> для перечисления всех коммиттеров, но
вы можете использовать любой файл. Вы можете также добавить
группы, если хотите (синтаксис описан в начале файла
<filename>cvs_acls.pl</filename>).</para>
</step>
<step>
<para>Отредактируйте файл <filename>cfg_local.pm</filename> так,
чтобы он содержал параметры, которые вы хотите. В частности, вы
должны взглянуть на такие пункты настройки:</para>
<itemizedlist>
<listitem>
<para><literal>%TEMPLATE_HEADERS</literal> - они обрабатываются
скриптами ведения протокола, и вставляются ниже почтового
сообщения, если они присутствуют и не являются пустыми в
сообщении при коммите. Вы можете, наверное, удалить строки
<literal>PR</literal> и <literal>MFC after</literal>. И,
конечно, вы можете добавить свои собственные.</para>
</listitem>
<listitem>
<para><literal>$MAIL_BRANCH_HDR</literal> - если вы хотите
в каждое сообщение при коммите вставлять заголовок, описывающий
ветку, в которую был выполнен коммит, задайте это в
соответствии с вашим окружением. Или оставьте это пустым, если
не хотите иметь такой заголовок.</para>
</listitem>
<listitem>
<para><literal>@COMMIT_HOSTS</literal> - задайте здесь список
хостов, с которых можно выполнять коммиты.</para>
</listitem>
<listitem>
<para><literal>$MAILADDRS</literal> - задайте здесь адрес
администратора или списка, в который должны направляться
почтовые сообщения при коммите.</para>
</listitem>
<listitem>
<para><literal>@LOG_FILE_MAP</literal> - измените этот массив по
своему усмотрению - каждое регулярное выражение сравнивается с
каталогом коммита, и протокольное сообщение при коммите
сохраняется в подкаталоге <filename>commitlogs</filename>
в указанном файле.</para>
</listitem>
<listitem>
<para><literal>$COMMITCHECK_EXTRA</literal> - если вы не хотите
использовать <link linkend="freebsdspecific">специфичные для
FreeBSD проверки доступа</link>, то вы должны удалить
определения <literal>$COMMITCHECK_EXTRA</literal> из этого
файла.</para>
</listitem>
</itemizedlist>
<note>
<para>Изменение параметра <literal>$IDHEADER</literal>
гарантированно работает только на платформах FreeBSD; это зависит
от специфичных для FreeBSD модификаций в
<application>CVS</application>.</para>
</note>
<para>Вы можете проверить <filename>cfg.pm</filename> на предмет того,
какие другие параметры могут быть изменены, но перечисленное выше
является достаточным подмножеством.</para>
</step>
<step>
<para>Отредактируйте <filename>exclude</filename> для удаления
специфичных для FreeBSD записей (например, всех строк, которые
начинаются с <literal>^ports/</literal> и так далее). Более того,
закомментируйте строки, начинающиеся с
<literal>^CVSROOT/</literal>, и добавьте одну строку только с
<literal>^CVSROOT/</literal>. После установки обработчика
(wrapper) вы можете добавить свои заголовки к файлам в каталоге
<filename>CVSROOT</filename> и восстановить эти строки, но теперь
они будут иметь смысл, только когда вы попытаетесь выполнить коммит
позже.</para>
</step>
<step>
<para>Отредактируйте файл <filename>modules</filename> и удалите всё,
что относится к FreeBSD. Добавьте собственные модули, если
хотите.</para>
</step>
<step>
<note>
<para>Этот шаг необходим, если только вы задали значение для
<literal>$IDHEADER</literal> в <filename>cfg_local.pm</filename>
(что работает только при использовании модифицированной во
FreeBSD версии <application>CVS</application>).</para>
</note>
<para>Отредактируйте файл <filename>options</filename> так, чтобы он
соответствовал метке, которую вы задали в
<filename>cfg_local.pm</filename>. Глобальный поиск и замена
<literal>FreeBSD</literal> на вашу метку должны сработать.</para>
</step>
<step>
<para>Отредактируйте файл <filename>rcstemplate</filename> так, чтобы
он содержал те же самые ключевые слова, что заданы в
<filename>cfg_local.pm</filename>.</para>
</step>
<step>
<para>Опционально удалите проверки FreeBSD из
<filename>tagcheck</filename>. Вы можете просто добавить
<literal>exit 0</literal> в начало файла, чтобы запретить все
проверки при установке метки.</para>
</step>
<step>
<para>Последним действием, которое нужно сделать перед тем, как
закончить работу, является проверка того, что протоколы коммитов
могут сохраняться. По умолчанию они сохраняются в хранилище, в
подкаталоге <filename>commitlogs</filename> каталога
<filename>CVSROOT</filename>. Этот каталог должен быть создан, так
что выполните следующее:</para>
<screen>&prompt.user; <userinput>mkdir commitlogs</userinput>
&prompt.user; <userinput>cvs add commitlogs</userinput></screen>
</step>
</procedure>
<para>А теперь, после тщательной проверки, вы должны выполнить коммит
ваших изменений. Убедитесь, что вы дали сами себе доступ к каталогу
<filename>CVSROOT</filename> в вашем <filename>avail</filename> до
того, как его делать, так как в противном случае вы заблокируете сами
себя. Так что убедитесь, что всё именно так, как вы и предполагали, а
затем выполните следующее:</para>
<screen>&prompt.user; <userinput>cvs commit -m '<replaceable>- Initial FreeBSD scripts commit</replaceable>'</userinput></screen>
</sect2>
<sect2>
<title>Тестирование настройки</title>
<para>Вы готовы к первому тестированию: принудительному коммиту в файл
<filename>avail</filename>, чтобы убедиться, что всё работает так, как
ожидалось.</para>
<screen>&prompt.user; <userinput>cvs commit -f -m '<replaceable>Forced commit to test the new CVSROOT scripts</replaceable>' avail</userinput></screen>
<para>Если всё работает, поздравляем! Теперь у вас имеется работающая
настройка скриптов FreeBSD для вашего хранилища. Если
<application>CVS</application> всё ещё о чём-то сообщает, вернитесь и
проверьте, все ли вышеупомянутые шаги были выполнены правильно.</para>
</sect2>
</sect1>
<sect1 id="freebsdspecific">
<title>Специфичная для FreeBSD настройка</title>
<para>Проект FreeBSD сам по себе использует несколько другую настройку,
в которой также используются файлы из подкаталога
<filename>freebsd</filename> каталога FreeBSD
<filename>CVSROOT</filename>. Проект использует их из-за большого
количества коммиттеров, которые все должны быть в одной и той же группе.
Поэтому был написан простой обработчик, проверяющий, что люди имеют
правильные права на выполнение коммита, а затем устанавливающий
идентификатор группы, соответствующий идентификатору хранилища.</para>
<para>Если вашему хранилищу это тоже нужно, то шаги для выполнения этого
описаны ниже. Но сначала обзор связанных с этим файлов.</para>
<sect2>
<title>Файлы, используемые в настройке FreeBSD</title>
<itemizedlist>
<listitem>
<para><filename>access</filename> - этот файл управляет информацией
о доступе. Вы должны отредактировать этот файл для включения
всех участников вашего проекта.</para>
</listitem>
<listitem>
<para><filename>freebsd/commitmail.pl</filename> - этот файл больше
не используется, но оставлен по историческим причинам. Вам не
нужно трогать этот файл.</para>
</listitem>
<listitem>
<para><filename>freebsd/cvswrap.c</filename> - это исходный текст
обработчика CVS, который вам нужно установить, чтобы проверки
доступа реально заработали. Дополнительная информация об этом
ниже. Вы должны отредактировать маршруты в макросах
<literal>ACCESS</literal> и <literal>REALCVS</literal> так, чтобы
они соответствовали вашей настройке.</para>
</listitem>
<listitem>
<para><filename>freebsd/mailsend.c</filename> - этот файл нужен
в настройке FreeBSD для списков рассылки. Вам не нужно трогать
этот файл.</para>
</listitem>
</itemizedlist>
</sect2>
<sect2>
<title>Процедура</title>
<procedure>
<step>
<para>Отредактируйте файл <filename>access</filename> так, чтобы
он содержал только ваше имя пользователя.</para>
</step>
<step>
<para>Отредактируйте <filename>cvswrap.c</filename> так, чтобы он
содержал правильный маршрут для вашей настройки. Это определено в
макросе по имени <literal>ACCESS</literal>. Вы должны также
изменить расположение реального выполнимого файла
<command>cvs</command>, если оно не подходит к вашей ситуации.
Для стандартного <filename>cvswrap.c</filename> предполагается, что
он заменит общесистемную команду cvs, которая будет перемещена в
<filename>/usr/bin/ncvs</filename>.</para>
<para>В моём экземпляре <filename>cvswrap.c</filename> помещено
следующее:</para>
<programlisting>#define ACCESS "/local/cvsroot/CVSROOT/access"
#define REALCVS "/usr/bin/ncvs"</programlisting>
</step>
<step>
<para>Следующим шагом является установка обработчика для того, чтобы
проверить правильность установки группы при выполнении коммита.
Исходные тексты для этого размещены в
<filename>cvswrap.c</filename> из вашего
<filename>CVSROOT</filename>.</para>
<para>Откомпилируйте исходные тексты, которые вы редактировали для
включения правильных путей:</para>
<screen>&prompt.user; <userinput>cc -o cvs cvswrap.c</userinput></screen>
<para>А затем установите их (для этого вы должны быть пользователем
root):</para>
<screen>&prompt.root; <userinput>mv /usr/bin/cvs /usr/bin/ncvs</userinput>
&prompt.root; <userinput>mv cvs /usr/bin/cvs</userinput>
&prompt.root; <userinput>chown root:<replaceable>ncvs</replaceable> /usr/bin/cvs /usr/bin/ncvs</userinput>
&prompt.root; <userinput>chmod o-rx /usr/bin/ncvs</userinput>
&prompt.root; <userinput>chmod u-w,g+s /usr/bin/cvs</userinput></screen>
<para>При этом обработчик будет установлен по умолчанию как команда
<command>cvs</command>, что гарантирует всеми, использующими
хранилище, получение правильных уровней доступа.</para>
</step>
<step>
<para>Теперь вы можете убрать всех из вашей группы хранилища. Всё
управление доступом выполняется вашим обработчиком, и он будет
устанавливать правильную группу для доступа.</para>
</step>
</procedure>
</sect2>
<sect2>
<title>Тестирование настройки</title>
<para>Теперь ваш обработчик должен быть установлен. Конечно, вы можете
протестировать его, выполнив принудительный коммит в файл
<filename>access</filename>:</para>
<screen>&prompt.user; <userinput>cvs commit -f -m '<replaceable>Forced commit to test the new CVSROOT scripts</replaceable>' access</userinput></screen>
<para>И снова, если это не сработает, проверьте, правильно ли были выполнены
все вышеперечисленные шаги.</para>
</sect2>
</sect1>
</article>