16

We use subversion and during every check-in, a script creates a patch file with all the diff. Now for the same issue/defect there could be multiple check-ins and we end up with multiple patch files. Now to see consolidated changes for an issue all the patch files have to be merged. Is there a way to do that?

Or another way to solve the same problem is: Is there a way in subversion to get the combined diff of all changes done as part of a particular comment? Eg:

Checked in with comment: "123: first changes"
Checked in with comment: "123: second set of changes"
Checked in with comment: "123: third changes"..

Is there a way to get a combined diff of all change that happened whose comment has prefix 123?

2
  • Possible duplicate of Seeing a combined diff of many commits in subversion? Commented Aug 11, 2018 at 4:13
  • Did the changes affect unique files? Or did it affect the same source file multiple times? Commented Dec 30, 2018 at 2:27

2 Answers 2

18

combinediff from patchutils can combine the diffs for you.

(Shamelessly borrowed from this previous SO question.)

Sign up to request clarification or add additional context in comments.

4 Comments

Combinediff only works if the second diff's context lines remain valid after the first diff is applied. Thus, if both diffs are against the same baseline, and they touch adjacent lines, then some changes will be rejected.
How to use combinediff, Can we use it on windows ?
Download the latest version from cyberelk.net/tim/data/patchutils/stable, extract, ./configure && make && make install, then you can run combinediff patch1 patch2.
Only works for two files at once: github.com/twaugh/patchutils/issues/50
3

Make a new branch starting from the revision just before the first changeset. In the new branch, merge each changeset of the issue, in order. Take a diff between the start of the new branch and the final result.

(If you do issue-based branching, you'd get the above situation automatically).

Mercurial has a nice extension for handling collections of patches, namely the mq exension. That, in turn, is based on quilt (http://savannah.nongnu.org/projects/quilt), a system designed to stack patches onto each other.

Comments

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.