Где я работаю, у нас есть несколько проектов, работающих одновременно. Чтобы избежать этой проблемы, у нас есть несколько вариантов исходного кода. Например, первый выпуск Variant 1.0. Мы создаем ветку из этого выпуска, скажем, Variant 2.0, для всей будущей разработки. Если нам нужно исправить ошибку, мы делаем это в основном варианте, который в настоящее время равен 1.0 и может выпустить его. Когда Variant 2.0 готов к запуску, мы объединяем его с тем, что находится в главной ветви (в данном случае 1.1), и это становится новой основной магистралью. В какой-то момент у нас одновременно работало 4 филиала.
Слияние кода может занимать много времени, и вы должны быть осторожны, чтобы не вносить новые ошибки во время слияния, но если у вас есть подходящий инструмент сравнения кода, то это не должно быть слишком плохо. Некоторое время назад мы произвели слияние, используя Beyond Compare, в исходном каталоге с 10 000 файлов, и это заняло одно утро.