Subversion (также известная как «SVN») — свободная централизованная система управления версиями, официально выпущенная в 2004 году компанией CollabNet Inc.
wikipedia(c)
Русским языком SVN - это некая база для хранения файлов с историей их изменений и комментариями. Основная целевая аудитория - разработчики, которые используют ее для хранения исходных текстов программ и истории изменения.
SVN можно условно разделить на клиентскую часть и серверную. Серверная - локально хранит исходники, историю и т.п. Клиент же только получает необходимые файлы с сервера.
Для рядового обновления нескольких серверов, я думаю, нет смысла держать полную копию у себя (ставить серверную часть). Можно просто ограничиться скачиванием необходимых файлов.
Установка SVN сервера с использованием уже имеющейся базы. Для настройки сервера используется утилита svnsync.
1. Качаем SVN базу с
Код: Выделить всё
#ftp://ftp.freebsd.org/pub/FreeBSD/development/subversion/
2. Распаковываем ее в папку, где будет лежать база. Назовем ее, наример, /var/svn/
Код: Выделить всё
#mkdir /var/svn/
#cd /var/svn/
#tar -vxf svnmirror-ports-r301235.tar.xz
Код: Выделить всё
#svnsync sync file:////var/svn/ports
Код: Выделить всё
#svnsync info file:////storage/local_pool/svn/ports
Source URL: svn://svn.freebsd.org/ports
Source Repository UUID: 35697150-7ecd-e111-bb59-0022644237b5
Last Merged Revision: 315795
Второе - более простой вариант. Добавляем в /etc/rc.conf. Флаг -R переключает сервер в режим "только для чтения", т.к. клиент сможет получить файлы, но не сможет их менять на сервере несмотря на настройки в конфигурационный файлах (base/conf/svnserve.conf, например).
Код: Выделить всё
svnserve_enable="YES"
svnserve_flags="-d -R --log-file=/var/log/svn.log --listen-port=3690"
svnserve_data="/var/svn"
svnserve_user="svn"
svnserve_group="svn"
Код: Выделить всё
#/usr/local/etc/rc.d/svnserve start
В данном примере используется локальный сервер SVN. Если установка локального сервера не проводилась, следует заменить его адрес на адрес публичного сервера.
Скачиваем коллекцию портов. Есть два варианта получить порты. Первый - порты и историю коммитов (изменений) или просто коллекцию портов. Первый вариант "тяжелее" примерно на 500Мб, но зато позволяет "откатываться" до предыдущих версий.
Первый вариант. Обновляем все, включая историю версий
Код: Выделить всё
#svn checkout svn://127.0.0.1/ports/head /usr/ports
Код: Выделить всё
#svn export --force svn://127.0.0.1/ports/head /usr/ports/
1. Смотрим изменения через svn. Последние 5 изменений.
Код: Выделить всё
#svn log --limit=5 /usr/ports/lang/php5/
------------------------------------------------------------------------
r314716 | ale | 2013-03-20 12:15:37 +0400 (ср, 20 мар 2013) | 5 lines
Update to 5.4.13 release.
PR: ports/177082
Submitted by: Rustem Alimov <rustem.alimov@gmail.com>
------------------------------------------------------------------------
r313958 | ale | 2013-03-12 14:33:04 +0400 (вт, 12 мар 2013) | 5 lines
Suhosin will never reappear, remove commented out code.
Fix plist when CLI is not selected [1].
Submitted by: Gergely CZUCZY <gergely.czuczy@harmless.hu> [1]
------------------------------------------------------------------------
r312912 | ale | 2013-02-25 14:30:40 +0400 (пн, 25 фев 2013) | 2 lines
Update to 5.4.12 release.
------------------------------------------------------------------------
r310812 | ale | 2013-01-22 12:20:05 +0400 (вт, 22 янв 2013) | 2 lines
Update to 5.4.11 release.
------------------------------------------------------------------------
r309326 | ale | 2012-12-21 01:15:05 +0400 (пт, 21 дек 2012) | 2 lines
Update to 5.4.10 release.
-------------------------------------------------------
2. Например, нам надо поставить порт php 5.4.10. Ему соответствует r309326. Синхронизируем.
Код: Выделить всё
#svn up -r 309326 /usr/ports/lang/php5/
Смотрим информацию о каталоге.
Код: Выделить всё
#svn info /usr/ports/lang/php5
Path: /usr/ports/lang/php5
Working Copy Root Path: /usr/ports
URL: svn://127.0.0.1/ports/head/lang/php5
Repository Root: svn://127.0.0.1/ports
Repository UUID: 35697150-7ecd-e111-bb59-0022644237b5
Revision: 309326
Node Kind: directory
Schedule: normal
Last Changed Author: ale
Last Changed Rev: 309326
Last Changed Date: 2012-12-21 01:15:05 +0400 (пт, 21 дек 2012)
Код: Выделить всё
#cat /usr/ports/lang/php5/distinfo
SHA256 (php-5.4.10.tar.bz2) = c5bffda2154aedd9851c1e9b7da66f6c44c199716bd202054dd5d4a4f5f997e4
Смотрим отличия между r309326 и текущей версией (HEAD)
Код: Выделить всё
#svn diff -r 309326:HEAD /usr/ports/lang/php5/Makefile | grep PORTVERSION
Ваши длополнения?
ЗЫ, оставить тут или оформить как статью?