Add cvs-freebsd translated article.
Obtained from: The FreeBSD Russian Documentation Project
This commit is contained in:
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
|
@ -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
|
||||
|
|
22
ru_RU.KOI8-R/articles/cvs-freebsd/Makefile
Normal file
22
ru_RU.KOI8-R/articles/cvs-freebsd/Makefile
Normal 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"
|
732
ru_RU.KOI8-R/articles/cvs-freebsd/article.sgml
Normal file
732
ru_RU.KOI8-R/articles/cvs-freebsd/article.sgml
Normal 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>Не имеет значения, как вы относитесь к предыдущему
|
||||
параграфу—результат один и тот же. Просто поместите ваш
|
||||
<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> для определения того, какой скрипт
|
||||
запускать перед коммитом—в данном случае
|
||||
<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>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>
|
Loading…
Reference in a new issue