то, что вы делаете, является правильным подходом, ваша проблема - объединить изменения обратно в транк .. затем просто объединить их.
Во-первых, когда вы отпустите, создайте ветку в этой точке - это вашекод для выпущенной версии.Вы можете исправлять ошибки прямо на нем, если хотите, что звучит так, как вам лучше всего работать.Когда вы вносите туда исправление, просто объедините изменения непосредственно со стволом.Вам не нужно перебазировать (или реинтегрировать) или что-то еще, просто возьмите ревизии, которые изменились, и объедините их в ствол почти так, как они сделаны.Это очень просто - вы выполняете простейшее слияние, которое SVN предоставляет (объединяет диапазон ревизий), просто выбираете ревизии, которые содержат изменения, которые вы хотите, и объединяете их в транк.
Вы можете столкнуться с конфликтами в этомслучай, но помните, что svn выполняет слияние, анализируя изменения источника и применяя их к цели.Если вы переместите половину кода из файла в другой, а затем попытаетесь объединить его с помощью любого инструмента, у вас возникнут трудности.
Mercurial мог бы быть лучше в этом - я бы рекомендовал попробовать, создать репозиторий, добавить несколько файлов, создать ветку, серьезно реорганизовать ваши файлы, а затем внести небольшое изменение и объединить его обратно.Посмотрим, не окажетесь ли вы в результате с аналогичными проблемами, которые возникают с SVN (поскольку вы пытаетесь проделать большую работу, и я не думаю, что какой-либо компьютер будет слишком хорош в таких масштабных изменениях).
Конечно, лучший ответ - перестать так много заниматься рефакторингом кода, который выглядит как другой продукт!