Я вижу два разных способа решения этой проблемы:
1
Значительные изменения в стволе (например, крупный рефакторинг) не должны выполняться в стволе. Они должны быть сделаны в ветке и объединены обратно в ствол, когда они достаточно стабильны.
Периодически изменения в магистрали должны объединяться с другими ветвями обслуживания. Причина объединения рефакторинга в транк только тогда, когда он стабилен, заключается в том, что они затем будут объединены с ветвями обслуживания. Однако, если нет возможности сделать эти изменения стабильными, лучше использовать вариант 2.
После внесения изменений в ветви обслуживания они могут быть объединены обратно в магистраль.
2
Создать ветку веток обслуживания (по одной ветке на каждую). Это будет использоваться для объединения магистрали с каждой ветвью обслуживания. (Обратите внимание, что использование внешних SVN или его эквивалентов должно использоваться для ограничения количества ветвей обслуживания).
Сделайте весь свой рефакторинг в стволе и объедините его с ветвями веток обслуживания. Когда вы освобождаете или думаете, что магистраль стабильна, тогда объедините эти ветви выпусков обслуживания обратно в их соответствующие ветви. Затем они могут быть в свою очередь объединены обратно в багажник.
Фактически каждая ветвь обслуживания становится «вспомогательной магистралью».
Обратите внимание, что этот сценарий подчеркивает компромисс между будущим обслуживанием и предварительным обслуживанием. Чем больше различий и различий в вашем коде, тем больше требуется предварительное обслуживание. Хорошая часть заключается в том, что поэтапное обслуживание намного проще.