Initial import, synchronized with English 1.14
Obtained from: The FreeBSD Russian Documentation Project
This commit is contained in:
parent
4915e4f194
commit
9d41e96342
Notes:
svn2git
2020-12-08 03:00:23 +00:00
svn path=/head/; revision=24852
1 changed files with 276 additions and 0 deletions
276
ru_RU.KOI8-R/articles/cvsup-advanced/article.sgml
Normal file
276
ru_RU.KOI8-R/articles/cvsup-advanced/article.sgml
Normal file
|
@ -0,0 +1,276 @@
|
||||||
|
<!--
|
||||||
|
The FreeBSD Russian Documentation Project
|
||||||
|
|
||||||
|
$FreeBSDru: frdp/doc/ru_RU.KOI8-R/articles/cvsup-advanced/article.sgml,v 1.5 2005/06/12 05:18:06 gad Exp $
|
||||||
|
|
||||||
|
Original revision: 1.14
|
||||||
|
-->
|
||||||
|
|
||||||
|
<!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>Тонкие вопросы работы CVSup</title>
|
||||||
|
|
||||||
|
<authorgroup>
|
||||||
|
<author>
|
||||||
|
<firstname>Salvo</firstname>
|
||||||
|
<surname>Bartolotta</surname>
|
||||||
|
|
||||||
|
<affiliation>
|
||||||
|
<address><email>bartequi@neomedia.it</email></address>
|
||||||
|
</affiliation>
|
||||||
|
</author>
|
||||||
|
</authorgroup>
|
||||||
|
|
||||||
|
<pubdate>$FreeBSD$</pubdate>
|
||||||
|
|
||||||
|
<legalnotice id="trademarks" role="trademarks">
|
||||||
|
&tm-attrib.freebsd;
|
||||||
|
&tm-attrib.cvsup;
|
||||||
|
&tm-attrib.general;
|
||||||
|
</legalnotice>
|
||||||
|
|
||||||
|
<abstract>
|
||||||
|
<para>В этой статье предполагается понимание основ
|
||||||
|
работы <application>CVSup</application>. В ней описываются некоторые
|
||||||
|
тонкие вопросы, связанные с синхронизацией исходных текстов при помощи
|
||||||
|
<application>CVSup</application>, описаны эффективные решения для проблемы
|
||||||
|
потерянных файлов, а также особые случаи обновления исходных текстов; вопросы,
|
||||||
|
которые, скорее всего, вызывают неожиданно возникающие проблемы.</para>
|
||||||
|
</abstract>
|
||||||
|
</articleinfo>
|
||||||
|
|
||||||
|
<sect1 id="preface">
|
||||||
|
<title>Обзор</title>
|
||||||
|
|
||||||
|
<para>Этот документ является плодом попыток автора полностью понять
|
||||||
|
преимущества <application>CVSup</application> & обновления
|
||||||
|
исходного кода. :-) Хотя автор прилагал все усилия, чтобы сделать
|
||||||
|
эти страницы максимально информативными и корректными, он всего лишь
|
||||||
|
человек и мог сделать все типы опечаток, ошибок и так далее. Он будет
|
||||||
|
очень признателен за любые комментарии и/или пожелания, которые вы пришлете
|
||||||
|
ему по электронной почте на адрес <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 & 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>Файл извлечений содержит информацию о текущем состоянии ваших
|
||||||
|
исходных текстов — нечто вроде <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> — так
|
||||||
|
как целью является 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>,
|
||||||
|
прошлое столетие, может быть опущено), год, месяц, день, час, минуты,
|
||||||
|
секунды — как показано в примере выше. За дополнительной информацией
|
||||||
|
обратитесь к странице справочной системы по &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>
|
Loading…
Reference in a new issue