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 @@ + + + +%articles.ent; +]> + +
+ + Тонкие вопросы работы CVSup + + + + Salvo + Bartolotta + + +
bartequi@neomedia.it
+
+
+
+ + $FreeBSD$ + + + &tm-attrib.freebsd; + &tm-attrib.cvsup; + &tm-attrib.general; + + + + В этой статье предполагается понимание основ + работы CVSup. В ней описываются некоторые + тонкие вопросы, связанные с синхронизацией исходных текстов при помощи + CVSup, описаны эффективные решения для проблемы + потерянных файлов, а также особые случаи обновления исходных текстов; вопросы, + которые, скорее всего, вызывают неожиданно возникающие проблемы. + +
+ + + Обзор + + Этот документ является плодом попыток автора полностью понять + преимущества CVSup & обновления + исходного кода. :-) Хотя автор прилагал все усилия, чтобы сделать + эти страницы максимально информативными и корректными, он всего лишь + человек и мог сделать все типы опечаток, ошибок и так далее. Он будет + очень признателен за любые комментарии и/или пожелания, которые вы пришлете + ему по электронной почте на адрес bartequi@neomedia.it. + + + + Введение + + Если вы посещали сайт Джона + Полстра (John Polstra) и прочли его + FAQ, то вы могли отметить вопросы 12 & 13. + + При обновлении любого набора исходных текстов (например, + /usr/ports), &man.cvsup.1; использует + соответствующий файл извлечений для того, чтобы выполнять процесс + обновления самым правильным и эффективным способом. В этом примере + (/usr/ports), соответствующим файлом извлечений + является /usr/sup/ports-all/checkouts.cvs:. если + основным каталогом является /usr. + + Файл извлечений содержит информацию о текущем состоянии ваших + исходных текстов — нечто вроде фотографии. Эта + значащая информация позволяет cvsup сгружать + обновления наиболее эффективно. К тому же, и, может быть, более + важно то, что это позволяет cvsup правильно + управлять вашими исходными текстами, удаляя локальные файлы, которых + больше нет в хранилище, таким образом не позволяя появляться в вашей + системе забытым файлам. Действительно, без файла + извлечений cvsup не + будет знать, из каких файлов состоит ваш набор (подробности смотрите в + справочной системе по &man.cvsup.1; относительно метода откатки); в + результате он не может удалить в вашей системе те файлы, которых больше + нет в хранилище. Они (удаленные файлы) будут оставаться в системе, и + могут вызвать некоторые ошибки при построении или другие проблемы. К + примеру, появление этой проблемы весьма вероятно, если вы первый раз + обновили ваш набор портов через несколько недель после получения ваших + установочных компакт-дисков. + + По этой причине рекомендуется, что вы последуете двухшаговой + процедуре, описанной в CVSup FAQ (смотрите Q12, Q13); в + последующих разделах вам будут даны конкретные примеры, интересные и + поучительные. + + + + Полезный скрипт на языке python: <command>cvsupchk</command> + + Как альтернативу для проверки целостности ваших исходных текстов вы + можете использовать скрипт cvsupchk, написанный на языке + python; этот скрипт в настоящее время находится в + /usr/ports/net/cvsup/work/cvsup-16.1/contrib/cvsupchk, + вместе с хорошим README. Предварительные + требования: + + + + /usr/ports/net/cvsup &prompt.root; + make extract + + + + python (также находится в коллекции портов :-)) + + + + Файл извлечений для вашего набора исходных текстов. + + + + Если вы обновляете ваши исходные тексты самый первый раз, конечно же, + у вас нет файла извлечений. После установки python и обновления ваших + исходных текстов (к примеру, /usr/ports), вы можете + проверить их так: + + &prompt.user; /path/to/cvsupchk -d /usr -c /usr/sup/ports-all/checkouts.cvs:. | more + + Если вы хотите проверить ваши исходные тексты RELENG_4: + + &prompt.user; /path/to/cvsupchk -d /usr -c /usr/sup/src-all/checkouts.cvs:RELENG_4 | more + + В каждом случае cvsupchk будет проверять ваши исходные + тексты на целостность, используя информацию, находящуюся в соответствующем файле + извлечений. Сообщения о таких аномалиях, как присутствие удаленных + файлов (так называемых забытых файлов), отсутствие извлеченных файлов, + наличие лишних файлов RCS и мертвых каталогов будут выдаваться на + стандартный вывод. + + В следующем разделе мы дадим важные, типовые примеры обновления + исходных текстов; эти примеры покажут вам роль файлов извлечений и + опасности небрежного управления исходными текстами. + + + + Примеры более тонкого управления исходными текстами + + + Как безопасно изменять тэги при обновлении +<literal>src-all</literal> + + Если в вашем sup-файле вы задали, к + примеру, tag=A, то cvsup + создаст файл извлечений с именем checkouts.cvs:A: + например, если tag=RELENG_4, то создаваемый файл + извлечений называется checkouts.cvs:RELENG_4. Этот файл + будет использоваться для получения и/или сохранения информации, + идентифицирующей ваши исходные тексты 4-STABLE. + + При отслеживании src-all, если вы хотите перейти + от tag=A к tag=B (не имеет + значения, больше или меньше A, чем B), и ваш файл извлечений + называется checkouts.cvs:A, то + должны быть выполнены следующие действия: + + + + &prompt.root; mv checkouts.cvs:A + checkouts.cvs:B + (Это даст на последующем шаге корректный файл извлечений) + + + + создайте sup-файл, со строкой наборов, которая содержит: + src-all tag=B + + + + при помощи cvsup выполните обновление ваших исходных текстов + с новым sup-файлом. + + + + cvsup будет искать checkouts.cvs:B — так + как целью является B, то cvsup для корректного управления + вашими исходными текстами будет использовать информацию, содержащуюся + здесь. + + Выигрыши: + + + + с исходными текстами работа производится корректно (в + частности, не остается забытых файлов) + + + + на сервер ложится меньшая нагрузка, так как cvsup работает + самым эффективным образом. + + + + К примеру, A=RELENG_4, B=. Точка + в B=. означает -CURRENT. Это весьма типичное обновление, от + 4-STABLE к -CURRENT. Хотя понятно, как + состарить ваши исходные тексты (к примеру, от -CURRENT к -STABLE), + понижение версии системы является совсем другим вопросом. Вам + НАСТОЯТЕЛЬНО не рекомендуется выполнять такое действие, если только вы + точно не понимаете, что делаете. + + + + Обновление в одной и той же метке с разными датами + + Если вы хотите перейти от tag=A к + tag=A с отличающейся + GMT-датой (скажем, date=D), то выполняйте следующее: + + + + напишите sup-файл с такой строкой, определяющей набор: + src-all tag=A date=D + + + + обновите ваши исходные тексты с помощью нового sup-файла + + + + Не имеет значения, предшествует ли новая дата времени последней + операции синхронизации с tag=A, или нет. Например, для + того, чтобы задать дату August 27, 2000, 10:00:00 GMT, вы пишете + строку: + + src-all tag=RELENG_4 date=2000.08.27.10.00.00 + + + Формат даты строг. Вы задаете все компоненты даты: столетие (20, + то есть 21 век. должен быть указан, когда как 19, + прошлое столетие, может быть опущено), год, месяц, день, час, минуты, + секунды — как показано в примере выше. За дополнительной информацией + обратитесь к странице справочной системы по &man.cvsup.1;. + + + Вне зависимости от того, задана или нет дата, файл извлечений + называется checkouts.cvs:A (например, + checkouts.cvs:RELENG_4). В итоге не нужны + какие-то действия для возврата к предыдущему состоянию: вы изменяете + дату в sup-файле, и запускаете + cvsup снова. + + + + Обновление вашей коллекции портов самый первый раз + + Если вы хотите синхронизировать ваше дерево + портов в первый раз, вы должны использовать тэг, совпадающий с + вашей установленной версией &os;. Например, если вы установили + коллекцию портов во время установки &os; 5.3-RELEASE, то + следует использовать следующую строку: + ports-all tag=RELEASE_5_3_0 + cvsup создаст файл извлечений для коллекции + портов. Теперь мы можем использовать тэг . для + последующего обновления дерева портов: + ports-all tag=. + Все последующие обновления будут обрабатываться гладко. + + Если вы прочли тонкие замечания в этих разделах, то, наверное, вы + осознали потенциальные проблемы в процессе обновления исходных + текстов. Многие действительно сталкиваются с проблемами. Вас + предупредили. :-) + + +