11代码管理和开发
作为社区开源模型,CMAQ是许多开发人员贡献的产物,预计贡献人员量会随着全球用户数量的增加而增加。这些代码提交给CMAS中心进行存档和基准测试的工作,需要标准化管理和归档。本章提供有关源代码管理、新代码开发编码指南、使用生成脚本编译新源代码以及编写CMAQ可用的shell脚本的指南。这些信息的大部分来源于Byun和Ching()的第18章(Young,),并进行了相关更新,特别是对于模型代码的新版本和Fortran90标准。本章还包括CMAQ分发代码的开发过程介绍。
11.1源代码管理
11.1.1需要的配置管理工具
面对不断开发的程序、模块和代码,必须系统地管理用户对该软件的访问。以下为软件的科学管理内容:
?存储库–所有公共代码所在的位置。
?存档代码的概念–已存入存储库的代码,以便任何用户都可以在以后提取精确的代码。这涉及某种类型的转换程序,用于维护具有嵌入式更改表的代码主副本。
?版本控制的概念–存档代码的结果是修改主副本更改表中的标签或唯一的版本标识符,以便在以后恢复准确的代码。
?已发布代码的概念–已经达到某种成熟状态并已被指定为某种“已发布”状态的代码。它们的使用具有合理的可靠性预期。所使用的范式采用了以下场景:
1.用户修改或开发代码。代码可以是一个子程序,也可以是多个子程序,也可以构成整个科学模块。代码可以“从头开始”,也可以从存储库中提取并修改。
2.对代码完成测试后,可将其保存在存储库中,以便其他人可以访问它。
3.一些存档代码可能仍处于试验或开发状态,而其他代码可能相当稳定,并且经过了更完整的测试。后者可以被指定为“released”。在一个实验性或已释放状态下,没有强制执行的手段来控制访问。社区将会并且应该能够不加区别地访问,并且清楚地意识到使用开发状态代码是有风险的。
4.当用户继续使用代码时,他可能会进行改进或发现并修复错误。然后将升级安装到存储库中,存储库将自动分配唯一的修订标识符。
5.存储库位于所有用户都可以方便访问的位置,并由设置和实施一般访问规则的管理员维护。
11.1.2选择配置管理工具
在CMAQ5.0.2版本之前,CMAQ开发人员使用CVS进行版本控制,分布式tarball包含CVS工件(例如,名称以“,v”结尾的文件)。从版本5.0.2开始,CMAQ开发人员切换到git。
11.1.3git解释
git是一个支持分布式工作的版本控制系统。每个Git目录都是一个完整的存储库,具有完整的历史记录和版本跟踪。
-它可以在几乎所有的UNIX和Linux平台以及许多PC上工作。-它是公开和免费的,并且根据GNU通用公共许可证的条款分发。-如果要对EPACMAQ存储库进行更改,请使用以下步骤:1.在