Create git submodule for CTA catalogue schema
Introduction
Currently, the CTA catalogue schema is an integrated part of the main CTA project. This has several benefits. In particular, it allows us to build, test and release the project as a whole.
However having both components together has resulted in a few challenges.
In particular, it has made development more complicated since the moment we decided to separate CTA schema releases from normal CTA releases. Since the main
CTA branch is usually being used for code changes, we are forced to use a separate dev
branch for CTA catalogue schema changes. Even tagging has to be done on a separate branch.
These branches do not have the same protections as main
(for example, no mandatory code reviews) and make collaborative work more complicated.
This issue proposes a solution to this problem, by placing the CTA catalogue schema in a separate submodule.
Proposal
- Remove, from the main
CTA
project, all CTA catalogue schema components and place them in a new submoduleCTA-catalogue
. - Link the submodule to the main
CTA
project, so that it can be accessed by our CI procedures in a seamless way. The negative impact on our existing procedures should be very low (build, testing, release, etc. should work as before).
After this has been implemented, we can improve it by:
- Implementing similar protections in
CTA-catalogue
branchmain
, such as mandatory code reviews. - CTA catalogue schema tagging can be simplified: the tagged commits only need to contain an updated reference to the
CTA-catalogue
submodule. - Removing auto-generated cpp files.
Tasks
-
Move all schema related files into a subdirectory cta-schema
(SQL files, not cpp ones). -
Move/edit the corresponding Makefiles so that the new directory (submodule) can be configured without depending on external files. -
Convert the directory into a separate git submodule. -
Verify that the catalogue schema workflows work well with the new module. This includes catalogue schema versioning, which should be defined in the submodule, not the main project. -
Configure new cta-schema repo (push permissions, access, CI, README, etc.)