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

Re: Maven & Repository Layout

From: Konstantin Kolinko <knst.kolinko_at_gmail.com>
Date: Wed, 6 Aug 2008 03:47:11 +0400

2008/7/30 Mina R Waheeb <syncer_at_gmail.com>:
> I can't make one big trunk for all the code, because the code is
> related but in the end its assembled in separated products.
> The layout below explains more our code structure.
> |--- Root
> |---- pom.xml (Maven global organization descriptor)
> |---- commons
> |---- component 1 (A leaf componet)
> |---- pom.xml
> |---- src
> |---- component 2 (A leaf componet)
> |---- pom.xml
> |---- src
> |---- Project A (A container for project)
> |---- pom.xml
> |---- comp2-sub1 (A container component or sub-project)
> |---- pom.xml
> |---- c2-s1-s1 (dependency on commons/componet2)
> |---- pom.xml
> |---- src
> |---- Project B (A container for project)
> |---- pom.xml
> |---- comp2-sub1 (A container component or sub-project)
> |---- pom.xml
> |---- comp2-sub1-sub (integration dependency on Project
> A/c2-s1-s1)
> |---- pom.xml
> |---- src
> The code is too big, I hope you get the hole picture now and thanks for reply.
> Regards,
> Mina R Waheeb

Regarding the repository layout and where the trunk, tags, branches
subdirectories are located, there are two common approaches:

|-- /subprojects

|-- /trunk
|-- /trunk

I personally prefer the first one and use
to create tags for single projects.

I have seen two development communities, that have recently (~1 year
ago or so) switched from the first layout to the second one and
vice versa, respectively.

The one is Dojo Toolkit, see

Their old (aka 0.4.x-0.5.x) code is in /trunk, their recent code is a
collection of

They use svn:externals configured e.g. in /view/anon/all/trunk to check out
all 4 of them at once. Note the name: "view".

Interesting enough is the question where their tags and branches do go:
the names that follow the release numbers do go into /tags, /branches
at the root level.

Though there do exist some component-level branches, e.g.

The other project is Apache Tomcat.

They used to have separate components in separate subtrees.

Recently, when starting development of Tomcat 6.0, they decided
to move them all into a single source tree.

Note, that to checkout tomcat 6.0 source code (or the trunk, aka
future 6.2.x), you just have to go to /tomcat/tc6.0.x or

To checkout the 5.5 or 4.1 code, you go to
or to
if you are already using subversion 1.5 client (those views have
relative svn:externals paths that are understood by 1.5 clients).

Earlier tomcat versions have been moved to

Tomcat 6.0 code is easier to checkout. It is easier to commit changes.
(You can commit changes across components only if those are in
single WC. If those are loaded with svn:externals, you cannot commit
them in a single commit). And it is easier to browse through the web

In essence, it is up to you to decide, what path to follow.

You may also look at the commit histories of the projects, to
see what steps they require when performing a release.

Also, consider what code is required for your developers
to do their work. What parts of the repository they need
to checkout and commit to. What parts are covered by
a tag or branch, when you create them.

The above suggestions are not related with maven. I do not have
maven experience yet.

Best regards,
Konstantin Kolinko

To unsubscribe, e-mail: users-unsubscribe_at_subversion.tigris.org
For additional commands, e-mail: users-help_at_subversion.tigris.org
Received on 2008-08-06 01:47:40 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.