В нашей компании мы работаем над продуктом, состоявшим из различных модулей C/C++. Идеально, каждый уровень и модуль должны быть разработаны отдельно различными командами и протестированы независимо. В настоящее время мы имеем, разделяют каждый модуль на свой собственный branch:\
Модули:
\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 тег' в сотрудничестве с экстернами. Текущие экстерны ссылаются на ГОЛОВУ - потому что мы хотели бы создать последнюю версию регулярно, чтобы гарантировать, что все модули сотрудничают. Однако, после того как сборка успешна, и мы продолжаем делать выпуск, было бы хорошо, если бы был простой способ автоматически отметить все - включая версию, используемую в экстерне.как есть Сегодня, мы должны создать теги для модулей и затем обновить экстернов к этим тегам, затем отметить продукт и наконец подкачать его назад к соединительной линии после.
Существует ли более чистый способ сделать это? Не стесняйтесь также комментировать текущую структуру.
Я думаю, было бы лучше, если бы ваши внешние определения ссылались на теги модулей, а не на их стволы. Таким образом, вы вводите только известные вехи модулей, и ничего не нужно будет менять, когда вы помечаете основной продукт.
Это соответствует передовой практике (предложенной в документации SVN) использования только явных изменений (а не HEAD) в svn: externals
.