Posterous theme by Cory Watilo

Filed under: Doxie

svn externals howto

Многие используют Subversion для хранения ревизий своих проектов. И он действительно сильно помогает при разработке проектов командой а не в одиночку. Из первоситочника:
Иногда полезно иметь рабочую копию, собранную из разных источников. К примеру, когда нужно чтобы некоторые рабочие подкаталоги соответствовали разным частям вашего или чужого хранилища. Безусловно, всё это можно сделать вручную — с помощью вызовов команды svn checkout создать рабочую копию с нужной структурой. Но, ели подобная структура требуется всем пользователям хранилища, каждому из них нужно будет повторить все эти вызовы.
На практике мне действительно пришлось использовать svn externals. Если обяснить кратко и на примере, то это будет так: у нас есть проект. В нем кроме присущего проекту кода есть еще набор библиотек, которые общие для всех проектов. Но проект нам нужен как единый продукт, ведь так? Мы можем положить библиотеки в каждый проект, но тогда возникнет очень неудобная ситуация - вдруг понадобилось добавить вот эдакую фичу в эти библиотеки. Править во всех проектах совсем неудобно. Вот и получается что у нас в проекте директория lib (почему бы и нет?) должна при чекауте/экспорте вытягивать из другого репозитория все файлики. Но они не будут храниться вместе с каждым проектом при использовании externals. Теперь на моем примере. Есть у меня проект - doxie - и вот в нем есть пример, а есть само ядро. Чтобы их отделить я и воспользовался externals: На директории с проектом (на корневой директории проекта) я добавил свойство svn:externals со значением Doxie https://doxie.svn.sourceforge.net/svnroot/doxie/trunk По этому пути хранится само ядро проекта. После того как я (каюсь, через GUI - Eclipse+Subclipse) установил это свойство - делаю svn commit, потом svn up - и зависимость втянулась в дерево проекта в папку Doxie. Как раз то что и было нужно.