翻译于 2013/03/12 11:20
使用Hub库,可以将 Github 的 Issue 转成 Pull Requests。这引出了本文介绍的一个有用的Github 工作流。
这并不是什么新鲜事;在之前就有提到过。然而,这是我一直在做的事,同时开发django-oscar,我也受够了对它的解释。这篇文章对我所指向的人是一个参考。
1)讨论
讨论项目的邮件列表上的一个新功能的想法。商定需要做什么。
2)指定
为该功能创建一个GitHub的issue。
写ticket作为一个简单的功能规格时常是有用的,记录如用户故事一样的需求。GitHub的support for checkboxes in markdown在这里很有用:
3)执行
在该issue上创建一个功能分支以使其工作:
(master) $ git checkout -b issue/472/django1.5
我发现在分支名称中包含issue编号是很有帮助的,但是可能你并不这样想。
像平常一样在你的分支上执行和提交。
4)审查
现在推送到远程端:
(issue/472/django1.5) $ git push -u origin issue/472/django1.5同时附上你提交的初始issue,继而将其转换成pull request。
(issue/472/django1.5) $ hub pull-request -i 472 -h tangentlabs:issue/472/django1tangentlabs是初始远程拥有者的Github用户名。
注意到issue分支是被推送到初始远程端而不是分流。这佯做让其他增加pull request提交的开发者而言,提供了便利。
5)迭代
pull request现在可以进行代码审查和进一步执行。该过程一直持续,直到问题被解决,能被合并到主(端)。
Hub的 pull-request命令是有用的但相对来说也是未知的。-i标志显示Github 的issue 编号,而-h标志指定了 pull request的源分支。下面是相关的帮助说明片段:
it pull-request [-f] [TITLE|-i ISSUE|ISSUE-URL] [-b BASE] [-h HEAD] 为"原产地"远程点项目在GitHub上打开一个pull request。默认的pull request 的头部信 息是当前的分支。 pull request的基本信息和头部,能通过以下的格式明确的给出: "branch", "owner:branch", "owner/repo:branch"。 如果校验到当前的主要分支有本地提交,但没有 被推送到远程分支上的上游分支,该命令将中止操作。 使用 -f标志跳过该校验。 如果标题被省略,在打开的文本编辑器中,可以和git提交的信息以同样的方式输入pull request 的标题和正文。 如果不是正常的标题,-i参数得到的不是一个正常的issue编号,pull request将附加在已存在的 GitHub的issue上。此外,取代标题,你可以给GitHub上的issue粘贴一个完整地URL。
没有该命令,最终你将为同一工作块创建一个独立的pull-request和issue。
你可以通过Oscar's pull requests以运行的方式查看该工作流。
评论删除后,数据将无法恢复
评论(1)