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+= console-server
|
||||||
#SUBDIR+= contributing
|
#SUBDIR+= contributing
|
||||||
#SUBDIR+= contributors
|
#SUBDIR+= contributors
|
||||||
#SUBDIR+= cvs-freebsd
|
SUBDIR+= cvs-freebsd
|
||||||
#SUBDIR+= cvsup-advanced
|
#SUBDIR+= cvsup-advanced
|
||||||
SUBDIR+= dialup-firewall
|
SUBDIR+= dialup-firewall
|
||||||
SUBDIR+= diskless-x
|
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