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

RE: Multi-project organization / repos layout

From: Tom Malia <tommalia_at_ttdsinc.com>
Date: 2007-03-27 23:03:51 CEST


First, I'll be very curious to hear what the gurus have to say about your
question, as I've been struggling with same for about a week now.

As for the path I'm currently pursuing, I've first decided to create one all
encompassing Repository into which I create sub folders for each actual
separate project/lib/etc. What I like about this is I can browse that
repository from TSVN and easy see and manipulate everything instead of have
separate Repos and having to have separate browsers open and do exports, and
dumps etc. etc. if I need to copy or move things around.

Second, I'm making extensive use of externals to bring shared code into
projects. It has required that I restructure a few things into separate
subdirectories, and the management of the external properties can be a pain,
but so far it seems to be working pretty good.

-----Original Message-----
From: Turaukar Yur [mailto:yuraukar@hotmail.com]
Sent: Tuesday, March 27, 2007 8:34 AM
To: users@subversion.tigris.org
Subject: Multi-project organization / repos layout

I am struggeling with a proper repository layout to manage multiple projects

that depend on each other. This is not entirely SVN specific, but the
available options clearly depend on the features that SVN provides.

Let's say we have a library project libA (I will use java as an example, but

this should apply for basically most programming environments). libA might
depend on a number of 3rd party jars that should be in svn along with the
source for libA itself.
Let's say we have another library project libB. libB uses libA and therefore

should somehow link to the libA repository.
Finally we have productA, which uses libB and libA directly.

My first attempt has been to have libA organized as
lib/trunk/src (containing all source code)
libA/trunk/lib (containin all 3rd party jars)

and have libB organized as
lib/B/trunk/src (containing all source for libB)
libB/trunk/lib (containing all 3rd party jars that only libB uses)
libB/trunk/lib/libA (svn:external pointing to libA/trunk)

However, when I continue to follow this structure, projectA ends up as
projectA/trunk/src (containing all source for project)
projectA/trunk/lib (containing all 3rd pary jars that only this prj uses)
projectA/trunk/lib/libB (svn:external pointing to libB/trunk)
projectA/trunk/lib/libA (svn:external pointing to libA/trunk)

When checked out, this results in libA being downloaded twice - not a very
smart idea. If I omit the second svn:external, then libA is only available
as lib/libB/lib/libA. I like neither result.

SVN is apparently a very nice tool for version control and lots of best
practice hints are given (along with the famous trunk/tags/branches
approach). However, little to no guidance is provided as to how to manage

What would be the best practices here?
Any suggestions or pointers to articles/websites would be appreciated.

Die neue MSN Suche Toolbar mit Windows-Desktopsuche. Suchen Sie gleichzeitig

im Web, Ihren E-Mails und auf Ihrem PC! Jetzt neu! http://desktop.msn.de/
Jetzt gratis downloaden!

To unsubscribe, e-mail: users-unsubscribe@subversion.tigris.org
For additional commands, e-mail: users-help@subversion.tigris.org

To unsubscribe, e-mail: users-unsubscribe@subversion.tigris.org
For additional commands, e-mail: users-help@subversion.tigris.org
Received on Tue Mar 27 23:04:36 2007

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.