Многие используют Subversion для хранения ревизий своих проектов. И он действительно сильно помогает при разработке проектов командой а не в одиночку.
Иногда полезно иметь рабочую копию, собранную из разных источников. К примеру, когда нужно чтобы некоторые рабочие подкаталоги соответствовали разным частям вашего или чужого хранилища. Безусловно, всё это можно сделать вручную — с помощью вызовов команды svn checkout создать рабочую копию с нужной структурой. Но, ели подобная структура требуется всем пользователям хранилища, каждому из них нужно будет повторить все эти вызовы.
На практике мне действительно пришлось использовать svn externals.
Если обяснить кратко и на примере, то это будет так: у нас есть проект. В нем кроме присущего проекту кода есть еще набор библиотек, которые общие для всех проектов. Но проект нам нужен как единый продукт, ведь так? Мы можем положить библиотеки в каждый проект, но тогда возникнет очень неудобная ситуация – вдруг понадобилось добавить вот эдакую фичу в эти библиотеки. Править во всех проектах совсем неудобно. Вот и получается что у нас в проекте директория lib (почему бы и нет?) должна при чекауте/экспорте вытягивать из другого репозитория все файлики. Но они не будут храниться вместе с каждым проектом при использовании externals.
Теперь на моем примере.
Есть у меня проект – doxie – и вот в нем есть пример, а есть само ядро. Чтобы их отделить я и воспользовался externals:
На директории с проектом (на корневой директории проекта) я добавил свойство
со значением
По этому пути хранится само ядро проекта.
После того как я (каюсь, через GUI – Eclipse+Subclipse) установил это свойство – делаю
, потом
- и зависимость втянулась в дерево проекта в папку Doxie.
Как раз то что и было нужно.
Интересная “рюшечка”.
А есть ли такая же возможность в CVS?
Vadim Voituk
August 14th, 2007
Чесслово, не знаю =)
dm
August 29th, 2007
в cvs есть CVSROOT/modules, в котором прописываются зависимости проекта
dimcha
September 5th, 2007
спасибо, буду знать!
dm
September 5th, 2007