Доброго всем времени суток!
Я сейчас изучаю возможность перехода на Subversion, и возникли некоторые вопросы связанные с правильной структурой репозитория.
На данный момент мы параллельно разрабатываем несколько приложений. Для примера пусть будут App1, App2 и App3. Все приложения используют некоторые общие модули (или библиотеки). Для примера пусть все три приложения используют некую CoreLib. Проблема в том, что приложения App1 и App2 используют CoreLib версии 1, а приложение App3 использует CoreLib версии 2. При этом конкретный разработчик должен иметь возможность одновременно править ошибки во всех приложениях. Т.е. у него на машине должны быть все приложения с соответствующими версиями CoreLib. Я думаю, что это достаточно типовая ситуация при разработке.
Очевидно, что самый простой выход из ситуации это организация хранилища в виде:
root
CoreLib
v1
v2
App1
App2
App3
И в исходниках проектов AppN явно указывать соответствующую версию CoreLib. Т.е. например для С++ явно писать #include "..\CoreLib\v1\Header.h"
Вопрос в следующем: а возможна ли организация репозитория таким образом, чтобы все управление версиями, в том числе и правильное соответствие версии CoreLib, происходило в самой Subversion. А в исходниках было бы написано #include "..\CoreLib\Header.h" без указания версии CoreLib.
Решением проблемы была бы организация репозитория в виде
root
App1
CoreLib
App1Sources
App2
CoreLib
App2Sources
где в ветках AppN лежат соответствующие исходники CoreLib. Но это приводит к тому, что исправления в CoreLib сделаные в рамках проекта App1 не попадут автоматом в проект App2, хотя версия CoreLib и там и там одинаковая. И по сути исходники CoreLib лежащие в разных App никак не связаны друг с другом. Можно ли как-то сказать Subversion, что на самом деле это одна и та же версия CoreLib?
Возможно ли все-таки решение этой проблемы, или это логическая ошибка и так никто не делает? Поделитесь мудростью!
Заранее спасибо!