Richard S. Hall wrote:
Daniel Fagerstrom wrote:
In the future we might want to have separate release cycles for
different bundles, but currently it would complicate things without
any gain. We can restructure with trunk, tags and branches at the
bundle level if/when we actually need it.
Well, I expect the core framework release to be somewhat independent
of other bundles. The core framework will generally not ship with any
bundles other than what is required for its shell.
So, in short, if the directory structure dictates release cycles, then
it should accomodate this fact.
SVN doesn't exactly dictate any particular directory structure, but
using something like:
felix/
proj1/
trunk/
tags/
branches/
proj2/
trunk/
tags/
branches/
...
for each sub project with separate release cycle would be closest to the
SVN communities recomendations
(http://svnbook.red-bean.com/en/1.1/ch05s04.html#svn-ch-5-sect-6.1). The
(sub) project roots could of course be part of a hierarchy as Niclas
proposed. A repository structure like the one above becomes a little bit
unconvenient for developers as one need to checkout "proj1/trunk",
"proj2/trunk" etc instead of just "felix/trunk".
That can in turn be solved by using SVN externals
(http://svnbook.red-bean.com/en/1.1/ch07s04.html), which are somewhat
like symbolic links. With extrenals we could have a "felix/trunk" that
just contain external links to "proj1/trunk" etc. Then a developer just
need to check out "felix/trunk" to get a complete development
environment. We used this in Cocoon and it worked well except from that
it become much slower to update a project with lots of external links
than updating the same amount of code in just one big project. As a
result we decreased the number of external links and decided to solve
the problem with independent release cycles when needed. We have maybe
50 sub projects (blocks) in Cocoon, so the problem would be much smaller
in Felix especially if we avoid putting files at the top level so that
one in most cases only need to update or commit one sub project.
But I don't think we need to handle the problem with separate release
cycles yet. As long as we keep the sub project as separate, it will be
easy to reorganize when we need it.
/Daniel