管理員使用Git指導
此頁描述了如何維護生產伺服器上Moodle的複本,並通過Git進行輕鬆地升級。如果你修改過Moodle的核心代碼,那麼建議你按照Moodle開發的Git快速開始指導的說明文檔來執行。
花費時間與精力去理解Git大部分的基礎概念是值得的——參見下面的另請參閱部分。學習過程可能是曲折的,尤其是之前使用CVS或Subversion管理代碼的管理員。
獲得Git
Git設計之初僅限於支持Linux,但是現在可以支持大部分流行的作業系統:
- Git的下載列表站點——http://git-scm.com/download。
一旦下載並安裝完與系統相對應的Git應用程式,此文檔內的Git命令就應當可以在你的作業系統上正常運行了。
從Git獲取源碼
此處討論Git的命令行版本問題。圖形化的客戶端比命令行版本的封裝更小,所以應該能從此處很容易的推斷出正確的參數。
Git的Moodle官方知識庫為git://git.moodle.org/moodle.git(還有一個官方的克隆地址(git://github.com/moodle/moodle.git))。使用如下命令行初始化你的本地檢出:$ cd /path/to/your/webroot $ git clone git://git.moodle.org/moodle.git (1) $ cd moodle $ git branch -a (2) $ git branch --track MOODLE_27_STABLE origin/MOODLE_27_STABLE (3) $ git checkout MOODLE_27_STABLE (4)
- 命令(1)初始化了新的本地庫以作為「上游(upsteam)」moodle.git庫(如,基於遠程伺服器)的克隆體。默認稱上游庫為「原點(origin)」。創建新的名為moodle的目錄,用以存放所有下載的文件。此次操作可能花費一些時間,因為其需要獲取所有Moodle版本的全部歷史信息。
- 命令(2)列出了所有可用分支。
- 命令(3)創建了一個全新的名為MOODLE_27_STABLE的本地分支,並將其設置為跟蹤上游庫的遠程分支MOODLE_27_STABLE。
- 命令(4)事實上是用於切換到新建的本地分支。
需要注意的是Git的每個命令都有數量龐大的選項,僅使用一個獨立的命令確實可以完成上述過程(留下來做一個練習!!)。
穿過防火牆使用Git
Git所用的只讀協議可能會被你的防火牆(9418端口)阻擋在外。如若真的遇到此問題,可以使用Github的http版本https://github.com/moodle/moodle.git。這個版本有點慢,但是可以用的話還是用它吧。
更新安裝程序
每周一、周二,Moodle開發團隊會對修復的bug進行整合併測試。到了周三就可以通過更新代碼的方式安裝所有補丁包了。查驗簡短日誌(shortlog)以確認官方資源庫是否已經更新了。
更新代碼到最新版本(MOODLE_27_STABLE的分支)所需做的所有事情是:$ cd /path/to/your/moodle/ $ git pull如果更新的是生產站點,那麼仍然需要考慮升級說明文檔的問題(如,備份系統)。
從Git庫中安裝提供的擴展
這是從其他Git資源庫向你的Moodle資源庫添加插件的一種處理方式。另一種方式是使用Git子模塊。然而,在編輯此篇文章時,Git子模塊功能仍然是粗糙的、有待完善的功能,應當被當作進階選項來看待。
例如,我們想從Git資源庫向Moodle2.7安裝認證模塊。$ cd /path/to/your/moodle/ $ cd mod (1) $ git clone https://github.com/markn86/moodle-mod_certificate.git certificate (2) $ cd certificate $ git checkout -b MOODLE_27_STABLE origin/MOODLE_27_STABLE (3) $ git branch -d master (4)命令(1)將當前目錄變更為本地Moodle克隆的mod文件夾。命令(2)創建了一個新的子目錄certificate,然後在本地克隆了普通的認證庫。命令(3)創建了新的本地分支以通過Moodle2.7的證書版本跟蹤遠程分支。命令(4)刪除了在命令(2)執行時自動創建的master,因為我們不想把它放在生產檢出環境裏。 注意:需要先檢查模塊是否與Moodle分支兼容,可以通過直接詢問之前克隆軟件庫的維護人員——如果想通過猜測——還可以通過在執行命令(3)之前運行如下命令代碼,下列代碼只為驗證哪些分支是有效的:
$ git branch -a * master remotes/origin/HEAD -> origin/master remotes/origin/MOODLE_20_STABLE remotes/origin/MOODLE_21_STABLE remotes/origin/MOODLE_22_STABLE remotes/origin/MOODLE_23_STABLE remotes/origin/MOODLE_24_STABLE remotes/origin/MOODLE_25_STABLE remotes/origin/MOODLE_26_STABLE remotes/origin/MOODLE_27_STABLE remotes/origin/master這將避免命令(3)所執行的分支不存在時發出的錯誤消息,如:
§ git checkout -b MOODLE_27_STABLE origin/MOODLE_27_STABLE現在把新目錄mod/certificate/放到Moodle主克隆的忽略文件列表裏是明智之舉,否則主克隆將會時刻提醒你檢測到新的代碼。致命:Git检出:更新路径与切换后的分支不兼容。 你是否愿意检出'origin/MOODLE_27_STABLE',而其不能作为提交来解决?(<span style="background-color:#ff0000">Did you intend to checkout 'origin/MOODLE_27_STABLE' which can not be resolved as commit?</span>)
$ cd /path/to/your/moodle/ $ echo /mod/certificate/ >> .git/info/exclude為更新Moodle安裝程序,必須要訪問Git資源庫並從上游拖拽變更事項。
$ cd /path/to/your/moodle/在Moodle安裝根目錄編寫這幾行Shell腳本是非常好的主意。否則很容易忘記Git資源庫的Moodle庫的主要內容是什麼。$ git pull $ cd mod/certificate
$ git pull
另請參閱
- Moodle文檔
- Git FAQ
- 使用Git在Win上安裝Moodle
- OS X上使用Git
- dev:Moodle版本
- 一些截圖請參見User:Frank_Ralf/Git (仍然可用)
- 修復跟蹤的問題 (MDL) / Moodle分叉 / 貢獻代碼code ... User:Sam_Hemelryk/My_Moodle_Git_workflow
- 研究Git的案例+柏林科技大學的Moodle
- Moodle討論區的討論
- 生產環境下Github和Moodle開發
- 如何在我的站點安裝GIT
- GIT幫助
- 使用Git管理提交上來代碼的最佳方法
- 跟蹤第三方模塊和插件簡便的Git提示
- Moodle Git資源庫
- Git和CVS
- 傻瓜式使用GIT
- Git及其升級誤區
- 管理員(非開發人員)所用的清晰的Git指南
- 額外資源