CollabNet
Submerged - CollabNet's Subversion Blog
CollabNet Community

CollabNet Blogs

  • Submerged Home
  • CollabNet Home
  • openCollabNet

Categories

  • Administration (8)
  • Client Tools (9)
  • General (30)
  • Subversion Client (23)
  • Subversion Events (2)
  • Subversion in the Enterprise (26)
  • Subversion Server (14)

Past 6 Months

  • May 2008 (2)
  • April 2008 (2)
  • March 2008 (3)
  • February 2008 (3)
  • January 2008 (4)
  • December 2007 (2)

Archives

All Archives...
May 2008

Subversion 1.5 Merge Tracking and Mergeinfo

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.

Posted by pburba | Permalink | Comments (0) | TrackBack (0)

Subversion 1.5 RC5

Earlier this week, the Subversion community issued an RC5 release with the latest round of fixes. As we have done with previous releases, CollabNet is providing binaries for Windows, Linux, OSX and Solaris. The CollabNet Merge client and Subclipse have both been updated as well.

Here is a list of some of the noteworthy fixes I see (in order they were backported):

  • r30741
    Fix bug whereby 'svn status --depth=files' still showed some dirs.
  • r30743, r30751
    Fix memory leak in recursive remote propget.
  • r30776, r30777, r30779
    svndumpfilter drops mergeinfo when it is *not* run with --renumber-revs.
  • r30666, r30684, r30726
    Fix for issue 3181. Compare repository UUID with working copy when opening RA session
  • r30761, r30762
    Fix for issue 3172. 'log -g' fails the moment it encounters a bogus mergeinfo which claims a merge from a non-existentpath@REV1-REV2.
  • r30820
    Fix pool issue which definitely can lead to assertion failures in reintegrate, and quite possibly to other mergeinfo corruption.
  • r30868, r30871
    In svnserve, tolerate unreadable passwd files. Don't error over svn+ssh:// when the user can't read passwd.
  • r30843
    Fix abort in ra_serf when server sends invalid xml during replay.
  • r30907
    Fix for issue 3185. Fix the 'log --limit' compatability code in ra_svn, ra_serf, and ra_neon to ignore nested logs when in '-g' mode.
  • r30883, r30888
    Fix issue 3187. Fix reverse merges where merge target or subtree has non-inheritable revision ranges intersecting with the merged range.
  • r30931
    Remove 'blind deletion of argument to mkdir --parents', delete only if this invocation has created it.
  • r30896, r30905
    Make Cyrus SASL client support DIGEST-MD5.
  • r30986
    Fix potential segfault in svn_io_remove_dir2(path='.').
  • r29191, r29398, r29833, r30663, r30963, r30964
    Improve the responsiveness and accuracy of 'svn log -g'.

Posted by Mark Phippard | Permalink | Comments (0) | TrackBack (0)

RSS Syndicate this blog

Recent Posts

  • Subversion 1.5 Merge Tracking and Mergeinfo…
    Posted by pburba
  • Subversion 1.5 RC5…
    Posted by Mark Phippard
  • Subversion 1.5 Release Candidate Available…
    Posted by Mark Phippard
  • SharpSvn Brings Subversion to .NET…
    Posted by Jeremy Whitlock

Recent Site Comments

  • "On this page, http://blogs.open.collab.net/svn/2008/04/subv…"

    Thomas Malone
  • "Awesome, my c# project uses Subversion as a wiki content ma…"

    Scott
  • "Great article - I found it really helpful. Thx…"

    Przemek
  • "Hi All, There is a new binary for Subversion 1.4.6 on O…"

    Jeremy Whitlock
  • "Joe, Yes, it does have this. You just add the -g option t…"

    Mark Phippard
  • "You would have to exec a script. This feature has not been…"

    Mark Phippard
  • "Much appreciated! Can --summarize be used with svnant, or …"

    Greg Butterfield
  • ©2008 CollabNet Corporation
    • Site Feedback
    • Terms of Use
    • Privacy Policy
    • Copyright & Trademark