Рекурсивное разрешение отложенных конфликтов слияния SVN

У меня есть ветка dev, которую какое-то время не трогали. Я объединил в него ствол, чтобы интегрировать множество исправлений/изменений в основную ветку, так как она была разветвлена, но теперь у меня много мелких конфликтов (слияние-лево/слияние-право).

Я хочу, чтобы для разрешения каждого конфликта использовалась последняя версия магистрали. Есть ли команда, которую я могу запустить, которая автоматически разрешит все конфликты в рабочей копии в одном направлении (для всех конфликтов следует использовать право слияния)?

РЕДАКТИРОВАТЬ: Как указано в комментариях, я попытался вернуться, а затем запустить svn merge с параметром --accept, только, по-видимому, в SVN 1.0 такой опции нет. Все еще ищу решение.


person Eran Galperin    schedule 30.11.2008    source источник
comment
Разве вы не можете установить svn 1.5 только для слияния? Вы даже можете сделать это на какой-то другой машине.   -  person orip    schedule 30.11.2008


Ответы (4)


Я думаю, вы можете использовать опцию «--accept itss-full» при вводе команды слияния svn. Это должно делать то, что вы хотите...

person abigagli    schedule 30.11.2008
comment
Я ищу решение, которое можно применить после операции слияния. - person Eran Galperin; 30.11.2008
comment
Ой... Извините, я этого не понял... Я думаю, что проще всего восстановить svn на локальной копии после того, как слияние вызвало конфликты - person abigagli; 30.11.2008
comment
Извините, я использую версию 1.0, поэтому мне это не помогает. - person Eran Galperin; 30.11.2008

Как сказано вкратце, вы должны использовать --accept theirs-full при выполнении слияния. Если вы уже выполнили слияние и хотите начать сначала, вы можете сначала использовать svn revert -R, чтобы начать заново.

Параметр --accept появился в SVN 1.5 вместе с интерактивной поддержкой слияния.

person Avi    schedule 30.11.2008
comment
Это новая опция в SVN 1.5. - person Avi; 30.11.2008

Я думаю, что TSVN может сделать это, если вы сделаете «Проверить наличие модификаций», которая покажет вам все файлы, включая конфликтующие, выберете их все, а затем выберите «разрешить, используя их».

Не уверен, что TSVN актуален для вашей платформы или это именно то, что вы хотите сделать, но это может быть полезно...

person Will Dean    schedule 30.11.2008
comment
Да, я в настоящее время делаю именно это, но это займет некоторое время (репозиторий около 100 МБ). Я надеялся на решение командной строки, которое я мог бы запустить на сервере, и для дальнейшего использования - person Eran Galperin; 30.11.2008

Хорошо, у меня есть план, и я думаю, что он объясняет большую часть моих бед - (взято из моего поста пользователям @subversion...)

Я думаю, что мы столкнулись со следующими проблемами, которые ухудшили ситуацию:

  • вишневые слияния + слияния на уровнях ниже корневого (разрешены все, но они могут усложнить более поздние слияния)
  • мы предполагали, что завершение команды слияния означает, что все изменения слиты (не проверяли дважды с помощью mergeinfo --show-revs)
  • возможные ошибки с более ранними клиентами (1.5 или ранние 1.6). У нас много систем Ubuntu и Debian, и мы изначально не знали о сайте обновлений wandisco. Итак, мы упустили простой способ оставаться в курсе событий. Сейчас мы быстро развертываем 1.6.11.

Процесс PUSH:

  1. svn merge --reintegrate --accept отложить путь URL-ветви к рабочей области
  2. svn mergeinfo URL-ветвь путь к рабочему пространству --show-revs подходящие > подходящие_revs.txt
  3. повторять до тех пор, пока не останется ничего подходящего

Процесс PULL: тот же шаблон, но без --reintegrate

person Peter Kahn    schedule 11.05.2010