Вам следует взглянуть на SVN Externals , но учтите, что я не уверен, что понимаю, что вы делаете с CVS, поскольку я не использовал CVS годами.
По сути, внешняя ссылка означает, что вы можете создать подкаталог под своим проектом и добавить в него другой проект.
В принципе, вы можете получить этот макет:
ProjectA - svn://server/ProjectA
classes (svn://server/ProjectA/classes)
app (svn://server/ProjectA/app)
externals (svn://server/ProjectA/externals)
Ext1 - svn://server/Ext1
classes (svn://server/Ext1/classes)
Ext2 - svn://server/Ext2
Пояснение:
- svn: // ... - это URL-адрес, который я извлек, (svn: // ...) - это относительный URL-адрес этого каталога, но он был частью извлечения из каталога исходного проекта.
Обратите внимание, что внешние ссылки добавляются в качестве свойств в каталог "externals" и фиксируются в репозитории как часть ProjectA. После того, как вы добавили эти свойства, обновление или новая проверка автоматически загрузят и Ext1, и Ext2 как часть обычной проверки.
Тем не менее, вы получите рабочие папки внутри рабочих папок, и вам нужно будет зафиксировать изменения и разметить / пометить их отдельно. Subversion не позволяет вам вносить изменения во все эти рабочие копии и фиксировать их все за один шаг.
Другими словами, если для добавления функции в проект вы изменяете некоторые файлы в ProjectA / classes, а затем добавляете некоторую поддержку фреймворка для Ext1 / classes, вам придется выполнить два коммита, один для Ext1 и один для ProjectA.
Если вы хотите живой пример, вот подкаталог моей библиотеки классов C #: http://vkarlsen.serveftp.com:81/LVK/LVK_3_5/trunk/LVK.UnitTests
Чтобы оформить заказ в этом каталоге, вам нужно указать имя пользователя и пароль, оба должны быть гостевыми без кавычек.
Внешние ссылки в моем проекте модульного тестирования библиотеки классов включают в себя как каталог "SigningKey" (проверьте свойства subversion в главном каталоге), так и содержимое подкаталога "libs" (проверьте свойства subversion на библиотеках libs). Как вы заметили, когда вы проверяли проект модульного тестирования, он собирал все остальное, что ему было нужно, из библиотек, ну, кроме проектов, которые он тестировал.
Однако, если я сейчас добавлю модульный тест и одновременно обновлю версию файлов библиотеки SQLite, мне нужно будет сделать 2 коммита. Один для загрузки новых файлов SQLite в хранилище, потому что это отдельная проектная / рабочая папка, а второй для загрузки нового модульного теста в хранилище.