2010-04-22 1 views
14

Так что в SVN вы можете сделать такие вещи, как:Есть ли какой-либо способ слияния svn diff или 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, чтобы сделать истинный, не последовательный, многорежимный diff и/или слияние?

+0

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

ответ

18

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

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

однако СВН дифф не кажется, поддерживает несколько непоследовательных изменений.

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

+0

Вы рок! Я понятия не имел, что могу передать несколько аргументов -r или -c, и предложение comb-diff было полезно. Спасибо :-) – machineghost

+1

Обратите внимание, что для меня команда 'svn merge -c 551, 557, 563' привела к ошибке * слишком много аргументов *, которая была решена путем внесения в список списка изменений следующим образом:' svn merge -c «551, 557, 563» ' – dave

+1

svn merge -c 551,557,563 ... работал для меня. т.е. нет пробелов. –