diff options
Diffstat (limited to 'ru_RU.KOI8-R/articles/cvsup-advanced/article.sgml')
-rw-r--r-- | ru_RU.KOI8-R/articles/cvsup-advanced/article.sgml | 276 |
1 files changed, 276 insertions, 0 deletions
diff --git a/ru_RU.KOI8-R/articles/cvsup-advanced/article.sgml b/ru_RU.KOI8-R/articles/cvsup-advanced/article.sgml new file mode 100644 index 0000000000..a83680b529 --- /dev/null +++ b/ru_RU.KOI8-R/articles/cvsup-advanced/article.sgml @@ -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> |