Skip to main content

Posts

Showing posts from November, 2016

Forcing a correct Subversion branch merge despite tree conflicts

Let's say your development team is following the common pattern for maintaining a "clean" releasable trunk in Subversion. All your development is done in "feature branches", which you merge into a "development integration" branch. From there code is merged into a QA branch for further testing, and is eventually merged into trunk and released.

So your bog-standard SVN repository would look something like this:

/trunk /branches /DEVELOPMENT /QA /feature1 /feature2 /tags /v1.0.0 /v1.1.1
Now, what frequently happens in this situation is issues are merged from /branches/DEVELOPMENT to /branches/QAout of order. That is, sometimes you have a bug-fix that you want to move rapidly into production, so it gets plucked from /branches/DEVELOPMENT by itself without merging some of the commits that came before it.

This "cherry picking" of code can be problematic in almost any version control system (including Git), but in Subversion …