То, о чем вы говорите, - это попытка перебазировать одну из веток. Это поддерживается в некоторых DVCS , но я не знаю никакой поддержки такого рода вещам в SVN.
Лучше всего выбрать одну из ветвей (ту, которая важнее всего иметь сейчас) и объединить ее с основной линией, которая должна быть довольно прямой. В другой ветке вам нужно будет извлечь изменения из соединительной линии и согласовать различия, учитывая ситуацию, которую вы описали, это почти наверняка не будет автоматическим, и вам, возможно, придется потратить некоторое серьезное время на размышления о том, как реализовать эти функции веток поверх из того, что слито в основную линию, но это стоимость параллельной разработки: все меняется.
Как избежать этого в будущем? Частая интеграция .
Если у вас есть две команды, каждая из которых имеет кодовую базу A, и они работают над различными функциями в течение 6 месяцев, интеграция будет очень болезненной, поскольку каждая из них сделает предположения относительно A, что другая команда изменилась. С другой стороны, при еженедельных или ежемесячных сборках интеграции каждая команда должна быть значительно лучше осведомлена о том, какие изменения вносит другая, и окончательная интеграция должна быть намного проще.
Вот почему проекты с открытым исходным кодом часто выступают против огромных патчей, они потрясающе быстро устаревают, и у кого-то действительно нет времени, чтобы их правильно просмотреть. С другой стороны, если вы берете тот же вклад и разбиваете его на несколько мелких усваиваемых частей, которые стоят отдельно, ваш вклад, скорее всего, будет A) принят и B) рассмотрен должным образом, чтобы не привести к бесконечный поток дефектов.