Some of the subdirectories in the ACME code contain code that was brought in from another repository. List them all.
...
- external any subdirectory in ACME whose entire content is from another repository
- upstream master the repository everyone is sending their changes to. Only one so that everyone pulling from the same source is working with all the same changes. The source of an external.
Methods for including externals
- submodule a link that points to another git repository. See Sharing External Code using Git Submodules . Submodules require an extra step after cloning to get the code.
- subtree a set of files and commits from another git repo, brought in to your repo. See Sharing External Code using Git Subtree. Subtrees are included in ACME when you "git clone".
- monorepo adding multiple projects, related or not, in the same repo. Code is included when you clone ACME.
- buildtime the repo is checked out to the $CIME_OUTPUT_ROOT/$CASE/bld when compiling a case for the first time. Code does not exist in ACME repo.
Rules for adding externals
- Group leads must approve adding a new external. The group needing the external can decide on the method of inclusion. A POC for the upstream master must be identified and the SE group leads notified.
- The upstream master for the external must be build-able and testable on its own.
- For submodules, the linked repo must be readable by all ACME developers. If the upstream master can not be made readable, a clone fork must be maintained in ACME-Climate github and ACME then links to that clonefork.
Development in externals
In general, there are several ways to develop with external code in ACME
...
Subdirectory in ACME | external method | upstream master | development method | POC | Notes |
---|---|---|---|---|---|
cime | subtree | https://github.com/ESMCI/cime | 2-way | ||
cime/externals/MCT | subtree | https://github.com/MCSclimate/MCT | mostly 1-way | usually brought in with CIME | |
cime/externals/pio* | subtree | https://github.com/NCAR/ParallelIO | mostly 1-way | usually brought in with CIME | |
components/mpas-o/model | submodule | https://github.com/ACMEMPAS-ClimateDev/MPAS clone of forked to https://github.com/MPASACME-DevClimate/MPAS | strict 1-way | ||
components/mpasli/model | submodule | https://github.com/ACMEMPAS-ClimateDev/MPAS clone of forked tohttps://github.com/MPASACME-DevClimate/MPAS | strict 1-way | Matt Hoffman | |
components/mpas-cice/model | submodule | https://github.com/ACMEMPAS-ClimateDev/MPAS clone of forked tohttps://github.com/MPASACME-DevClimate/MPAS: branch cice/develop | strict 1-way | ||
components/clm/src/external_models/fates | submodule | https://github.com/ACME-ClimateNGEET/fates clone of forked to https://github.com/NGEETACME-Climate/fates | strict 1-way | ||
components/clm/src/external_models/mpp | submodule | https://github.com/ACME-Climate/mpp branch alm/develop | strict 1-way | Gautam Bisht | |
components/homme | monorepo | NA | NA | Mark Taylor | ACME CAM uses homme/src/share and homme/src/preqx |
CVMix | buildtime | https://github.com/CVMix/CVMix-src | strict 1-way | ? | After case.build, can be found in $EXEROOT/ocn/source/core_ocean/.cvmix_all |
ocean BGC | buildtime | https://github.com/ACME-Climate/Ocean-BGC | strict 1-way | ? | After case.build, can be found in $EXEROOT/ocn/source/core_ocean/.BGC_all |
...