[OpenBSD]

Анонимный CVS


Оглавление


Что такое анонимный CVS?

Анонимный CVS представляет собой метод поддержания локальных исходных кодов OpenBSD в актуальном состоянии с учетом изменений, сделанных в репозитории OpenBSD. Помимо использования последних разработок, также можно отслеживать патчи исправления ошибок, допущенных в релизе.

Основное отличие анонимного CVS от других методов обновления исходного кода в том, что он работает напрямую с центральным репозиторием исходных текстов или его зеркалом. То есть, вам предлагается полный набор CVS команд для обновления и объединения ваших изменений с другими изменениями исходных кодов, создания diff'ов, просмотра истории изменений и других запросов к центральному репозиторию.

В настоящее время проект OpenBSD имеет четыре активных и два исторических репозитория:

Подводя итоги, можно сказать, что настоящее преимущество при использовании Анонимного CVS заключается в "толерантной" системе управления исходными кодами - учете ваших изменений, сделанных в локальных текстах исходных кодов и, в тоже время, приложении всех усилий для обновления всего дерева ваших исходных кодов вместо того, чтобы предоставлять список скрытых проблем которые должны быть устранены перед продолжением.

Что такое CVS?

CVS - это система контроля версий, используемая для управления деревом исходных кодов OpenBSD. CVS использует центральный репозиторий для хранения всего исходного текста официальных выпусков (release) и его изменений, что позволяет разработчикам поддерживать локальные копии исходного кода со своими работающими изменениями. Существуют два уровня доступа к дереву исходных кодов:

Основное преимущество CVS - способность выполнять разумное слияние изменений в центральном репозитории с изменениями, которые вы внесли в вашу локальную копию. Это значит что, если вы внесете изменения в какой-нибудь модуль и выполните обновление, ваши изменения не будут утрачены, вместо этого CVS попытается объединить изменения из центрального репозитория с вашими изменениями в локальной копии.

В случае, если изменения не могут быть полностью объединены, CVS обеспечивает возможность "мягкого отката", отмечая изменения в локальной копии, сохраняет немодифицированную копию ваших изменений и продолжает обновление других запрошенных модулей.

Получение исходных текстов средств криптографии через cvs(1)

ВАЖНО: Здесь приведедены несколько замечаний, относящихся к программному обеспечению, предоставляющему средства криптографии, которые необходимо знать:

Подготовка к использованию анонимного CVS

Несмотря на то, что можно загрузить с Анонимного CVS сервера все дерево исходных кодов можно сэкономить много времени и трафика используя "предзагруженное" дерево исходных кодов с OpenBSD CD или FTP сервера. Это особенно актуально, если вы используете -стабильную версию (stable), отличающуюся некоторыми файлами от -release версии.

Для извлечения дерева исходных текстов с CD в /usr/src (предполагается, что CD примонтирован в /mnt) необходимо выполнить:

    # cd /usr/src
    # tar xzf /mnt/src.tar.gz
    # cd /usr
    # tar xzf /mnt/xenocara.tar.gz
    # tar xzf /mnt/ports.tar.gz
Исходные тексты, размещенные для загрузки на FTP серверах, разделены на два файла с целью уменьшения времени загрузки для желающих работать только с одной из частей дерева исходных текстов. Это файл sys.tar.gz, содержащий исходные коды используемые при сборке ядра, и src.tar.gz, который содержит остальные утилиты "пространства пользователя". В общем, скорее всего, вы захотите установить оба эти файла. Предполагая, что файлы src.tar.gz, sys.tar.gz и xenocara.tar.gz загружены и установлены в /usr:
    # cd /usr/src
    # tar xzf ../sys.tar.gz
    # tar xzf ../src.tar.gz
    # cd /usr
    # tar xzf xenocara.tar.gz
    # tar xzf ports.tar.gz

Не все пользователи захотят распаковывать все наборы файлов, но для синхронизации системы вам необходимо будет установить все.

Можно также использовать cvs(1) только для "проверки" репозитория исходных кодов. Это будет обсуждаться в следующем разделе.

После выполнения вышеприведенных действий каталог /usr/src станет местом, где будут должным образом работать все cvs(1) команды.

Использование CVS для получения и обновления дерева исходных кодов

CVS был разработан как простой способ получения и обновления ваших исходных текстов. Для начала вам необходимо решить будете ли вы отслеживать - текущую (current) или ветку патчей (stable). Текущее дерево исходных текстов содержит все изменения на текущий момент, тогда как ветка патчей включает в себя официальный релиз плюс патчи из errata. Получить дополнительную информацию об этих "предпочтениях" в OpenBSD можно здесь. Когда определитесь какое дерево исходных текстов использовать, необходимо выбрать Анонимный CVS сервер. Список этих серверов приведен ниже.

Выбрав Анонимный CVS сервер можно начинать использовать cvs. Если у вас есть CD можно начать с проверки CVS, расположенного на CD, получив исходные тексты для вашей системы с помощью метода, описанный ранее. Если диска с исходными текстами у вас нет под рукой, используйте метод, изложенный ниже.

Для использования портов, все практически аналогично:

В приведенных выше примерах опция -q будет полезна в том случае, если вы хотите уменьшить вывод результатов работы cvs на дисплей. Желающие видеть полный вывод cvs могут не использовать эту опцию.

Для создания diff для локально измененного модуля (в данном примере cd.c) и включения его в отчет об ошибке:

 
	# cd /usr
	# cvs diff -u src/sys/scsi/cd.c > /tmp/patch

Страница руководства cvs(1) (входящая в состав исходных файлов CVS) содержит много дополнительной информации о способах использования CVS.

Предупреждение: При использовании cvs необходимо убедиться в том, что вы находитесь в каталоге, являющемся корнем дерева исходных текстов либо в отдельном месте, например /tmp. Некоторые комманды, такие как get, могут создавать произвольную структуру подкаталогов в текущем каталоге с рекурсивным обновлением их содержимого.

Сервис анонимного cvs дает возможность начинающим разработчикам изучить CVS и принять непосредственное участие в процессе разработки перед получением "commit" доступа. Результатом демонстрации наличия необходимых навыков и хороших результатов работы является получение в последующем доступа разработчика. Также, предлагая патчи можно создать свои "diff" файлы что облегчит в последующем интерграцию.

Примеры использования cvs(1)

Примером использования анонимного cvs сервера может быть:

$ cd /tmp
$ cvs -d anoncvs@anoncvs.ca.openbsd.org:/cvs get src/sys/arch/sparc
    [получение файлов из репозитория на локальную машину]
$ cd src/sys/arch/sparc
$ cvs log locore.s
    [просмотр лога commit-ов для выбранного файла]
$ cvs diff -bc -r1.1 -r1.5 locore.s
    [просмотр изменений между версиями 1.1 и 1.5]

Доступные Анонимные CVS серверы

Примечание: Если данные о приведенных здесь серверах неточны или неверны, а также отсутствуют, свяжитесь пожалуйста с нами по адресу beck@openbsd.org

Можно также воспользоваться traceroute(8) для определения сервера, расположенного ближе к вам. При возникновении проблем с сервером свяжитесь с обслуживающим его персоналом (maintainters).

В случае, если ваша локальная политика безопасности запрещает исходящие соединения по ssh порту по умолчанию (порт 22), некоторые серверы CVS разрешают подключаться на альтернативный порт (обычно 2022). Об этом указано в списке серверов выше. Для использования другого порта настройте ваш ssh-клиент добавив значение "Host" в $HOME/.ssh/config, например:

       Host anoncvs.ca.openbsd.org
           Port 2022

Установка зеркала анонимного CVS

Если вы хотите установить новое зеркало анонимного cvs сервера и сделать его общедоступным, пожалуйста свяжитесь с сопровождающим (maintainer) anoncvs. Размещение анонимного cvs сервера обычно требует около 5 Гб дискового пространства (и будет расти!) и использования до 32 Мб области подкачки (swap) на одного пользователя сервера (предполагается, что пользователь будет производить большие операции; в то же время, меньшие действия будут использовать меньше ресурсов; анонимный cvs больше использует систему чем ftp). Кроме того, анонимный CVS сервер должен иметь отличное сетевое соединение для доступа с той территории, где планируется его использование. Порядок установки анонимного cvs описывается в этом документе.

Заключительные моменты

После обновления вашего дерева исходных текстов и перед началом сборки вы должны прочитать комментарии, находящиеся вначале файла /usr/src/Makefile. Также, по-возможности, вы должны собрать новое ядро перед выполнением make build. В некоторых случаях может оказаться необходимым пересобрать и установить конфигурационные утилиты перед сборкой ядра. При сбое выполнения config GENERIC дело может быть именно в этом.

Необходимо также отметить, что переход с официальной версии на текущую версию дерева исходных тексктов с пересборкой исходных текстов может быть затруднено из-за зависимостей, которые не всегда очевидны. Поэтому, предполагается, что вы вначале установите последний снимок файловой системы (snapshot) перед тем, как пытаться установить дерево из исходных тестов.


OpenBSD www@openbsd.org
$OpenBSD: anoncvs.html,v 1.28 2013/01/12 07:47:15 ajacoutot Exp $