Я отвечаю за несколько (довольно небольших) программ, которые делятся большим количеством кода через разные библиотеки. Мне интересно, каков наилучший макет хранилища для разработки различных программ (и библиотек) и синхронизации библиотек во всех программах.
Ради аргумента скажем, есть две программы с двумя библиотеками:
Естественно, исправления ошибок и улучшения для библиотек должны (в конечном итоге) сливаться со всеми программами. Поскольку библиотеки работают над разными программами, использование внешних определений кажется невозможным.
Поэтому я решил рассматривать мои библиотеки, кроме одного, как ветви поставщиков , но я не уверен, какой будет лучший макет для этого.
Я думал что-то вроде:
- Библиотеки
- Библиотека1 (предок)
- Библиотека2 (предок)
- Program1
- Код программы1
- Библиотека1 (филиал поставщика)
- Библиотека2 (филиал поставщика)
- ...
Затем, скажите, что при разработке Программы1 были сделаны некоторые изменения для Библиотеки2, я объединяю их обратно в часть Библиотеки хранилища и при желании объединяю их оттуда со всеми другими программами.
Слияние с другими программами не всегда может произойти немедленно, люди, работающие над Program2, могут быть близки к выпуску и скорее завершить его сначала, создать тег и только потом обновлять все библиотеки.
Я немного обеспокоен, что через некоторое время это приведет ко многим слияниям и головной боли из-за обслуживания, но я не вижу намного лучшего решения.
Опять же, мне кажется, что это довольно распространенный сценарий использования, поэтому я решил спросить у сообщества stackoverflow, каков наилучший макет хранилища для этого?