# 3.4\. 版本库钩子扩展
通过钩子扩展,GitHub托管的版本库可以和外部应用实现整合。整合的接口完全开放,开发者可以访问GitHub的开源项目 [github/github-services](https://github.com/github/github-services) 开发新的应用整合脚本。目前GitHub已经支持超过50个外部应用的整合,在这里恕不一一列举,仅以helloworld项目为例,介绍几个常见应用的整合。
## 3.4.1\. 邮件通知功能
配置邮件通知,可以实现新提交推送至版本库时,发送通知邮件。在版本库的管理界面,选择“Service Hooks”中的Email进入邮件通知配置界面,如图3-15所示。配置界面很简单,写上邮件地址,选择激活即可。为了便于整个团队都能收到通知邮件,可以将收件地址设置为一个邮件列表。如果选择“Send From Author”,邮件的发件者显示为提交者的邮件地址,否则发件者为noreply@github.com。
[![../images/hooks-email.png](http://www.worldhello.net/gotgithub/images/hooks-email.png)](https://box.kancloud.cn/2015-07-09_559de2e849ad3.png)
图3-15:邮件通知功能配置
邮件通知配置生效后,当有新提交推送到版本库时,会发出通知邮件,如图3-16所示。
[![../images/mail-in-gg.png](http://www.worldhello.net/gotgithub/images/mail-in-gg.png)](https://box.kancloud.cn/2015-07-09_559de2ed4b765.png)
图3-16:提交触发邮件通知
## 3.4.2\. 和Redmine整合
Redmine是一个开源的项目管理平台,用于项目的需求管理和缺陷跟踪。Redmine可以和多种版本库(包括Git)整合,可以直接通过Web界面浏览Git提交,还实现了提交和问题的关联。
Redmine需要周期性地扫描版本库,以便更新内置数据库及建立提交和问题的关联。通常是以计划任务(crontab)的方式实现版本库的周期性扫描,这导致Redmine中版本库更新会存在一定的延迟。GitHub提供的Redmine整合的钩子脚本能够在GitHub版本库更新后,通过WebService触发Redmine主动扫描Git版本库获取更新。
GitHub提供的Redmine整合的配置界面如图3-17所示。
[![../images/hooks-redmine.png](http://www.worldhello.net/gotgithub/images/hooks-redmine.png)](https://box.kancloud.cn/2015-07-09_559de2f228e87.png)
图3-17:与Redmine整合
图3-17中的地址是Redmine部署的URL地址,项目ID是Redmine中的相关项目(如果不填写则更新所有项目),而“Api Key”并非GitHub项目中配置的Api Key,而是Redmine中为版本库更新配置的全局Api Key。相应的Redmine配置界面如图3-18所示。
[![../images/redmine-api-key.png](http://www.worldhello.net/gotgithub/images/redmine-api-key.png)](https://box.kancloud.cn/2015-07-09_559de2f391765.png)
图3-18:Redmine中的API Key配置
- 前言
- 1. 探索GitHub
- 1.1. 什么是GitHub
- 1.2. GitHub亮点
- 1.3. 探索GitHub
- 2. 加入GitHub
- 2.1. 创建GitHub账号
- 2.2. 浏览托管项目
- 2.3. 社交网络
- 3. 项目托管
- 3.1. 创建新项目
- 3.2. 操作版本库
- 3.3. 公钥认证管理
- 3.4. 版本库钩子扩展
- 3.5. 建立主页
- 4. 工作协同
- 4.1. Fork + Pull模式
- 4.2. 共享版本库
- 4.3. 组织和团队
- 4.4. 代码评注
- 4.5. 缺陷跟踪
- 4.6. 维基
- 5. 付费服务
- 5.1. GitHub收费方案
- 5.2. GitHub企业版
- 6. GitHub副产品
- 6.1. GitHub:Gist
- 6.2. 其他版本控制工具支持
- 6.2.1. 用SVN操作GitHub
- 6.2.2. 用Hg操作GitHub
- 6.3. 客户端工具
- 6.4. 其他
- 7. 附录:轻量级标记语言
- 贡献者列表