Create git submodule for CTA catalogue schema
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.
- Remove, from the main
CTAproject, all CTA catalogue schema components and place them in a new submodule
- Link the submodule to the main
CTAproject, 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
main, such as mandatory code reviews.
- CTA catalogue schema tagging can be simplified: the tagged commits only need to contain an updated reference to the
- Removing auto-generated cpp files.
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.)