Вот сценарий:
У нас есть исходное дерево, в котором одновременно работают несколько разработчиков над несколькими ветками.
У нас также есть «пользовательская» копия этого дерева исходных текстов с отличиями, которые ( почти ) никогда не вернутся к основному источнику. Эта разработка непрерывна, но с гораздо меньшими изменениями, чем в основной ветви.
Пользовательская версия должна оставаться в курсе изменений в основном источнике, сохраняя при этом свои настройки.
В настоящее время мы обращаемся с этим примерно так:
Основной выпуск (назовите его 1.2b) ответвлен от основного дерева исходных текстов. Кастом релиз (назовите его 1.2b.custom) разветвлен от 1.2b. Изменения по сравнению с предыдущим пользовательским выпуском (1.2a.custom) объединяются в 1.2b.custom. Изменения из 1.2b объединяются в 1.2b.custom как требуется.
промыть, повторить, в настоящее время проходит 10-е? итерация этого, так как я был здесь.
Это работает 'хорошо' - но это приводит к большому количеству конфликтов слияния, каждый раз, один раз, , когда мы создаем новую специальную версию. Это также приводит к тому, что история «теряется» - при просмотре истории файла в ветке 1.2b.custom отображается история изменений 1.2b.custom, 1.2a.custom merge , но не фактические коммиты в ветке 1.2a.custom. Кроме того, он ограничивает возможность внесения изменений в пользовательскую ветвь, поскольку параллельную разработку пользовательского материала некуда (т. Е. Работу над внешней связью для следующего выпуска при сохранении / исправлении ошибок в текущем выпуске)
Я ищу предложения о том, как мы можем справиться с этим лучше. Одна мысль, которая у меня возникла, - это выбрать точку и «превратить» кастом в собственный ствол, все равно будут проблемы при объединении изменений из основного (ветки или ствол) -> кастом, но я думаю, что это «исправляет» историю , а также позволяет параллельную разработку на заказ. Другие идеи или ресурсы, которые я могу просмотреть?
Спасибо.