Есть ли способ объединить svn diff или svn сразу для нескольких непоследовательных ревизий?

Итак, в SVN вы можете делать такие вещи, как:

svn merge -r555:558
svn diff -c551

но (насколько я знаю) нет возможности сделать:

svn merge -r555:558, 592:594
svn diff -c551, 557, 563

Для слияния вы всегда можете просто последовательно выполнить несколько команд:

svn merge -r555:558
svn merge -r592:594

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

Итак, у меня вопрос ... есть ли способ, используя либо сам SVN, либо SVN в сочетании с командами Linux, для выполнения истинного, непоследовательного, многократного сравнения и / или слияния?


person machineghost    schedule 22.04.2010    source источник
comment
Я должен добавить, что меня это интересует, потому что наша система контроля версий привязана к нашей системе отслеживания ошибок. У данной ошибки может быть несколько (непоследовательных) ревизий в своем исправлении, поэтому было бы неплохо, если бы мы могли: A) различать все эти ревизии сразу, для экспертной оценки B) объединить все эти ревизии сразу для перемещения исправления в нашей живой ветке   -  person machineghost    schedule 22.04.2010


Ответы (1)


Вы можете объединить несколько ревизий в одну команду (как минимум в 1.6):

svn merge -c 551, 557, 563
svn merge -r 555:558 -r 592:594

однако svn diff, похоже, не поддерживает несколько непоследовательных ревизий.

Чтобы получить кумулятивный патч, вы можете получить различия по отдельности, а затем использовать comb-diff, чтобы объединить их один за другим. Это не идеально, но вы можете написать сценарий для автоматизации процесса.

person Ed Wagner    schedule 25.05.2010
comment
Ты жжешь! Я понятия не имел, что могу передать несколько аргументов -r или -c, и предложение comb-diff тоже было полезно. Спасибо :-) - person machineghost; 26.05.2010
comment
Обратите внимание, что для меня команда svn merge -c 551, 557, 563 привела к ошибке слишком много аргументов, которая была решена путем цитирования списка изменений следующим образом: svn merge -c "551, 557, 563" - person dave; 30.04.2014
comment
подтверждена проблема с @dave и исправлена ​​в версии 1.7.14 - person CodeMonkey; 18.08.2016