GitHub中Issue的使用
2016-04-08 本文已影响14337人
Dunizb
在软件开发过程中,开发者们为了跟踪BUG及进行软件相关讨论,进而方便管理,创建了Issue。管理Issue的系统称为BTS(Bug Tracking System,Bug跟踪系统)。当今具有代表性的BTS有Redmine、Trac、BugZilla等。
GitHub自身也加入了BTS的功能。在GitHub上,可以将它作为软件开发者之间的交流工具,多多加以利用。遇到下面几种情况时,各位就可以使用这个功能。
- 发现软件的BUG并报告
- 有事想向作者询问、探讨
- 事先列出今后准备实施的任务
Issue除BUG管理之外还有许多其他用途。在软件开发者圈子中,将Issue用于多种用途的情况已经司空见惯。作为GitHub的功能之一,我们来学习Issue的一些简单用法。
简洁且表现力丰富的描述方法
GitHub的Issue及评论可以使用GFM(Github Flavored Markdown)语法进行描述,从而获得丰富的表现力。比如像下图1那样描述,然后点击Preview,就可以看到图2中那种标记后的效果。
1.png
注意:“#”和后面的文字之间要有一个空格,否则无效
2.png
在文本框的下面可以找到GFM语法样式相关帮助的链接
3.png
1. 语法高亮
假设我们像下面这样,先指定语言再描述代码。
```js
var viewName = function(userName){
alert("你好," + userName +",欢迎光临!");
}
``` ```
以上JavaScript代码
这样一来,代码就会自动如图3所示被添加语法高亮,变得直观易读。
![4.0.png](http:https://img.haomeiwen.com/i68937/45eada00c19bca1f.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
###2. 添加图片
添加图片也十分简单,只需要将图片拖拽到文本框中便可以粘贴图片。
###3. 添加标签以便整理
Issue可以通过添加标签(Label)来进行整理。添加标签后,Issue的标题后面就会显示标签(图4)。点击标签,还可以只显示该类标签的Issue,GitHub默认给我们设定了几个标签类型。
![4.png](http:https://img.haomeiwen.com/i68937/475f9810afe1f718.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
###4. 添加里程碑以便管理
处标签外,还可以通告添加里程碑来管理Issue。通过图5可以看出,项目距离下一个版本还有12个Issue需要实施,整体的14%已经实施完毕并Close。从这里的链接我们可以看出剩余的Issue。
![5.png](http:https://img.haomeiwen.com/i68937/c68505fbfea9b383.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
注意:在添加Issue时常会看到图5中这种贡献规范的链接。改仓库的根目录下添加CONTRIBUTING.md文件后该链接就会显示出来。
![6.png](http:https://img.haomeiwen.com/i68937/76af86365c58a6d6.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
规范的内容一般包括报告时Issue的描述方法、Pull Request时的规则或要求、许可证的相关信息等。为了在开源项目开发中能与其他人和谐相处,请务必在贡献之前仔细阅读这些规则。
###5. Tasklist语法
我们使用GFM的一项独有功能,那就是Tasklist(任务列表)语法。首先试着按下面的格式进行描述。
本月要做的任务
- [x] 完成部署工具的设置
- [ ] 博客文章更新
- [ ] 实现抽奖功能
这样一来,这段文字就会呗标记成复选框列表的样式。这个复选框列表可以直接勾选或者取消,不必打开Issue的编辑页面重新编辑,十分方便。
![7.png](http:https://img.haomeiwen.com/i68937/8aa1c37326c66970.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
通过提交信息操作Issue
================================
在GitHub上,只要按照特定的格式描述提交信息,就可以像一般BTS带有的功能那样对Issue进行操作。
###Close Issue
如果一个处于Open状态的Issue已经处理完毕,只要在该提交中以下列任意一种格式描述提交信息,对应的Issue就会被Close。
+ fix #24
+ fixes #24
+ fixed #24
+ close #24
+ closes #24
+ closed #24
+ resolve #24
+ resolves #24
+ resolved #24
利用这个方法,每次提交并Push之后,就不必再大费周章地到GitHub的Issue中寻找相应的Issue手动Close,省去了不少麻烦。像这样,只要按照特定的格式描述提交信息,Github就会自动识别并处理,很多GitHub之外的BTS也实现了这一功能。
******************************************
文章首发于我的博客[https://dunizb.com](//dunizb.com),转载请注明出处