ESMCI / cime

Common Infrastructure for Modeling the Earth
http://esmci.github.io/cime
Other
162 stars 209 forks source link

Add case git #4660

Closed jedwards4b closed 3 months ago

jedwards4b commented 3 months ago

Had to be reopened as a branch of escomp to run docker tests. replaces #4655

This PR adds a case interface to git. It creates a local git repository when case.setup is run and updates that repository with each action that triggers an update of the CaseStatus file. Optionally a remote repository can be attached by setting CASE_GIT_REPOSITORY to the name of the remote repository. The case name is used as the repository branch name and if the branch already exists in the remote an error is generated. So multiple cases can exist in the same remote repository and each case is a branch of that repo. The new file gitinterface.py can interact with git in two ways:

If the python git module is found it will be used.
If the python git module is not found git commands will be run through shell commands.

Note that the variable CASE_GIT_REPOSITORY must be defined in your driver config_component.xml in order to use this feature, it should be defined as follows:

char case_git env_build.xml Remote git repository used for this case

I have tested this code on three systems: derecho (with python git module) izumi (without python git module) TACC vista (grace-hopper system no python git module)

Test suite: scripts_regression_tests on the three systems listed above Test baseline: Test namelist changes: Test status: bit for bit

User interface changes?: Users who wish to use the CASE_GIT_REPOSITORY feature must have write permissions to the remote repository and it is recommended that the ssh interface to that repository be used to avoid frequent prompts for github tokens.

Update gh-pages html (Y/N)?:

jedwards4b commented 3 months ago

The e3sm fail in this PR is expected. Some of the routines from file CIME/utils.py had to be moved to a new file CIME/status.py to avoid circular dependancies. E3SM will have to update import for these routines.

jasonb5 commented 3 months ago

@jedwards4b Go ahead and merge, I'll push a change to the e3sm repo to fix the failing test.