Some of the subdirectories in the ACME code contain code that was brought in from another repository. List them all.
There are two ways to bring in code from one git repo to another: subtree and submodule. ACME uses both and our procedures are described in Sharing External Code using Git Subtree and Sharing External Code using Git Submodules. Any source brought in as an external must be independently buildable and testable in that external.
Subtrees
...
Terms
- 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.
- submodule a link that points to another git repository. See Sharing External Code using Git Submodules or submodules vs. subtrees
- subtree a set of files and commits from another git repo, brought in to your repo. See Sharing External Code using Git Subtree
- monorepo multiple projects, related or not, in the same repo.
ACME Rules for new externals
- The group needing the external can decide on the method on inclusion. A POC for the upstream master must be identified.
- 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 must be maintained in ACME-Climate github and ACME then links to that clone
Development in externals
In general there several ways to develop with external code in ACME
- strict 1-way: all development is merged to the upstream master first and flows down to ACME. No exceptions.
- mostly 1-way: prefer strict 1-way but some exceptions can be made for emergency fixes
- 2-way: developers can make changes in ACME or the upstream master. POC keeps them in sync.
More specific instructions for externals are below
Table of Externals currently in ACME
Subdirectory in ACME | external method | upstream master | development method | POC | Notes |
---|---|---|---|---|---|
cime | subtree | https://github.com/ |
ESMCI/cime |
5cc4a90bd04d9273abb00f71762ebba63f2c3531
2-way | James Foucar | |
cime/externals/MCT | subtree | https://github.com/MCSclimate/MCT |
bfbe1c0a7f43d743c549679a5ad9d4ade1f700fe
MCT_2.9.0
mostly 1-way | usually brought in with CIME | ||
cime/externals/ |
pio* | subtree | https://github.com/NCAR/ParallelIO |
67c69713ee282f1b1c2eb7facdc3572a53490ad0
mostly 1-way | Jayesh Krishna | usually brought in with CIME | |||
components/mpas-o/model | submodule | https://github.com/ACME-Climate/MPAS clone of https://github.com/MPAS-Dev/MPAS | strict 1-way | Mark Petersen | |
components/mpasli/model | submodule | https://github.com |
c2572f19d671c35a4cca26911a55ef78b3ba2829
CMake_Fortran_utils_150308
/ACME-Climate/MPAS clone of https://github.com/MPAS-Dev/MPAS | strict 1-way | Matt Hoffman | |||
components/mpas-cice/model | submodule | https://github.com/ACME-Climate/MPAS clone of https://github.com/MPAS-Dev/MPAS: branch cice/develop | strict 1-way | Adrian Turner | |
components/clm/src/external_models/fates | submodule | https://github.com/ACME-Climate/fates clone of https://github.com/ |
491d28dda46fb5dae93bcd50f9b6511e24a46465
strict 1-way ? | Gautam Bisht | ||||