前言
最近在公司同学的热心帮助下尝试给开源库(Hertz——Golang高性能Http框架)提了一次PR,在这里浅浅地记录一下从提pr到merge的整个过程,方便自己以及有需要的掘友。
PR地址:feat: Support Hertz to use Consul for service discovery and registration by LemonFish873310466 · Pul
Step1:找到你感兴趣的开源库
搜索Github
首先,我们可以先选一些自己感兴趣的开源库,比如Hertz——Golang高性能HTTP框架等。
推广下有很多优秀小伙伴的CloudWeGo
查看Issues
然后查看Issues列表,我们可以看到这里有22个issues等待解决👀。
一般社区都会不定期发布一些新手任务,我们可以先从简单的任务开始。
其中,我们发现其中一个issue是Hertz准备对服务注册与发现进行拓展。
Issue:github.com/cloudwego/h…
我们查看一下这个issue的详情,可以看到包括了以下几个部分
-
这个issue的描述以及目的
-
代码仓库在哪里
-
可参考的API
-
等等
主动申请
如果你觉得这个issue挺有意思,那么你可以主动地提出申请。
到此,我们就算拿到了这个issue的开发任务,接下来可以进行开发相关的工作。
Step2:编写代码
Fork 目标仓库
我们首先需要fork你想贡献的仓库到自己仓库中,通过fork我们可以编码且不会影响原仓库。
Clone 仓库
现在,我们已经包含了fork的仓库,此时我们需要把它clone到本地。
git clone [YOUR HTTPS ADDRESS]
创建新分支
clone完之后,我们接下来需要新创建一个分支进行我们的开发。
对于新增的feature,我们可以使用feat/xxx作为分支名称。
git checkout -b [BRANCH NAME]
开发并推送远端分支
通常开发需要包括实现代码、单测、README等
在完成了一些开发时,我们可以开始git 一键三连
-
git status
-
git add [YOUR FILE]
-
git commit -m [YOUR COMMIT MESSAGE]
-
git push origin [YOUR BRANCH]
单测结合github action
一般开源库都会结合github action进行单测流水线化,目录中会有.github/workflows/xxx.yml等文件,通过这些文件可以在提出pr、push等阶段进行校验。
因此,我们也需要更改这些文件,确保能执行自己的单测。
创建Pull Request
在推送完成之后,我们可以在自己fork的仓库中看到以下提示Compare & pull request
此前自己提pr的图没有截,这里引用一下参考:如何在 GitHub 提交第一个 pull request
接下来我们就可以填写关于PR的信息,通常情况下我们需要描述以下信息
-
这个PR是什么类型的(是feature还是fix等)
-
这个PR是做什么的
-
这个PR是否解决了某些issue
此前自己提pr的图没有截,这里引用一下参考:如何在 GitHub 提交第一个 pull request
填完PR的相关信息之后,恭喜你可以创建自己的PR啦!🥰🥰
同步原仓库的修改
在你开发的过程中,可能会有其他开发同学已经把自己的PR merge到main分支了。
那么这时候我们就把修改merge到自己的开发分支。
- 添加原始仓库作为upstream仓库
git remote add upstream [HTTPS]
- 获取原始仓库的变更
git fetch upstream
- 合并更改
git merge upstream/main
- 解决冲突并push到自己的开发分支
Step3:Fix原仓库维护者提出的建议
提完PR之后,我们需要确保所有单测和校验能通过。
同时也会有原仓库的维护人提出一些建议,需要我们去solve
-
单测需要补全
-
文档需要补充
-
代码实现逻辑有问题
-
等等
举个栗子:README需要补充详细一些
Step4:等待PR Merge
在所有校验步骤都完成之后,需要等待原仓库的人进行approve以及merge
当你的pr被正式采用时,会有以下提示。
最后,恭喜你向开源迈出了第一步!❤️
也非常欢迎大家一起来共建Hertz ❤️
参考
Connection refused? Docker networking and how it impacts your image