В моей компании мы используем один репозиторий SVN для хранения нашего кода на C++. База кода состоит из общей части (инфраструктуры и приложений) и клиентских проектов (разработанных как плагины).Обработка отношений между несколькими проектами подрывной деятельности
Компоновка хранилище выглядит следующим образом:
- Инфраструктура
- app1
- App2
- app3
- проектов для-клиент-1
- App1-плагин
- App2-plugin
- Конфигурация
- проект-для-клиент-2
- App1-плагин
- App2-плагин
- Конфигурация
Типичный выпуск для клиента проект включает данные проекта и каждый использованный проект (например, Инфраструктура).
Фактическое расположение каждой директории -
- Инфраструктура
- ветви
- теги
- ствол
- проект-для-клиент-2
- ветви
- теги
- ствол
и то же самое для остальных проектов.
У нас есть несколько проблем с макетом выше:
- Это трудно начать новую среду разработки для проекта клиента, так как необходимо оформить все из участвующих проектов (например: инфраструктура, App1, App2, проект для клиента-1).
- Трудно отметить выпуск в клиентских проектах по той же причине, что и выше.
- В случае, если проект клиента должен изменить некоторый общий код (например, инфраструктура), мы иногда используем ветвь. Трудно отслеживать, какие ветви используются в проектах.
Есть ли способ в SVN решить любой из вышеперечисленных? Я думал об использовании svn: externals в клиентских проектах, но после прочтения this post Я понимаю, что это может быть неправильный выбор.
В то время как мой вопрос занялся проблемой разного типа svn, я получил очень хороший ответ относительно svn: externals, которые могут вас заинтересовать http://stackoverflow.com/questions/198726/subversion-repository-layout-for-libraries -developed-through-different-programs hth – Pieter
У автора связанного сообщения были проблемы с 'svn update' на других машинах после замены внешнего на обычную копию (ветку) ссылочного кода. Я бы не отказался от внешних из-за этого случая. –