MOODLE的版本号规范

本文介绍在对Moodle(魔灯)做开发时如何编制版本号。

1 Moodle的版本【versions】和分支【branches】

了解Moodle版本控制方案将有助于您使用我们的存储库【repositories】获取代码(例如升级)。在tracker.moodle.org中报告错误时,了解正确的版本也非常有用。

2 主要【major】版本和次要【minor】版本

Moodle版本号由三个以点分隔的数字组成,例如1.9.11或2.0.2。前两个数字,如1.9或2.0,代表主要版本【major version】。第三个数字区分了同一个主要版本中的次要版本【minor version】。发布新的主要版本时,次要版本设置为0。例如,Moodle 2.0.1是Moodle 2.0.0的第一次小更新。
通常,Moodle HQ团队维护Moodle的两个最新主要版本(该规则的一个显著例外是Moodle 1.9,它的支持时间更长)。

3 版本【versions】和分支【branches】

Moodle开发人员使用源代码管理(SCM)系统“Git”来跟踪代码中的更改。与许多SCM一样,Git中代码的变化历史通过所谓的分支来表示。可以将分支视为源代码更改的标记序列。
Moodle的每个主要版本都有一个分支。所有Moodle 1.9版本都来自Moodle_19_STABLE分支,所有Moodle 2.0版本都来自Moodle_20_STABLE分支。还有一个名为master的主要开发分支,负责保存下一个未来版本的更改。

4 发布版【releases】

自2.0版以来,Moodle计划每六个月左右发布一次新的主要版本。
次要版本每两个月发布一次,包括修复的bug和安全问题。
在两次发布之间,Moodle HQ团队发布最新稳定版本的修订。这些修订每周发布,通常在周四发布。称为每周构建。通过版本号中的小增量和类似20200723这样的构建日期(发布每周构建的日期,格式为YYYYMMDD)来识别。这些每周构建的版本号有一个加号后缀,例如,3.9.1+ 表示基于次要发布版3.9.1的每周构建。

4 源代码成熟度级别【maturity levels】

在其生命周期中,Moodle代码分支经历了几个成熟度级别。
一开始,分支被认为处于alpha状态。在此期间,新功能将添加到分支。API和数据库结构可能会根据需要更改。这些版本主要面向开发人员,因为没有任何保证(例如,该版本可能不能安装或不能执行升级)。
当决定不向分支添加新功能(即所谓的功能冻结)时,就达到了beta成熟度级别。开发人员专注于测试、修复bug和稳定分支。
在一段时间的测试中,当所有已知的关键和妨碍程序正常运行的bug都已修复,并且没有新的错误报告时,可以发布分支的preview版本,或称为“发布候选版本【release candidate】”。发布第一个候选版本(RC1)后,将达到候选版本成熟度级别。在此期间,可以发布多个RC版本,例如2.1RC1、2.1RC2、2.1RC3等。
最后,新的主要版本发布,分支达到稳定的成熟度水平。从现在起,这个分支的数据库结构和API不会改变。将创建相应的MOODLE_xx_STABLE,并根据它创建次要版本和每周构建。

5 版本号

每个插件的versions.php文件可以指定插件工作所需的Moodle的最低版本。

$plugin->version = 2011080200;
$plugin->requires = 2011070101;

6 如何在moodle内核【core】中增加版本号

在Moodle内核【core】中,当我们从主干【master】分支时,我们也会分支版本号。这意味着稳定分支中的任何版本号都不应高于主干【master】分支(或更高版本稳定分支)上的版本号。
版本号结构为YYYYMMDDRR.XX。
YYYYMMDD是创建分支的日期。如果在主干【master】上,没有发生分支,则应将其设置为当前日期。否则(在非主干分支中)不应更改(保持原样,即创建分支时的日期)。
RR是发布递增版本号。这是在一个分支上的代码变化的增量计数器、或者在主干【master】的日期计数器。
XX是微增版本号。当我们意识到在一个稳定的分支上(在RR增量中)可能有超过99个升级步骤时,我们引入了“分数增量”。它往往只在主版本号文件中使用。

6.1稳定分支的规则

如果存在“微增量”(.XX)。开发人员只应增加“微增量” ‘XX’
集成团队保留使用“RR”在发布点之间进行分支的权利。
如果“微增量”(.XX)不存在,请增加RR。

6.2主干分支规则

必须在当前日期的基础上递增全部版本号。
因此,2013年2月6日,版本号设置为:2013020600.00

6.3我们为什么要分支版本

想象一下以下场景:
1)Moodle 2.4发布,mod_forum版本2012120300。
2)仅在master中,王二的更新会在升级步骤【upgrade step】中删除一个数据库字段,并将moodle版本设置为201301010
3)在2.4.1和master中,张三修复了权限定义中的一个问题,并将两个分支中的版本设置为2013010200。(注意:这里将导致错误,我们错误地更改了整个未来2.4.x版本的分支日期!)
4)Moodle 2.5发布,mod_forum版本2013060100
5)Moodle 2.5发布后,李四将她的Moodle从Moodle 2.4.1更新为2.5。
由于张三在第3)步中的把2.4.x版本改为2013010200,这导致着第2)步中王二的的升级步骤将永远无法运行。

6.4我知道STABLE和master之间没有变化,我可以将版本号设置为相同吗?

不是核心插件,抱歉,不能设置为相同。有太多的开发人员在使用同一个代码,如果我们避免为core这样做的话,它可以防止事故的发生。

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注