Subversion 1.5 Merge Tracking and Mergeinfo

May 13, 2008 pburba

Chapter 4 of the forthcoming edition of the O’Reilly book "Version Control with Subversion" provides a good introduction to merge tracking with Subversion 1.5.  It describes the common scenario of feature branches copied from a trunk, which are then kept up to date with trunk via periodic synchronization, and at the end of their lifetime are reintegrated back to trunk (with the aptly named –reintegrate option).  If this model fits your merging needs, then after reading chapter 4 it is unlikely you will encounter any surprises.  But what if you don’t follow this model?  What if you need to do some or all of the following:

  • Merge to shallow working copies?
  • Merge to targets with switched subtrees?
  • Merge from sources which you don’t have full access to because
    of authorization restrictions, or merge to targets missing subtrees for
    the same reason?
  • Perform multiple merges to the same target without committing in-between?
  • Merge to target, then merge to subtrees of that target?

Not to worry, in all of these cases Subversion attempts to "do the
right thing", but you may encounter seemingly unusual behavior that
doesn’t fit within the ‘synch and reintegrate’ paradigm.  Key to
understanding all of these cases is a knowledge of the new svn:mergeinfo property (frequently referred to simply as ‘mergeinfo’).

Mergeinfo
is simply the history of merges made into a path.  But as with many
things that can be described so simply, mergeinfo can become a bit more
complex in practice.  Initially I had brave hopes of writing a
reasonably sized blog post talking about mergeinfo; what it means and
how it works.  Unfortunately as the page count of my draft post drifted
past twenty (after cutting a lot of material out) and a co-worker began
to refer to it as the "mergeinfo manifesto", we decided that it was
better suited as an article – which you can find here.

So
please take a look.  Even if you only ever do the simplest of merges, a
quick read of the first few sections of the article and the "Parting
Thoughts" section will help you in your move to Subversion 1.5.

Read the article: Subversion 1.5 Mergeinfo.

Previous Article
Mirror Management: How Often Should I Sync?

You've setup Subversion mirrors. How often should should you mirror? Should you synchronize often with a sm...

Next Article
Scrum Orthodoxy

I’ve finished my first week and my first class as a Danube employee and trainer. A trainer named Dan led th...