О контроле версий и суб-проектах
Apr. 6th, 2013 12:50 pmУткнулся в проблему с контролем версий и разбиением репозитория по проектам.
Текущие проекты все состоят примерно из трех частей: изредка дорабатываемый кодогенератор, изредка дорабатываемые базовые библиотеки, общие для всех проектов и кодогенератора, собственно сами активно разрабатываемые проекты и небольшое количество мелких вспомогательно-экспериментальных проектов-утилит-прототипов. Фактически "больших" проектов 4 штуки - кодогенератор, общий клиент для БД и два разрабатываемых проекта.
Проекты собираются и тестируются автоматически CI сервисом по обнаружению изменений в репозитории. При этом получается, что изменив один проект, мы вызываем билд всех проектов.
Теоретически, это лечится раскладыванием проектов и базовых библитек по отдельным репозиториям. Но в таком случае получается потенциальная возможность сделать коммит-пуш в один репозиторий и не сделать в другой, связанный с ним, в результате чего билд может накрыться.
Причем это меркуриал, с его заебами на тему мержа, из-за которых изредка такие проблемы возникают даже в рамках одного репозитория, если же там будет 4 репы - я более чем уверен, что проблемы будут возникать постоянно.
В связи с этим вопрос: что можно сделать, чтобы репозитории были раздельными, но коммит-пуш в зависимые репозитории нельзя было сделать без коммита в базовые?
Сделать билд с тестами не-автоматическим (т.е. требующим, например явного указания тэга или пуша в отдельный репозиторий, откуда сервис будет билдить) наверно нехорошо, т.к. сломанный блид не будет обнаружен до явного действия по принуждению к билду.
В меркуриале есть функционал суб-репозиториев. Но в нем нету такого, чтобы репозитории А и B зависели одновременно от репозиториев C и D, т.к. там просто дерево, а тут как раз именно такие зависимости.
Текущие проекты все состоят примерно из трех частей: изредка дорабатываемый кодогенератор, изредка дорабатываемые базовые библиотеки, общие для всех проектов и кодогенератора, собственно сами активно разрабатываемые проекты и небольшое количество мелких вспомогательно-экспериментальных проектов-утилит-прототипов. Фактически "больших" проектов 4 штуки - кодогенератор, общий клиент для БД и два разрабатываемых проекта.
Проекты собираются и тестируются автоматически CI сервисом по обнаружению изменений в репозитории. При этом получается, что изменив один проект, мы вызываем билд всех проектов.
Теоретически, это лечится раскладыванием проектов и базовых библитек по отдельным репозиториям. Но в таком случае получается потенциальная возможность сделать коммит-пуш в один репозиторий и не сделать в другой, связанный с ним, в результате чего билд может накрыться.
Причем это меркуриал, с его заебами на тему мержа, из-за которых изредка такие проблемы возникают даже в рамках одного репозитория, если же там будет 4 репы - я более чем уверен, что проблемы будут возникать постоянно.
В связи с этим вопрос: что можно сделать, чтобы репозитории были раздельными, но коммит-пуш в зависимые репозитории нельзя было сделать без коммита в базовые?
Сделать билд с тестами не-автоматическим (т.е. требующим, например явного указания тэга или пуша в отдельный репозиторий, откуда сервис будет билдить) наверно нехорошо, т.к. сломанный блид не будет обнаружен до явного действия по принуждению к билду.
В меркуриале есть функционал суб-репозиториев. Но в нем нету такого, чтобы репозитории А и B зависели одновременно от репозиториев C и D, т.к. там просто дерево, а тут как раз именно такие зависимости.