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Ваши длополнения?
ЗЫ, оставить тут или оформить как статью?
