I have a subversion repository that contains a number so subfolders, corresponding to the various applications, configuration files, DLLs, etc (I'll call them 'modules') that make up my project. Now we are starting to "branch" into several related projects. That is, each high-level project will use a number of the modules, possibly slightly modified from project to project. The number of projects is smaller (~5) than the number of modules (~20)
Now I'm trying to figure out how to organize the repo. Does it make sense to keep the top level subfolders on a module-by-module basis, with sub-subfolders for each project? Or should the top level be for each project, with each project having its own module subfolders:
repo:
module 1
Project 1
Project 2
...
Project 5
module 2
Project 1
....
Project 5
....
module 20
Project 1
...
Project 5
-or-
repo:
Project 1
module 1
module 2
...
module 20
Project 2
module 1
module 2
...
module 20
...
Project 5
module 1
module 2
...
module 20
It would seem best to organize by Project at the top level, since you're going to want to checkout an entire branch and have a working copy for the project. If you organize by module, you'll have to do multiple checkouts (one for each module you're using) in order to build your project to a point where it's useable.
It could make sense to keep both projects and modules separate, E.g.:
Projects
Project 1
Project 2
...
Modules
Module 1
Module 2
...
If you use that in combination with svn externals and/or vendor branches, you could support different branches for your projects that need different module versions, but still benefit from the having a single module source when projects happen to share the same version of a module.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With