I've read the SVN red-bean book, and research how people layout their SVN repos, we're thinking of using SVN for our product, so would like suggestions on a repos layout.
The product is a desktop application, consisting of a number of .exe, graphics, etc. The current source layout is something like:
Program 1
Program 2
Program 3
Common Code
Graphics
It's important to note that sometimes Program 1 may use source files that are in Program 2 as well. Common Code and Graphics are used by all programs.
The main question is, if all our users are currently using version 2009 of the product, and we'll need to maintain it, release service packs etc, and begin development of version 2010 at the same time, should trunk contain changes for the 2009 release, or the 2010 release?
trunk (where 2010 development happens)
Program 1
Program 2
Program 3
Common Code
Graphics
branches
v2009
Program 1
Program 2
Program 3
Common Code
Graphics
tags
2009 (read only)
2009 SP1 (read only)
2009 SP2 (read only)
Would the above be the recommended layout? Or should the trunk contain 2009 development, and the 2010 development in some sort of testing branch?
The above layout does mean if a developer wish to work on Program 1, they'll still need to checkout the entire project, including Program 2, Program 3.
EDIT, more question
Thanks for the response to far. Got further question:
During development, there'll be 4 to 6 months where version 2009 is still being use by users and will need to be maintain, while 2010 development is going on. During that time, what's the best way to apply changes to both 2009 and 2010 release? Should those changes be done in the 2009 branch them port to 2010, or vice versa?