[svn.haxx.se] · SVN Dev · SVN Users · SVN Org · TSVN Dev · TSVN Users · Subclipse Dev · Subclipse Users · this month's index

Managing Multiple Vendor Branches/Releases

From: David A. Greene <greened_at_obbligato.org>
Date: Thu, 12 Jun 2008 16:25:38 -0500

I know that lots of people have talked about vendor branches on lots of
different blogs and web sites but I've never seen a complete answer to the
question I want to ask here.

My situation looks something like this:

upstream repo
  trunk
  tags
    release-1.0
    release-1.1
    release-1.2
    ...
  branches
    release-1.0
    release-1.1
    release-1.2
    ...

local repo (trunk a copy of upstream via svn_load_dirs)
  trunk
  tags
  branches
    release-5.6
    release-5.7
    ...

In the past, we have updated our local trunk from the upstream trunk via
svn_load_dirs/svnmerge. This works ok. Not great by any means (we lose
history from upstream) but it's at least functional.

The problem really gets tricky when you start looking at merging from
upstream *branches.* In that case, what's in the branch/tag is something that
appears nowhere on the upstream trunk. At some point it was branched from
trunk and stuff was cherry-picked into it from trunk as bugs were fixed for
release. So one can't just do an svn_load_dirs from trunk at the point of the
branch/tag. And one can't svn_load_dirs from a release branch and then
svn_load_dirs from trunk later because svn_load_dirs by its very nature
aggregates lots of individual revisions into one giant one. There's no way to
do the merge without a horrible number of conflicts, most of which are
spurious.

We really do need to merge from a release branch into our local repository
and in the future do merges from later release branches or from trunk.

Now, one way to do this is to create a setup like this:

local repo (trunk a copy of upstream via svn_load_dirs)
  trunk
  tags
  branches
    release-5.6
    release-5.7
  upstream
    current
    trunk
    tags
    branches

and do svn_load_dirs into upstream/current from whatever we want to merge in
(upstream release/tag branches, trunk, etc.). Then depending on what we
loaded into current, we could branch it to upstream/trunk
upstream/tags/release-x.y and so on. We would then svnmerge from
upstream/current to our trunk.

This would work, I think, though we'd lose a lot of history and revision
granularity due to the way svn_load_dirs works.

I don't know how people handle this kind of need with svn. Does anyone have
a solution? I've been looking at Piston a bit. Does anyone have experience
with it and know whether it could help with this?

Thanks for your help!

                              -Dave

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe_at_subversion.tigris.org
For additional commands, e-mail: users-help_at_subversion.tigris.org
Received on 2008-06-12 23:26:16 CEST

This is an archived mail posted to the Subversion Users mailing list.

This site is subject to the Apache Privacy Policy and the Apache Public Forum Archive Policy.