Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

For purposes of this discussion ScienceTools_User (ST_U), ScienceTools (ST) and GlastRelease (GR) will be known as containers; the taggable components will be called subpackages.  Apart from the special subpackage containerSettings ST_U is a proper subset of ST. Certain subpackages of ST and ST_U also belong to GR.  ST_U doesn't officially exist yet, but all the issues discussed would apply to ST_U as well as ST.

Physical structure

This Much of the organization and all the sharing is handled in the CVS repository by means of sym links.   There are top-level directories ScienceTools-scons and GlastRelease-scons.  There are also top-level directories for subpackages such as astro, Likelihood, etc.   In almost all cases the subpackage directories are sym-linked into the container directory. Shared subpackages like astro and celestialSources are sym-linked into both.  The one exception is containerSettings. Each container has its own version of this subpackage, which is a regular subdirectory of the container directory.  When you check a container out of CVS, sym links are followed, so you end up with all source files in regular subdirectories.

...

CVS tags apply to a directory (optionally recursively); git supports tags only of entire repositories.  Hence we surely need separate repositories for subpackages (and some way to reassociate them at checkout time when someone wishes to check out the entire container).   subpackages.    It's less clear what to do about subsubpackages.  There are only two subpackages with subsubpackages: celestialSources and irfs.   Our custom subpackage-tagging software goes to extra trouble to avoid tagging subsubpackages when the parent subpackage is tagged.

Strategies

  • Put subsubpackages in their own repositories in Git; use some existing tool, like subtrees or subrepos, to keep track of the "real" structure
  • Put subsubpackages in their own repositories in Git; use homegrown scripting to bridge the gap between git structure and CVS structure
  • Eliminate subsubpackages by changing organization in CVS and updating references as needed