понедельник, 28 января 2008 г.

Управление сторонними библиотеками в Subversion.

В этом блоге я ни разу не постил переводы. Повода не было. Но вот в RSS пробежала статья, описывающая правильное управление внешними библиотеками в Subversion. Она мне настолько понравилась, что я решил опубликовать её вольный перевод. К сожалению, времени потестировать рецепт у меня не было, поэтому буду переводить "as is". Если заметите какие-нибудь неточности, отпишите в комментах, исправлю.

Subversion Externals

В Subversion существует удобный механизм управления внешними библиотеками, который позволяет автоматически экспортировать код из других репозиториев в рабочий проект. Это svn:externals. Этот пост создан в качестве напоминания самому себе, о том, как это реализовать. Потому что каждый раз забывая, я вынужден гуглить. А решение, к которому я прихожу каждый раз одно и то же.

Для начала, предположим, что у нас в репозитории есть папка lib/, и мы хотим положить в неё код из папок library/ и incubator/library/ проекта Zend Framework. Конечная структура папок выглядит следующим образом:


myApplication/
    lib/
        incubator/Zend/
        Zend/

Для этого необходимы следующие заклинания:


$ cd lib/
$ export SVN_EDITOR=vim
$ svn propedit svn:externals .

(Разумеется, стоит заменить vim на редактор, привычный Вам)

В запустившемся Vim'е (emacs'е, nano) необходимы следующие строки:


incubator http://framework.zend.com/svn/framework/branch/release-1.0/incubator/library
Zend http://framework.zend.com/svn/framework/branch/release-1.0/library/Zend

Стоит отметить, отметить, что release-1.0 это текущий релиз ZF, а следующий будет release-1.5. Если вам необходима текущая версия ZF 1.5, то это будет release-1.5PR

Сохраняемся, выходим из редактора и видим следующее сообщение:

Set new value for property 'svn:externals' on '.'

Вот и всё! Не забываем закоммититься и теперь для поддержания ZF в состоянии актуальности не забываем запускать svn up.

5 комментариев:

Анонимный комментирует...

Всё хорошо до тех пор пока не потребуется в этой сторонней библиотеке что-то исправить (а случай вовсе не редкий). И сразу наступает прозрение...

Поэтом единственное достойное применение для svn:external - просто собирать "ссылки" на библиотеки.

А для решения таких ситуаций очень подходит piston

Анонимный комментирует...

да ладно уж
не так уж все и плохо
заходишь в папку, которая была вытянута через svn:externals, и в ней говоришь svn commit.
ничего сложного

Анонимный комментирует...

У вас похоже есть write-доступ к репозитариям всех используемых библиотек.
Уважаю!

Анонимный комментирует...

а ведь и вправду - ко все нашим библиотекам есть доступ на запись
не подумал сразу, извиняюсь :)

Анонимный комментирует...

Welche Sprüche ich auch lesenwert finde sind [url=http://www.dieversteigerungskobolde.de/sprueche.php]Sprüche zum Nachdenken[/url].
Oder kennt Ihr noch andere Seiten mit Liebessprüchen?
Ich freue mich über jeden Hinweis.