В нашей компании мы работаем над продуктом, состоящим из различных модулей C / C ++. В идеале каждый уровень и модуль должны разрабатываться отдельно разными группами и тестироваться независимо. В настоящее время каждый модуль разделен на отдельную ветку: \
Модули:
\hid
\branches
\tags
\trunk
\api
\branches
\tags
\trunk
\ui
\branches
\tags
\trunk
Отдельно релиз продукта создается путем объединения модулей и регулярной компиляции с использованием системы CI.
\productX
\branches
\5.0
\hid-4.0 (svn:externs \hid\branches\4.0)
\api-3.0 (svn:externs \api\branches\3.0)
\ui-5.0 (svn:externs \ui\branches\5.0)
\tags
\trunk
Основная проблема, с которой мы сталкиваемся, связана с поведением тега svn в сочетании с externs. Текущие внешние ссылки ссылаются на HEAD - потому что мы хотели бы регулярно собирать последнюю версию, чтобы все модули работали вместе. Однако, если сборка прошла успешно, и мы приступили к выпуску, было бы неплохо, если бы был простой способ автоматически пометить все, включая версию, используемую в extern. В нынешнем виде мы должны создать теги для модулей, а затем обновить внешние атрибуты для этих тегов, затем добавить теги к продукту и, наконец, заменить его обратно на транк.
Есть ли более чистый способ сделать это? Не стесняйтесь также комментировать текущую структуру.