管理员使用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指南
- 额外资源