A.4. Использование Subversion

A.4.1. Введение

По состоянию на июль 2012 года FreeBSD использует Subversion в качестве основной системы контроля версий для хранения всего исходного кода FreeBSD, документации и Коллекции Портов.

Примечание:

Subversion в основном является инструментом разработчика. Большинству пользователей следует использовать freebsd-update (Раздел 21.2, <<Обновление FreeBSD>>) для обновления основной системы FreeBSD и portsnap (Раздел 5.6, <<Использование Коллекции Портов>>) для обновления Коллекции Портов FreeBSD.

В этом разделе демонстрируется, как устанавливать Subversion в системе FreeBSD и затем использовать его для создания локальной копии репозитория FreeBSD. Здесь приводится список доступных зеркал Subversion для FreeBSD, а также ссылки на дополнительную информацию по использованию Subversion.

A.4.2. Установка

Subversion должен быть установлен до его использования для получения содержимого любого из репозиториев. Если уже имеется копия дерева портов, Subversion можно установить следующим образом:

# cd /usr/ports/devel/subversion
# make install clean

Если дерево портов недоступно, Subversion можно установить из пакета:

# pkg_add -r subversion

Если для управления пакетов используется pkgng, то Subversion можно установить с его помощью:

# pkg install devel/subversion

A.4.3. Работа с Subversion

Команда svn используется для извлечения чистой копии исходных кодов в локальный каталог. Файлы в этом каталоге называются локальной рабочей копией.

Предупреждение:

Если локальный каталог уже существует, но не был создан с помощью svn, переименуйте его или удалите перед загрузкой. Загрузка в существующий не-svn каталог может вызвать конфликты между существующими файлами и получаемыми из репозитория.

Subversion для обозначения репозитория использует URL, которые имеют вид протокол://имя/путь. Зеркала могут поддерживать различные протоколы как указано ниже. Первый компонент пути обозначает используемый репозиторий. Существует три различных репозитория: base для исходного кода основной системы FreeBSD, ports для Коллекции Портов и doc для документации. Например, URL svn://svn0.us-east.FreeBSD.org/ports/head/ указывает на главную ветвь репозитория портов на зеркале svn0.us-east.FreeBSD.org с использованием протокола svn.

Загрузка из данного репозитория выполняется следующей командой:

# svn checkout svn-mirror/repository/branch lwcdir

где:

  • svn-mirror - URL для одного из сайтов зеркала Subversion.

  • repository - один из репозиториев проекта, т.е. base, ports или doc.

  • branch зависит от используемого репозитория. ports и doc в основном обновляются в ветви head, в то время как base содержит последнюю версию -CURRENT в head и соответственно последние версии ветви -STABLE в stable/8 (для 8.x), stable/9 (9.x) и stable/10 (10.x).

  • lwcdir - каталог для размещения содержимого указанной ветви. Обычно это /usr/ports для ports, /usr/src для base и /usr/doc для doc.

В этом примере загружается Коллекция Портов с западного репозитория США с использованием протокола HTTPS и размещением локальной рабочей копии в /usr/ports. Если /usr/ports уже присутствует, но не был создан с помощью svn, не забудьте его переименовать или удалить перед загрузкой.

# svn checkout https://svn0.us-west.FreeBSD.org/ports/head /usr/ports

Поскольку на первоначальном этапе с удалённого репозитория загружается вся ветвь целиком, на это может уйти некоторое время. Пожалуйста, будьте терпеливы.

После первоначальной загрузки локальную рабочую копию можно обновить:

# svn update lwcdir

Для обновления /usr/ports, созданного в вышеприведённом примере, используйте:

# svn update /usr/ports

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

Альтернативный способ обновления локальной рабочей копии после загрузки обеспечивается в Makefile в каталогах /usr/ports, /usr/src и /usr/doc. Используйте цель update с заданной переменной SVN_UPDATE. Пример для обновления /usr/src:

# cd /usr/src
# make update SVN_UPDATE=yes

A.4.4. Сайты зеркала Subversion

Все зеркала покрывают все репозитории.

Главный сервер Subversion FreeBSD svn.FreeBSD.org является общедоступным для чтения. Это может измениться в будущем, поэтому пользователям рекомендуется использовать одно из официальных зеркал. Для просмотра репозиториев Subversion FreeBSD через браузер используйте http://svnweb.FreeBSD.org/.

Примечание:

Сеть зеркал Subversion FreeBSD находится на раннем этапе развития и скорее всего будет меняться. Не полагайтесь на неизменность этого списка. В частности, серверные сертификаты SSL скорее всего изменятся.

НазваниеПротоколыМестоположениеSSL Fingerprint
svn0.us-west.FreeBSD.orgsvn, http, httpsСША, КалифорнияSHA1 1C:BD:85:95:11:9F:EB:75:A5:4B:C8:A3:FE:08:E4:02:73:06:1E:61
svn0.us-east.FreeBSD.orgsvn, http, https, rsyncСша, Нью ДжерсиSHA1 1C:BD:85:95:11:9F:EB:75:A5:4B:C8:A3:FE:08:E4:02:73:06:1E:61
svn0.eu.FreeBSD.orgsvn, http, https, rsyncВеликобританияSHA1 39:B0:53:35:CE:60:C7:BB:00:54:96:96:71:10:94:BB:CE:1C:07:A7
svn0.ru.FreeBSD.orgsvn, http, https, rsyncРоссия, МоскваSHA1 F6:44:AA:B9:03:89:0E:3E:8C:4D:4D:14:F0:27:E6:C7:C1:8B:17:C5

Предпочтительным протоколом является HTTPS, который обеспечивает защиту от других компьютеров, маскирующихся под зеркало FreeBSD (известно как атака <<человек посредине>>), и прочих, пытающихся послать плохое содержимое конечному пользователю.

При первом соединении с зеркалом по HTTPS пользователю будет предложено проверить fingerprint (отпечаток) сервера:

Error validating server certificate for 'https://svn0.us-west.freebsd.org:443':
 - The certificate is not issued by a trusted authority. Use the
   fingerprint to validate the certificate manually!
 - The certificate hostname does not match.
Certificate information:
 - Hostname: svnmir.ysv.FreeBSD.org
 - Valid: from Jul 29 22:01:21 2013 GMT until Dec 13 22:01:21 2040 GMT
 - Issuer: clusteradm, FreeBSD.org, (null), CA, US (clusteradm@FreeBSD.org)
 - Fingerprint: 1C:BD:85:95:11:9F:EB:75:A5:4B:C8:A3:FE:08:E4:02:73:06:1E:61
(R)eject, accept (t)emporarily or accept (p)ermanently?

Сравните отпечаток с вышеуказанными в таблице. Если отпечаток совпадает, сертификат безопасности сервера можно принять на временной или постоянной основе. Временный сертификат действует до конца сессии с сервером, и при следующем соединении этап верификации будет повторён. Постоянное принятие сертификата сохраняет параметры аутентификации в ~/.subversion/auth/, и пользователю не придётся проверять отпечаток снова до истечения сертификата.

Если https не получается использовать из-за фаервола или иных проблем, svn - следующий выбор с чуть более быстрой передачей. Если ни один из них не может быть использован, используйте http.

A.4.5. Дополнительная информация

Для получения другой информации по использованию Subversion смотрите <<книгу Subversion>> по названию Version Control with Subversion или Документацию Subversion.

Этот, и другие документы, могут быть скачаны с http://ftp.FreeBSD.org/pub/FreeBSD/doc/.

По вопросам, связанным с FreeBSD, прочитайте документацию прежде чем писать в <questions@FreeBSD.org>.

По вопросам, связанным с этой документацией, пишите в рассылку <doc@FreeBSD.org>.