最近在准备训练数据的过程中深深体会到了数据标注的困难与枯燥,碰巧又从推送里看到一个相关的开源项目,目标也是简化这一流程,毫不犹豫的发邮件申请加入贡献开源代码。这里也顺便推广一下项目,希望更多热心的朋友贡献自己的想法和代码。项目的具体内容可以在下面的地址中了解,这里仅仅记录作为新手向开源项目提交代码的过程。
项目地址:https://github.com/crownpku/Chinese-Annotator
整个过程可大致分为以下几步:
- 了解项目架构以及项目进展状况,明确目标。
- fork 源码到自己仓库
- coding
- 同步源项目代码,修改冲突
- pull request提交合并请求
- 接受代码评审,完成合并。
了解项目架构与进展
在考虑加入一个开源项目之前首先要对项目有一定的了解,明确自己需要在哪一部分贡献代码,这里可以通过阅读项目文档、提issue或向负责团队发邮件咨询。尽量先自己去了解,有针对的提问题,提高沟通效率。对于比较成熟的项目,更多的则是在使用过程中发现问题,并尝试解决问题的开发方式。
fork 源项目
由于权限问题,我们无法直接向源项目提交代码,需要先将源项目fork到自己仓库,完成自己的代码编写后再向源项目提交merge请求。
coding
fork源项目后就可以将fork到自己仓库的源码clone到本地进行代码编写。接着就是git add、git commit、git push等一系列或者反复的常规操作。
同步源项目代码,修改冲突
完成代码编写后,需要向源项目提交merge请求,这里也是本文的重点。该步骤可以通过命令行和github图形界面两种操作进行,这里主要讲后者。
提交pull request
由于上一步的git push后,自己仓库的代码得到更新。接着登录自己的项目主页,可以看到:
pull_request.png
点击pull request 进入代码变动比较页面:
image.png
很多情况下,由于自己在开发的过程中,源项目也在不断的更新,或者别人和自己修改了同一段代码,这会导致自动合并的失败,这时候需要先同步源项目的改动,并进行冲突的修改(选择提交自己的代码还是源项目代码)。
同步源项目代码
同步源项目代码本质上是将源项目merge到自己仓库的项目里,和上面要做的是相反的过程,因此只要修改下面两个项目地址的顺序:
merge1.png
点击create pull request,同步远端代码。
merge2.png
可以看到,远端的代码和自己仓库的代码同样不能自动合并,需要用命令行本地操作,并解决冲突。具体的方法网页上会有提示,这里不专门解释。
重新提交pull request
再经历了上面的操作后重新返回到最开始的pull request,这时项目已经可以提交,点击提交请求,到源项目的页面就可以看到自己的merge请求。这时可以在自己的request页面添加评论或注释,明确自己的改动和目的,方便评审代码的大佬进行review。
如果顺利,恭喜完成了一次代码贡献,也会有reject的可能,这时就需要根据反馈再做调整。
小结
万事开头难,文章记录了本周从开始打算参与这个开源项目到完成代码提交的大致过程,感兴趣的朋友欢迎加入,最后附上一个项目简介与招募链接:
网友评论