Наша политика при доставке новой версии - создать филиал в нашей VCS и обработать его в нашей команде QA. Когда последний дает зеленый свет, мы отмечаем и выпускаем наш продукт. Филиал хранится для получения (только) исправлений ошибок, чтобы мы могли создавать технические выпуски. Эти исправления ошибок впоследствии объединяются в туловище.
В течение этого времени соединительная линия видит основную работу по разработке и потенциально подвержена изменениям рефакторинга.
Проблема заключается в том, что существует потребность в стабильной магистрали (чтобы слияние исправлений ошибок было успешным - обычно это невозможно, если код был, например, извлечен другим способом или перенесен на другой класс) и необходимость реорганизовать его при введении новых функций.
Политика на нашем месте - не делать рефакторинга до того, как прошло достаточно времени, и ветвь достаточно стабильна. Если это так, можно начать выполнять изменения рефакторинга на соединительной линии, и исправления ошибок должны быть зафиксированы вручную как на соединительной линии, так и на ветке.
Но это означает, что разработчики должны подождать довольно долгое время, прежде чем совершать на транке какие-либо изменения рефакторинга, потому что это может разорвать последующее слияние от ветки к магистрали. И необходимость вручную удалять ошибки из ветки в туловище болезненна. Мне кажется, что это мешает развитию...
Как вы справляетесь с этим напряжением?
Спасибо.