Управление сторонними библиотеками в 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
.