MOODLE的版本號(hào)規(guī)范

本文介紹在對(duì)Moodle(魔燈)做開發(fā)時(shí)如何編制版本號(hào)。

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

了解Moodle版本控制方案將有助于您使用我們的存儲(chǔ)庫(kù)【repositories】獲取代碼(例如升級(jí))。在tracker.moodle.org中報(bào)告錯(cuò)誤時(shí),了解正確的版本也非常有用。

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

Moodle版本號(hào)由三個(gè)以點(diǎn)分隔的數(shù)字組成,例如1.9.11或2.0.2。前兩個(gè)數(shù)字,如1.9或2.0,代表主要版本【major version】。第三個(gè)數(shù)字區(qū)分了同一個(gè)主要版本中的次要版本【minor version】。發(fā)布新的主要版本時(shí),次要版本設(shè)置為0。例如,Moodle 2.0.1是Moodle 2.0.0的第一次小更新。
通常,Moodle HQ團(tuán)隊(duì)維護(hù)Moodle的兩個(gè)最新主要版本(該規(guī)則的一個(gè)顯著例外是Moodle 1.9,它的支持時(shí)間更長(zhǎng))。

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

Moodle開發(fā)人員使用源代碼管理(SCM)系統(tǒng)“Git”來(lái)跟蹤代碼中的更改。與許多SCM一樣,Git中代碼的變化歷史通過(guò)所謂的分支來(lái)表示??梢詫⒎种б暈樵创a更改的標(biāo)記序列。
Moodle的每個(gè)主要版本都有一個(gè)分支。所有Moodle 1.9版本都來(lái)自Moodle_19_STABLE分支,所有Moodle 2.0版本都來(lái)自Moodle_20_STABLE分支。還有一個(gè)名為master的主要開發(fā)分支,負(fù)責(zé)保存下一個(gè)未來(lái)版本的更改。

4 發(fā)布版【releases】

自2.0版以來(lái),Moodle計(jì)劃每六個(gè)月左右發(fā)布一次新的主要版本。
次要版本每?jī)蓚€(gè)月發(fā)布一次,包括修復(fù)的bug和安全問(wèn)題。
在兩次發(fā)布之間,Moodle HQ團(tuán)隊(duì)發(fā)布最新穩(wěn)定版本的修訂。這些修訂每周發(fā)布,通常在周四發(fā)布。稱為每周構(gòu)建。通過(guò)版本號(hào)中的小增量和類似20200723這樣的構(gòu)建日期(發(fā)布每周構(gòu)建的日期,格式為YYYYMMDD)來(lái)識(shí)別。這些每周構(gòu)建的版本號(hào)有一個(gè)加號(hào)后綴,例如,3.9.1+ 表示基于次要發(fā)布版3.9.1的每周構(gòu)建。

4 源代碼成熟度級(jí)別【maturity levels】

在其生命周期中,Moodle代碼分支經(jīng)歷了幾個(gè)成熟度級(jí)別。
一開始,分支被認(rèn)為處于alpha狀態(tài)。在此期間,新功能將添加到分支。API和數(shù)據(jù)庫(kù)結(jié)構(gòu)可能會(huì)根據(jù)需要更改。這些版本主要面向開發(fā)人員,因?yàn)闆](méi)有任何保證(例如,該版本可能不能安裝或不能執(zhí)行升級(jí))。
當(dāng)決定不向分支添加新功能(即所謂的功能凍結(jié))時(shí),就達(dá)到了beta成熟度級(jí)別。開發(fā)人員專注于測(cè)試、修復(fù)bug和穩(wěn)定分支。
在一段時(shí)間的測(cè)試中,當(dāng)所有已知的關(guān)鍵和妨礙程序正常運(yùn)行的bug都已修復(fù),并且沒(méi)有新的錯(cuò)誤報(bào)告時(shí),可以發(fā)布分支的preview版本,或稱為“發(fā)布候選版本【release candidate】”。發(fā)布第一個(gè)候選版本(RC1)后,將達(dá)到候選版本成熟度級(jí)別。在此期間,可以發(fā)布多個(gè)RC版本,例如2.1RC1、2.1RC2、2.1RC3等。
最后,新的主要版本發(fā)布,分支達(dá)到穩(wěn)定的成熟度水平。從現(xiàn)在起,這個(gè)分支的數(shù)據(jù)庫(kù)結(jié)構(gòu)和API不會(huì)改變。將創(chuàng)建相應(yīng)的MOODLE_xx_STABLE,并根據(jù)它創(chuàng)建次要版本和每周構(gòu)建。

5 版本號(hào)

每個(gè)插件的versions.php文件可以指定插件工作所需的Moodle的最低版本。

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

6 如何在moodle內(nèi)核【core】中增加版本號(hào)

在Moodle內(nèi)核【core】中,當(dāng)我們從主干【master】分支時(shí),我們也會(huì)分支版本號(hào)。這意味著穩(wěn)定分支中的任何版本號(hào)都不應(yīng)高于主干【master】分支(或更高版本穩(wěn)定分支)上的版本號(hào)。
版本號(hào)結(jié)構(gòu)為YYYYMMDDRR.XX。
YYYYMMDD是創(chuàng)建分支的日期。如果在主干【master】上,沒(méi)有發(fā)生分支,則應(yīng)將其設(shè)置為當(dāng)前日期。否則(在非主干分支中)不應(yīng)更改(保持原樣,即創(chuàng)建分支時(shí)的日期)。
RR是發(fā)布遞增版本號(hào)。這是在一個(gè)分支上的代碼變化的增量計(jì)數(shù)器、或者在主干【master】的日期計(jì)數(shù)器。
XX是微增版本號(hào)。當(dāng)我們意識(shí)到在一個(gè)穩(wěn)定的分支上(在RR增量中)可能有超過(guò)99個(gè)升級(jí)步驟時(shí),我們引入了“分?jǐn)?shù)增量”。它往往只在主版本號(hào)文件中使用。

6.1穩(wěn)定分支的規(guī)則

如果存在“微增量”(.XX)。開發(fā)人員只應(yīng)增加“微增量” ‘XX’
集成團(tuán)隊(duì)保留使用“RR”在發(fā)布點(diǎn)之間進(jìn)行分支的權(quán)利。
如果“微增量”(.XX)不存在,請(qǐng)?jiān)黾覴R。

6.2主干分支規(guī)則

必須在當(dāng)前日期的基礎(chǔ)上遞增全部版本號(hào)。
因此,2013年2月6日,版本號(hào)設(shè)置為:2013020600.00

6.3我們?yōu)槭裁匆种О姹?/h3>

想象一下以下場(chǎng)景:
1)Moodle 2.4發(fā)布,mod_forum版本2012120300。
2)僅在master中,王二的更新會(huì)在升級(jí)步驟【upgrade step】中刪除一個(gè)數(shù)據(jù)庫(kù)字段,并將moodle版本設(shè)置為201301010
3)在2.4.1和master中,張三修復(fù)了權(quán)限定義中的一個(gè)問(wèn)題,并將兩個(gè)分支中的版本設(shè)置為2013010200。(注意:這里將導(dǎo)致錯(cuò)誤,我們錯(cuò)誤地更改了整個(gè)未來(lái)2.4.x版本的分支日期?。?br>4)Moodle 2.5發(fā)布,mod_forum版本2013060100
5)Moodle 2.5發(fā)布后,李四將她的Moodle從Moodle 2.4.1更新為2.5。
由于張三在第3)步中的把2.4.x版本改為2013010200,這導(dǎo)致著第2)步中王二的的升級(jí)步驟將永遠(yuǎn)無(wú)法運(yùn)行。

6.4我知道STABLE和master之間沒(méi)有變化,我可以將版本號(hào)設(shè)置為相同嗎?

不是核心插件,抱歉,不能設(shè)置為相同。有太多的開發(fā)人員在使用同一個(gè)代碼,如果我們避免為core這樣做的話,它可以防止事故的發(fā)生。

發(fā)表評(píng)論

您的電子郵箱地址不會(huì)被公開。 必填項(xiàng)已用*標(biāo)注