A.4. Использование Subversion
Пред. | Приложение A. Получение FreeBSD | След.

## 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.org` | `svn`, `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.org` | `svn`, `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.org` | `svn`, `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.org` | `svn`, `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.

Пред. | Наверх | След.
A.3. Использование CTM | Начало | A.5. Использование rsync

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

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