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

1

16

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?

Indwell answered 22/4, 2010 at 15:54 Comment(1)
I should add that the reason I'm interested in this is that we have our version control system tied to our bug tracking system. A given bug might have several (non-sequential) revisions in its fix, so it would be nice if we could: A) diff all of those revisions at once, for peer review B) merge all of those revisions at once, for moving fixes in to our live branchIndwell
W
21

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.

Whereunto answered 25/5, 2010 at 15:36 Comment(3)
You rock! I had no idea I could pass multiple -r or -c argument, and the combine-diff suggesttion was helpful too. Thanks :-)Indwell
Note that for me, the command svn merge -c 551, 557, 563 resulted in a too many arguments error, which was resolved by enquoting the list of changes as follows: svn merge -c "551, 557, 563"Ermelindaermengarde
confirmed @Ermelindaermengarde issue and fix on version 1.7.14Holland

© 2022 - 2024 — McMap. All rights reserved.