Search code examples
svnmergeblame

Tracking SVN changes through multiple merges


At work we use a branching strategy where all changes start off in a development branch, then subsequently make their way through one or more integration branches, and finally end up in a release branch.

Occasionally (more often than I'd like) I find myself needing to figure out where a particular change originated (which development branch). In this case I have to spend a considerable amount of time playing detective to trace a change backwards through 2-3 merges.

Am I missing an easy way to do this?


Solution

  • With subversion 1.5 and higher a few commands have a -g option to use the megeinfo data to construct a more complete view of history. This does require you to have used subversion 1.5 or higher on the server and done all the merging with svn 1.5 or higher.

    • svn log -g
    • svn blame -g

    A quick test shows that this doesn't work flawlessly (I have duplicate history entries on a fairly simple test case) but it may be good enough for what you need.

    More on the new mergeinfo property:
    http://svnbook.red-bean.com/nightly/en/svn.branchmerge.basicmerging.html