Правильная структура репозитория SVN?
От: _DeKa_ Беларусь  
Дата: 26.08.08 15:43
Оценка:
Доброго всем времени суток!

Я сейчас изучаю возможность перехода на 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?

Возможно ли все-таки решение этой проблемы, или это логическая ошибка и так никто не делает? Поделитесь мудростью!
Заранее спасибо!
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.