svnmergediffrevisions

Is there any way to svn diff or svn merge across multiple non-sequential revisions at once?


So in SVN you can do things like:

svn merge -r555:558
svn diff -c551

but (as far as I know) there is no way to do:

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

For merges you can always just do several commands in sequence:

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

but for diffs doing that will just result in multiple diffs (and it's a little sub-optimal for merges too, as you can get conflicts from things that might just be removed in later revisions).

So, my question is ... is there any way, using either SVN itself or SVN combined with Linux commands, to do a true, no-sequential, multi-revision diff and/or merge?


Solution

  • You can merge multiple revisions in one command (at least in 1.6):

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

    however svn diff does not seem to support multiple non-sequential revisions.

    To get a cumulative patch, you can get the diffs individually and then use combine-diff to merge them together one-by-one. It's not ideal, but you could write a script to automate the process.