Contrary to a 'normal' svn directory structure I'm using the following structure:
trunk/ project1/ project2/ project3/ ... branches/ project1-branch/ project1/ project2/ ... project2-branch/ project1/ project2/ ... tags/ project1/ V1 V2 ...
As you see I don't have separate triples (trunk/branches/tags) for each project.
For development I do a checkout of trunk (sometimes a sparse checkout) containing all the projects I need (there are dependencies between the projects and some projects are simply libraries).
The benefits that I see in this are:
Update and checkin is easy, because I have a common root directory (trunk) of all projects. One simple
svn update
orsvn commit
does it all.Creation of a tag or branch is simple, because it's only the trunk that I have to
svn copy
for this. (Branches and tags actually contain more projects than needed, but asvn copy
is cheap and I still can do sparse checkouts on a branch or tag if needed.)Moving of resources from one project to another is easy, because they all live in the same repository.
Global refactoring (for example changing the package of a commonly used class) is easy when I'm working on a full checkout of trunk, because I can be sure I don't miss a project.
Merging is easy, because I can always merge the whole branch at once even if there was a refactoring move from one project to another.
I intend to migrate to maven and split all the projects from trunk to maven projects. I'd like to benefit from the maven dependency management and from the available plugins (right now I'm using huge custom ant files).
Now my questions are:
Do I have to change the svn directory structure to give every project its own triple (trunk/branches/tags)? I guess the answer is 'yes'.
If I change the structure, which of the benefits mentioned above do I loose (I mean what will be more complicated doing it with maven)?
What are the equivalent ways to do it with maven?