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

Re: Union of Multiple Branches

From: Mattius McLaughlin <Mattius_McLaughlin_at_pmc-sierra.com>
Date: Thu, 07 Jan 2010 10:54:03 -0800

Rob van Oostrum wrote:
> "Cleaning up" your branches is a bad idea. It just creates that much
> more administrative overhead. Not to mention having to tiptoe around
> the deletions when merging the branch back to trunk, which will affect
> merge tracking's performance.
>
> What I would do instead is leverage sparse checkouts to only checkout
> the root folder of the branch, and selectively grab the directories
> you need to work with.
>
> You can create mixed working copies by using 'svn switch' to point
> specific folders to their equivalents on specific branches/tags.
>
>
> Regards,
> Rob
>

BRM wrote:

> Your best way to accomplish this is to create another branch (e.g. UNION_A_B) and then use svn:externals to map the two you want to bring together into sub-folders.
> SVN cannot (at least to my knowledge) operate on individual files within a folder in this manner.
>
> So basically:
>
> branch/A
> branch/B
> branch/UNION_A_B
> branch/UNION_A_B/A -> branch/A
> branch/UNION_A_B/B -> branch/B
>
> this will result in any updates to branch/A being seen on update in either location. Likewise with branch/B.
> The user only needs to check out branch/UNION_A_B to get both.
> Additionally, since you are using the svn:externals property, branch/UNION_A_B/A and branch/UNION_A_B/B don't really exist in the repository, but are stored as properties (e.g. absolute minimal storage) that tell the SVN client to checkout those as sub-directories of branch/UNION_A_B - so disk space and network traffic are both minimized as well.
>
> HTH,
>
> Ben
>
Thanks for the advice. Agreed that this can lead to an administrative
nightmare, but in general users don't need to make extensive use of
workspace merging. This is the first instance where this has come up
for this type of development.

We use a workflow that involves

1) check out a tag
2) switch any files that need to be modified to the trunk
3) commit changes
4) make a new tag when ready for handoff

The files that we work with are very large and workspaces need to check
out many dependent projects to create a functional workspace. It's not
unheard of to have a workspace that takes 4-6 hours to populate.

  I'd toyed with the idea of using externals in the workspace, but as
mentioned svn doesn't support mixing workspaces like this. Having the
data in a separate folder via an external doesn't quite work for the
designer because they need the files from

My thinking now is that the only way to do this would be

1) checkout everything from the trunk
2) switch all files in tag a to tag a
3) switch everything else to tag b

But this could mean a 2 fold increase in checkout time, depending upon
how much the trunk has changed.

Thanks again for the suggestions,
--Mattius
Received on 2010-01-07 19:54:38 CET

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