metaclass: (Default)
metaclass ([personal profile] metaclass) wrote2013-04-06 12:50 pm
Entry tags:

О контроле версий и суб-проектах

Уткнулся в проблему с контролем версий и разбиением репозитория по проектам.
Текущие проекты все состоят примерно из трех частей: изредка дорабатываемый кодогенератор, изредка дорабатываемые базовые библиотеки, общие для всех проектов и кодогенератора, собственно сами активно разрабатываемые проекты и небольшое количество мелких вспомогательно-экспериментальных проектов-утилит-прототипов. Фактически "больших" проектов 4 штуки - кодогенератор, общий клиент для БД и два разрабатываемых проекта.
Проекты собираются и тестируются автоматически CI сервисом по обнаружению изменений в репозитории. При этом получается, что изменив один проект, мы вызываем билд всех проектов.
Теоретически, это лечится раскладыванием проектов и базовых библитек по отдельным репозиториям. Но в таком случае получается потенциальная возможность сделать коммит-пуш в один репозиторий и не сделать в другой, связанный с ним, в результате чего билд может накрыться.
Причем это меркуриал, с его заебами на тему мержа, из-за которых изредка такие проблемы возникают даже в рамках одного репозитория, если же там будет 4 репы - я более чем уверен, что проблемы будут возникать постоянно.

В связи с этим вопрос: что можно сделать, чтобы репозитории были раздельными, но коммит-пуш в зависимые репозитории нельзя было сделать без коммита в базовые?
Сделать билд с тестами не-автоматическим (т.е. требующим, например явного указания тэга или пуша в отдельный репозиторий, откуда сервис будет билдить) наверно нехорошо, т.к. сломанный блид не будет обнаружен до явного действия по принуждению к билду.

В меркуриале есть функционал суб-репозиториев. Но в нем нету такого, чтобы репозитории А и B зависели одновременно от репозиториев C и D, т.к. там просто дерево, а тут как раз именно такие зависимости.

Post a comment in response:

This account has disabled anonymous posting.
If you don't have an account you can create one now.
HTML doesn't work in the subject.
More info about formatting