前面我们讨论的场景三和场景四都是在合作紧密的开发团队中使用的,这样的开发团队具有良好的信任关系,具有共同遵守的、规范的项目开发流程。但是开源社区的开发活动往往是松散的,团队成员的技术水平往往参差不齐,开发流程千差万别。这时如果采用场景三和场景四中推荐的参考工作流程,项目仓库的网络图就会“一团糟”。
为解决开源社区松散团队的协作问题,GitHub提供了Fork + Pull request的协作开发工作流程。当你想更正别人仓库里的bug或者向别人的仓库贡献代码时可以执行此流程。
(1)先“Fork”(分叉)别人的仓库,相当于复制一份。
(2)做一些漏洞修复或其他的代码贡献。
(3)发起Pull request给原仓库。
(4)原仓库的所有者审核Pull request,如果没有问题,就会合并Pull request到原仓库。
接下来按步骤简要看一下整个Fork + Pull request的过程。
(1)在某个项目页面的右上角单击Fork按钮
系统会以该项目仓库为蓝本为你创建一个新的版本库,然后直接进入新建的版本库,如下图所示。注意,新建的版本库页面有Pull request按钮。
(2) 可以参考前面场景一、二 、三 、四的做法,在新建的版本库中独立工作,最终将漏洞修复或其他的代码贡献同步到远程新建的版本库中。
(3)创建Pull request。在Fork的版本库页面找到Pull request按钮并点击,可以看到新建版本库与原仓库之间的所有变更信息。
(4)处理Pull request。原仓库的所有者审核Pull request,如果没有问题,就会合并Pull request到原仓库。
以上内容为中科大软件学院《高级软件工程》课后总结,感谢孟宁老师的倾心教授,老师讲的太好啦(^_^)
参考资料:《代码中的软件工程》 孟宁 编著