170 likes | 237 Views
Mariana Vertenstein CESM Software Engineering Group. CESM Model Development git /GitHub and You. Key developers of this have been: Ben Andre , Bill Sacks, Alice Bertini, Steve Goldhaber, Jim Edwards. What is git and GitHUB ?. CESM, git and GitHub.
E N D
Mariana Vertenstein CESM Software Engineering Group CESM Model Developmentgit/GitHub and You Key developers of this have been: Ben Andre, Bill Sacks, Alice Bertini, Steve Goldhaber, Jim Edwards
CESM, git and GitHub • Subversion (svn) is an open-source centralized version control system (repository exists in a single place) • gitis an open-source distributed version control system (every developer has their own repository) • GitHub is a website and servicewhere git developers store their projects and network with like minded people. • Past: All CESM components have been in Subversion (SVN) since CESM1 • Goal: All CESM components except POP already are or are moving to git/GitHub
Why GitHub? • gitvia GitHub is becoming the standard for open source collaborative development • Great collaborative tools for code development and review • Integration of code, issues and project management creates greater transparency • Distributed version control makes it easier for anyone in the community to keep their developments in version control
Current CESM Development • Each CESM component: • uses the CIME coupling infrastructure, workflow and data components to carry out new science development • not necessarily dependent on any other prognostic components for its first step in model development • Can do its own independent development • ALL CESM components are brought together in a CESM development beta snapshot • testing for each snapshot is extensive for different grids, model feedbacks, machines, etc.
Path Forwards • Key requirements for CESM components: • Each component has its own development repository • Each component can bring in other external repositories (SVN and git mix) • component does not always control external repository • component migration to git should not require external repositories to move to git as well • Each component needs flexibility to move to git on itsown timeline • If component development is required to be private, then maintain this in the GitHub migration
Solution: mix of SVN and Git component repositories enabled by checkout_externals–new top level CESM utility cesm2.0.beta08 cesm2.0 cesm2.1+ Component • CESM Top • CIME • CAM • CHEM • CLUBB • CARMA • CLM (CTSM) • FATES • PTCLM • MOSART • POP • MARBL • CVMix • CISM • CICE5 • CICE6 • MOM6 • WW3 SVN Git SVN SVN SVN SVN SVN Git Git Git SVN Git Git Git SVN Git Git SVN SVN SVN SVN Git Git Git Git SVN Git Git Git Git Git Git Git Git? SVN? SVN? Git Git Git Git SVN Git Git Git Git Git Git SVN?
manage_externals/checkout_externals uses easy to read top level configuration file creates a the working copy to match the description file. [cime] tag= cime5.4.0-alpha.17 protocol = git repo_url = https://github.com/CESM-Development/cime local_path = cime required = True [cam] tag = trunk_tags/cam5_4_155/components/cam protocol = svn repo_url = https://svn-ccsm-models.cgd.ucar.edu/cam1 local_path = components/cam required = True [clm] branch= my-new-science protocol = git repo_url = https://github.com/escomp/ctsm local_path = components/clm externals = Externals_CLM.cfg required = True cesm |-- cime/- cime5.4.0-alpha.17 |-- cime_config/ |-- components/ | |-- cam - cam5_4_155 | |-- clm - my-new-science | | |-- src | | | -- FATES | | |-- tools | | |-- PTCLM | |-- mosart | |-- pop | | |-- externals | | | |-- MARBL | | |-- source | | |-- cvmix |-- • manage_externals/checkout_externals
New GitHub Portal for CESM - ESCOMPThe Earth System Community Modeling Portal • New GitHub organization for large, community-oriented earth system modeling projects of broad interest. • ESCOMP projects are related to earth system modeling • They are supported (e.g., if someone files an issue, it will be seen and addressed in some way) • They are projects that have involvement and collaboration from outside communities (e.g., the university community).
How will new science/infrastructure get back into the model components?
Changes are brought back to GitHub “master” via transparent Pull Requests
Code Review of Pull Requests is often done variety of developers
Help • CESM2 release web page will include links to git and GitHub documentation • FORUM dedicated to GitHub issues in DiscussCESM • Plethora of online help – huge GitHub community For more information: https://github.com/ESCOMP/ctsm/wiki http://www.cesm.ucar.edu/models/cesm2.0/land/ https://escomp.github.io/ctsm-docs/