I'm setting up a new SVN repository with some colleagues and wanted to get some
expert feedback on how to best organize it as well as some ideas for merging
strategies. First off I should say that I'm a beginner/intermediate SVN user
for a different and much smaller project, so I'm just getting my feet wet with
branches and tags and the like.
This new subversion repo will contain code for three separate computer models
written in fortran 90, but the third model is a merged version of the first
two. I'll call the first larger model AAA, the second smaller model BBB, and
the merged model CCC. AAA contains many, many subdirs, and effectively CCC is
a carbon-copy of AAA but it has a new subdir sd3 to hold most of the contents
of BBB along with a few other related changes. The source tree of CCC looks
something like:
source/
subdir1/
subdir2/
subdir3/
sd1/
sd2/
sd3/ <-- will contain the BBB source code
subdir4/
But there's a few caveats:
1) Only about 50% of the source files from BBB get placed into sd3.
2) Some the BBB source files that are placed into the sd3 subdir require some
coding changes that facilitate BBB becoming a module of CCC.
3) The file extensions are different. BBB source files extensions are .f90,
while everything in AAA and CCC are .F90.
And there are some other smaller changes necessary to the AAA source routines
outside of subdir sd3 that are needed to create CCC.
The future development line will consist of some folks who will create branches
within CCC that will get merged back to the trunk. There will also be other
developers updating BBB and then subsequently creating updated versions of CCC.
And we may at times be merging updated AAA versions to also make new versions
of CCC, although this will be much less frequent.
I guess the "big" question is: Is there any way to automate (or partially
automate) the series of steps necessary to merge model BBB into CCC within
Subversion itself? Or am I stuck with using patch files? I'm aware of the
concept of externals in SVN, but since subdir sd3 is not an exact mirror of
model BBB I wasn't certain if this would work or not. Secondly, will the
choice of how we arrange the subversion layout facilitate the merging of AAA +
BBB to CCC in any way? i.e., do we want three separate repos for AAA, BBB and
CCC or just set them up as three separate projects within the same repo?
Thanks!
Mark Branson