8f5cabeba9
+ articles/contributing/article.xml r40773 --> r42442 + articles/cvs-freebsd/article.xml r39632 --> r42226 + articles/hubs/article.xml r41155 --> r42226 + handbook/bsdinstall/chapter.xml r40684 --> r42226 + handbook/install/chapter.xml r41278 --> r41823
736 lines
30 KiB
XML
736 lines
30 KiB
XML
<?xml version="1.0" encoding="koi8-r"?>
|
||
<!DOCTYPE article PUBLIC "-//FreeBSD//DTD DocBook XML V4.5-Based Extension//EN"
|
||
"../../../share/xml/freebsd45.dtd">
|
||
|
||
<!--
|
||
The FreeBSD Russian Documentation Project
|
||
|
||
$FreeBSDru: frdp/doc/ru_RU.KOI8-R/articles/cvs-freebsd/article.xml,v 1.9 2006/02/05 17:43:22 marck Exp $
|
||
|
||
Original revision: r42226
|
||
-->
|
||
|
||
<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>
|
||
|
||
<pubdate>$FreeBSD$</pubdate>
|
||
|
||
<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>. Здесь также имеет большое количество
|
||
разработчиков, разбросанных по всему миру. Они разработали некоторые
|
||
скрипты, облегчающие управление хранилищем. Недавно &a.joe.email;
|
||
пересмотрел и привел в порядок эти скрипты
|
||
в целях облегчения их использования в других проектах. В этой
|
||
статье описан один из методов использования новых скриптов.</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 class="directory">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 class="directory">CVSROOT</filename> из
|
||
хранилища FreeBSD. Проще всего это делается извлечением с анонимного
|
||
зеркала CVS FreeBSD. Обратитесь к <ulink
|
||
url="&url.books.handbook;/anoncvs.html">соответствующей главе
|
||
Руководства</ulink> для получения дополнительной информации. Мы будем
|
||
полагать, что исходные тексты хранятся в подкаталоге
|
||
<filename class="directory">CVSROOT-freebsd</filename> текущего каталога.</para>
|
||
</sect2>
|
||
|
||
<sect2>
|
||
<title>Копирование скриптов FreeBSD</title>
|
||
|
||
<para>Теперь мы скопируем исходные тексты FreeBSD из
|
||
<filename class="directory">CVSROOT</filename> в наше хранилище. Если вы знакомы с
|
||
<application>CVS</application>, то для вас может иметь смысл попытаться
|
||
импортировать скрипты, чтобы облегчить синхронизацию с последующими
|
||
версиями. Однако при этом оказывается, что
|
||
<application>CVS</application> имеет в этой области недостаток: при
|
||
импортировании исходных текстов в каталог <filename class="directory">CVSROOT</filename>
|
||
она не будет обновлять необходимые административные файлы. Чтобы в
|
||
этом убедиться, вам нужно проверить каждый файл после импортирования,
|
||
при этом смысл <literal>cvs import</literal> теряется. Поэтому
|
||
рекомендуемым методом является простое копирование скриптов.</para>
|
||
|
||
<para>Не имеет значения, как вы относитесь к предыдущему
|
||
параграфу—результат один и тот же. Просто поместите ваш
|
||
<filename class="directory">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> для определения того, какой скрипт
|
||
запускать перед коммитом—в данном случае
|
||
<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 все файлы содержащиеся в хранилище должны иметь
|
||
заголовок с версией (типа $FreeBSD$). Все файлы
|
||
с именами, которые соответствуют одной из строк этого файла,
|
||
исключаются из проверки. Вы должны добавить выражения в этот
|
||
файл, если вы помещаете в хранилище файлы, которые не могут
|
||
иметь заголовки с версиями. Для целей установки скриптов лучшим
|
||
решением может оказаться исключение <filename class="directory">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 class="directory">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 class="directory">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 class="directory">CVSROOT</filename>. Этот каталог должен быть создан, так
|
||
что выполните следующее:</para>
|
||
|
||
<screen>&prompt.user; <userinput>mkdir commitlogs</userinput>
|
||
&prompt.user; <userinput>cvs add commitlogs</userinput></screen>
|
||
</step>
|
||
</procedure>
|
||
|
||
<para>А теперь, после тщательной проверки, вы должны выполнить коммит
|
||
ваших изменений. Убедитесь, что вы дали сами себе доступ к каталогу
|
||
<filename class="directory">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 class="directory">freebsd</filename> каталога FreeBSD
|
||
<filename class="directory">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 class="directory">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>
|