По состоянию на июль 2012 года FreeBSD использует Subversion в качестве основной системы контроля версий для хранения всего исходного кода FreeBSD, документации и Коллекции Портов.
Subversion в основном
является инструментом разработчика. Большинству
пользователей следует использовать
freebsd-update
(Раздел 21.2, <<Обновление FreeBSD>>) для
обновления основной системы FreeBSD и
portsnap
(Раздел 5.6, <<Использование Коллекции Портов>>) для обновления Коллекции Портов
FreeBSD.
В этом разделе демонстрируется, как устанавливать Subversion в системе FreeBSD и затем использовать его для создания локальной копии репозитория FreeBSD. Здесь приводится список доступных зеркал Subversion для FreeBSD, а также ссылки на дополнительную информацию по использованию Subversion.
Subversion должен быть установлен до его использования для получения содержимого любого из репозиториев. Если уже имеется копия дерева портов, Subversion можно установить следующим образом:
#
cd /usr/ports/devel/subversion
#
make install clean
Если дерево портов недоступно, Subversion можно установить из пакета:
#
pkg_add -r subversion
Если для управления пакетов используется pkgng, то Subversion можно установить с его помощью:
#
pkg install devel/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
Все зеркала покрывают все репозитории.
Главный сервер 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
.
Для получения другой информации по использованию Subversion смотрите <<книгу Subversion>> по названию Version Control with Subversion или Документацию Subversion.
Этот, и другие документы, могут быть скачаны с https://download.freebsd.org/ftp/doc/.
По вопросам, связанным с FreeBSD, прочитайте
документацию прежде чем писать в
<questions@FreeBSD.org>.
По вопросам, связанным с этой документацией, пишите в рассылку
<doc@FreeBSD.org>.