doc/ru_RU.KOI8-R/articles/cvsup-advanced/article.xml
2013-01-30 19:12:36 +00:00

277 lines
12 KiB
XML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?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/cvsup-advanced/article.xml,v 1.5 2005/06/12 05:18:06 gad Exp $
Original revision: r23909
-->
<article lang="ru">
<articleinfo>
<title>Тонкие вопросы работы CVSup</title>
<authorgroup>
<author>
<firstname>Salvo</firstname>
<surname>Bartolotta</surname>
<affiliation>
<address><email>bartequi@neomedia.it</email></address>
</affiliation>
</author>
</authorgroup>
<legalnotice id="trademarks" role="trademarks">
&tm-attrib.freebsd;
&tm-attrib.cvsup;
&tm-attrib.general;
</legalnotice>
<pubdate>$FreeBSD$</pubdate>
<releaseinfo>$FreeBSD$</releaseinfo>
<abstract>
<para>В этой статье предполагается понимание основ
работы <application>CVSup</application>. В ней описываются некоторые
тонкие вопросы, связанные с синхронизацией исходных текстов при помощи
<application>CVSup</application>, описаны эффективные решения для проблемы
потерянных файлов, а также особые случаи обновления исходных текстов; вопросы,
которые, скорее всего, вызывают неожиданно возникающие проблемы.</para>
</abstract>
</articleinfo>
<sect1 id="preface">
<title>Обзор</title>
<para>Этот документ является плодом попыток автора полностью понять
преимущества <application>CVSup</application> &amp; обновления
исходного кода.&nbsp;:-) Хотя автор прилагал все усилия, чтобы сделать
эти страницы максимально информативными и корректными, он всего лишь
человек и мог сделать все типы опечаток, ошибок и так далее. Он будет
очень признателен за любые комментарии и/или пожелания, которые вы пришлете
ему по электронной почте на адрес <email>bartequi@neomedia.it</email>.</para>
</sect1>
<sect1 id="introduction">
<title>Введение</title>
<para>Если вы посещали <ulink url="http://www.polstra.com/">сайт Джона
Полстра</ulink> (John Polstra) и прочли <ulink
url="http://www.polstra.com/projects/freeware/CVSup/faq.html">его
FAQ</ulink>, то вы могли отметить вопросы 12 &amp; 13.</para>
<para>При обновлении любого набора исходных текстов (например,
<filename>/usr/ports</filename>), &man.cvsup.1; использует
соответствующий файл извлечений для того, чтобы выполнять процесс
обновления самым правильным и эффективным способом. В этом примере
(<filename>/usr/ports</filename>), соответствующим файлом извлечений
является <filename>/usr/sup/ports-all/checkouts.cvs:.</filename> если
основным каталогом является <filename>/usr</filename>.</para>
<para>Файл извлечений содержит информацию о текущем состоянии ваших
исходных текстов &mdash; нечто вроде <quote>фотографии</quote>. Эта
значащая информация позволяет <command>cvsup</command> сгружать
обновления наиболее эффективно. К тому же, и, может быть, более
важно то, что это позволяет <command>cvsup</command> правильно
управлять вашими исходными текстами, удаляя локальные файлы, которых
больше нет в хранилище, таким образом не позволяя появляться в вашей
системе забытым файлам. Действительно, без файла
извлечений <command>cvsup</command> <emphasis>не</emphasis>
будет знать, из каких файлов состоит ваш набор (подробности смотрите в
справочной системе по &man.cvsup.1; относительно метода откатки); в
результате он не может удалить в вашей системе те файлы, которых больше
нет в хранилище. Они (удаленные файлы) будут оставаться в системе, и
могут вызвать некоторые ошибки при построении или другие проблемы. К
примеру, появление этой проблемы весьма вероятно, если вы первый раз
обновили ваш набор портов через несколько недель после получения ваших
установочных компакт-дисков.</para>
<para>По этой причине рекомендуется, что вы последуете двухшаговой
процедуре, описанной в <application>CVSup</application> FAQ (смотрите Q12, Q13); в
последующих разделах вам будут даны конкретные примеры, интересные и
поучительные.</para>
</sect1>
<sect1 id="script">
<title>Полезный скрипт на языке python: <command>cvsupchk</command></title>
<para>Как альтернативу для проверки целостности ваших исходных текстов вы
можете использовать скрипт <command>cvsupchk</command>, написанный на языке
python; этот скрипт в настоящее время находится в
<filename>/usr/ports/net/cvsup/work/cvsup-16.1/contrib/cvsupchk</filename>,
вместе с хорошим <filename>README</filename>. Предварительные
требования:</para>
<orderedlist>
<listitem>
<para><literal>/usr/ports/net/cvsup</literal> &prompt.root;
<userinput> make extract</userinput></para>
</listitem>
<listitem>
<para>python (также находится в коллекции портов :-))</para>
</listitem>
<listitem>
<para>Файл извлечений для вашего набора исходных текстов.</para>
</listitem>
</orderedlist>
<para>Если вы обновляете ваши исходные тексты самый первый раз, конечно же,
у вас нет файла извлечений. После установки python и обновления ваших
исходных текстов (к примеру, <filename>/usr/ports</filename>), вы можете
проверить их так:</para>
<screen>&prompt.user; <filename>/path/to/</filename><userinput>cvsupchk -d /usr -c /usr/sup/ports-all/checkouts.cvs:. | more</userinput></screen>
<para>Если вы хотите проверить ваши исходные тексты RELENG_4:</para>
<screen>&prompt.user; <filename>/path/to/</filename><userinput>cvsupchk -d /usr -c /usr/sup/src-all/checkouts.cvs:RELENG_4 | more</userinput></screen>
<para>В каждом случае <command>cvsupchk</command> будет проверять ваши исходные
тексты на целостность, используя информацию, находящуюся в соответствующем файле
извлечений. Сообщения о таких аномалиях, как присутствие удаленных
файлов (так называемых забытых файлов), отсутствие извлеченных файлов,
наличие лишних файлов RCS и мертвых каталогов будут выдаваться на
стандартный вывод.</para>
<para>В следующем разделе мы дадим важные, типовые примеры обновления
исходных текстов; эти примеры покажут вам роль файлов извлечений и
опасности небрежного управления исходными текстами.</para>
</sect1>
<sect1 id="examples">
<title>Примеры более тонкого управления исходными текстами</title>
<sect2>
<title>Как безопасно изменять тэги при обновлении
<literal>src-all</literal></title>
<para>Если в вашем <filename>sup-файле</filename> вы задали, к
примеру, <literal>tag=A</literal>, то <command>cvsup</command>
создаст файл извлечений с именем <filename>checkouts.cvs:A</filename>:
например, если <literal>tag=RELENG_4</literal>, то создаваемый файл
извлечений называется <filename>checkouts.cvs:RELENG_4</filename>. Этот файл
будет использоваться для получения и/или сохранения информации,
идентифицирующей ваши исходные тексты 4-STABLE.</para>
<para>При отслеживании <literal>src-all</literal>, если вы хотите перейти
от <literal>tag=A</literal> к <literal>tag=B</literal> (не имеет
значения, больше или меньше A, чем B), и ваш файл извлечений
называется <filename>checkouts.cvs:A</filename>, то
должны быть выполнены следующие действия:</para>
<orderedlist>
<listitem>
<para>&prompt.root; <userinput>mv checkouts.cvs:A
checkouts.cvs:B</userinput>
(Это даст на последующем шаге корректный файл извлечений)</para>
</listitem>
<listitem>
<para>создайте <filename>sup-файл</filename>, со строкой наборов, которая содержит:</para>
<programlisting>src-all tag=B</programlisting>
</listitem>
<listitem>
<para>при помощи cvsup выполните обновление ваших исходных текстов
с новым <filename>sup-файлом</filename>.</para>
</listitem>
</orderedlist>
<para><command>cvsup</command> будет искать <filename>checkouts.cvs:B</filename> &mdash; так
как целью является B, то <command>cvsup</command> для корректного управления
вашими исходными текстами будет использовать информацию, содержащуюся
здесь.</para>
<para>Выигрыши:</para>
<itemizedlist>
<listitem>
<para>с исходными текстами работа производится корректно (в
частности, не остается забытых файлов)</para>
</listitem>
<listitem>
<para>на сервер ложится меньшая нагрузка, так как <command>cvsup</command> работает
самым эффективным образом.</para>
</listitem>
</itemizedlist>
<para>К примеру, <literal>A=RELENG_4</literal>, <literal>B=.</literal> Точка
в <literal>B=.</literal> означает -CURRENT. Это весьма типичное обновление, от
4-STABLE к -CURRENT. Хотя понятно, как
<quote>состарить</quote> ваши исходные тексты (к примеру, от -CURRENT к -STABLE),
понижение версии системы является совсем другим вопросом. Вам
НАСТОЯТЕЛЬНО не рекомендуется выполнять такое действие, если только вы
точно не понимаете, что делаете.</para>
</sect2>
<sect2>
<title>Обновление в одной и той же метке с разными датами</title>
<para>Если вы хотите перейти от <literal>tag=A</literal> к
<literal>tag=A</literal> с отличающейся
GMT-датой (скажем, <literal>date=D</literal>), то выполняйте следующее:</para>
<orderedlist>
<listitem>
<para>напишите <filename>sup-файл</filename> с такой строкой, определяющей набор:</para>
<programlisting>src-all tag=A date=D</programlisting>
</listitem>
<listitem>
<para>обновите ваши исходные тексты с помощью нового <filename>sup-файла</filename></para>
</listitem>
</orderedlist>
<para>Не имеет значения, предшествует ли новая дата времени последней
операции синхронизации с <literal>tag=A</literal>, или нет. Например, для
того, чтобы задать дату <quote>August 27, 2000, 10:00:00 GMT</quote>, вы пишете
строку:</para>
<programlisting>src-all tag=RELENG_4 date=2000.08.27.10.00.00</programlisting>
<note>
<para>Формат даты строг. Вы задаете все компоненты даты: столетие (<quote>20</quote>,
то есть 21 век. должен быть указан, когда как <quote>19</quote>,
прошлое столетие, может быть опущено), год, месяц, день, час, минуты,
секунды &mdash; как показано в примере выше. За дополнительной информацией
обратитесь к странице справочной системы по &man.cvsup.1;.</para>
</note>
<para>Вне зависимости от того, задана или нет дата, файл извлечений
называется <filename>checkouts.cvs:A</filename> (например,
<filename>checkouts.cvs:RELENG_4</filename>). В итоге не нужны
какие-то действия для возврата к предыдущему состоянию: вы изменяете
дату в <filename>sup-файле</filename>, и запускаете
<command>cvsup</command> снова.</para>
</sect2>
<sect2>
<title>Обновление вашей коллекции портов самый первый раз</title>
<para>Если вы хотите <quote>синхронизировать</quote> ваше дерево
портов в первый раз, вы должны использовать тэг, совпадающий с
вашей установленной версией &os;. Например, если вы установили
коллекцию портов во время установки &os; 5.3-RELEASE, то
следует использовать следующую строку:
<programlisting>ports-all tag=RELEASE_5_3_0</programlisting>
<command>cvsup</command> создаст файл извлечений для коллекции
портов. Теперь мы можем использовать тэг <quote>.</quote> для
последующего обновления дерева портов:
<programlisting>ports-all tag=.</programlisting>
Все последующие обновления будут обрабатываться гладко.</para>
<para>Если вы прочли тонкие замечания в этих разделах, то, наверное, вы
осознали потенциальные проблемы в процессе обновления исходных
текстов. Многие действительно сталкиваются с проблемами. Вас
предупредили. :-)</para>
</sect2>
</sect1>
</article>