Hi,
I'm currently working with a collection of projects which are all their own specific branches / extensions of a generic core project and I am looking for a way to manage the way the projects collaborate.
I understand the following is a little vague, I only have a little experience with version control beyond the basic needs of a single project. What I am looking for is if anyone has come across something like this before and if so, how did they solve it? (ie what technologies/features were utilized or was it simply a matter of creating good practices?)
I'm in the fortunate position of being allowed to completely do away with SVN and move to something else if it is more appropriate.
We have
- A core subversion source tree (The generic tree) that receives updates.
- A number of domain specific subversion source trees that will use files from, modify existing files and add new files to the core source tree to generate a final product.
Our Process
- Changes in the core source tree are manually incorporated into the domain specific trees
- Occasionally changes in the domain specific trees are deemed “generic”/good enough to be incorporated back into the core tree (and eventually all other domain specific trees)
What we would like is a technology (or technologies) that can
- Allow each domain specific tree to build against a specific revision in the core tree (ie the build process would grab the specific core revision and then apply all the domain specific changes over the top of it to generate a final product)
- Would allow each domain specific tree to change the specific revision of the core to build against (This may introduce build errors but as long as the process of changing is relatively straightforward and easy to use).
- Provide a method for a domain specific tree to contribute changes back to the core repository.
- As the generic core tree is open source but the domain specific trees are NOT, we will need to have some form of access control placed on some parts of the final solution.
Thanks in advance for any help.