SVNВнешние зависимости SVN

Данной записью открываю тег заметки, по которому буду описывать некие элементарные (или базовые) вещи скорее для себя, так что многие тут ничего волшебного не увидят.

С системой управления версий SVN работаю уже года полтора и, честно говоря, уже не представляю, как программировал до этого, но вот на внешние зависимости в svn наткнулся недавно. Суть в том, что файлы в одном каталоге подтягиваются системой из другого каталога или вообще из другого репозитория.

В частности, можно таким образом заполнять папку library, содержащую внешние библиотеки. Ниже пример с зендом (ради ссылки, собственно, весь пост и городится)

1
2
~$ svn propedit svn:externals library
http://framework.zend.com/svn/framework/standard/tags/release-1.12.0/library/Zend Zend

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

Кроме всего прочего, можно явно указать номера ревизий для внешних зависимостей. Это позволит избежать сюрпризов со стороны внешних хранилищ, когда после очередного обновления проект ломается, ведь код на внешних хранилищах, как правило, вам не подконтролен. Делается это приблизительно так.

1
2
~$ svn propedit svn:externals library
http://framework.zend.com/svn/framework/standard/tags/release-1.12.0/library/Zend@4321 Zend

P.S. Есть, конечно, и более новомодные штуки, вроде composer, но и до него руки дойдут уже скоро :)