Дано:
- наш проект (все-равно какой) в SVN репозитории;
- внешняя библиотека (нашей или сторонней разработки).
Задача:
- прозрачно для разработчика иметь up to date копию библиотеки в проекте.
Решение:
Пусть для определенности библиотеки у нас хранятся в директории lib/vendor относительно корня проекта. Выполняем команды
$ cd lib/vendor
$ svn propedit svn:externals .
$ svn propedit svn:externals .
И в открывшемся редакторе (у меня vim) добавляем следующую строку:
dirname svn://url.to.the/library/repository
Здесь:
- dirname это имя директории в которую будет развернута библиотека
- svn://url.to.the/library/repository – соответственно URL репозитория (http, https, svn)
Сохраняем изменения и фиксируем их в репозитории. После этого можно выполнять
svn up
Будет создана директория lib/vendor/dirname и в нее развернут код из указанного нами URL. Теперь при обновлении проекта будет обновляться и билиотека.
Хинт: если при выполнении svn propedit вылетает ошибка вида
svn: The EDITOR, SVN_EDITOR or VISUAL environment variable or ‘editor-cmd’ run-time configuration option is empty or consists solely of whitespace. Expected a shell command.
Значит у вас не установлена переменная, указывающая какой редактор должен использовать svn. Смотрим где у нас vim и задаем требуемое значение переменной:
$ which vim
/usr/bin/vim
$ export SVN_EDITOR=/usr/bin/vim
/usr/bin/vim
$ export SVN_EDITOR=/usr/bin/vim