Forum OpenACS Q&A: Why 305 git repositories?

Collapse
Posted by Andrew Piskorski on
Currently the git structure is composed of 305 separate git repositories
Why? Why not one single Git tree with everything underneath it? Is there something about Git that forces you to use 305 separate repositories?
Collapse
Posted by Malte Sussdorff on
Two reasons;
- ability to download only parts of the application modules and not all. After all you would not download all Wordpress plugins as part of one GIT repository either.
- apart from oacs-core that's how CVS is structured.

What you suggest would be the GIT subtree approach and maybe a mix and match is the correct answer (aka. GIT subtree for "Distributions" like OpenACS Core, dotLRN, various project open installations and the GIT sumbodules for anything installed in addition to the distribution.

Downside: a distribution can only be updated and branched as a whole, disallowing the independent package by package modifications or package based branches.

Collapse
Posted by Gustaf Neumann on

Downside: a distribution can only be updated and branched as a whole, disallowing the independent package by package modifications or package based branches.
not necessarily. with subtree, one has the option to pull/push to the whole tree, and/or to the components via "subtree pull/push".

A "large" single repository with the 300+ packages has certainly also advantages, since it is setup-wise quite simple, has no problems with cross-package commits, etc., ..., id does not conflict with site-specific workflows, etc., but requires that all these packages are in the same branch, have the same tags, etc. This is not compatible with e.g. the per-package (actually per-file) tagging of cvs, where different packages can be in different branches, and where within the branch, tags (like openacs-5-8-compat) can be used for flagging the state of a package such as releases or being part of different distributions (acs-core, dotlrn, etc.).