当前位置: 首页 > 后端技术 > Python

【学习分享】记录开源小白第一次PR

时间:2023-03-26 12:47:14 Python

本文由RT-Thread论坛用户@yanlineng原创发布:https://club.rt-thread.org/ask/article/5a3155877b44066c.html你好大家好,我是开源新手。之前没有开源经验,没有实际体验过开源过程,也没有参与过开源活动。怀着好奇和学习的态度,想在开源社区提交自己的贡献;最近第一次向RT-Thread官方仓库提交了一个PR,最终合并成功,算是对开源的介绍,也是我的第一次开源经历。在这里我想简单记录一下这次PR的过程,希望对想参与开源和即将参与开源的朋友有所帮助~目录:关于工具和准备需要“科学上网”工具,方便访问Github;PC环境安装git;学习git相关的基本概念、基本命令,了解这款强大的版本控制软件;参考:Git基础和分支|Github的基本操作能为开源项目贡献什么?如何快速参与开源?这一定是像我这样的开源新手首先会遇到的问题。我想参与其中,但我能做些什么来做出贡献?其实我们可以看看官方仓库里的issues。有一些大家提出的问题或需要解决的问题,涉及方方面面:这里有很多问题和话题。如果没有目标,可以先看看。查看您对哪些问题感兴趣或可以解决哪些问题。这样就可以设定一个初步的目标。对于小白,可以先看“goodfirstissue”标签分类下的issue,点击上方蓝色标签即可查看该标签下的所有issue(此类issue比较适合初学者开源小白)。或者你可以有自己的想法。如果你觉得有什么地方不好,你就想自己改进。一旦你选择了你的目标,你就可以开始了。这次主要是做bsp中文档改进相关的贡献。首先,我体验了整个公关过程。如何修改内容?首先,我们需要将官方仓库fork到自己的仓库,点击Fork按钮,根据提示完成fork。然后就可以在自己的仓库看到刚刚fork出来的rt-thread:然后点击Code按钮,使用SSH克隆到本地,先复制ssh链接。在本地PC上,选择一个合适的目录,右键打开GitBash这里,进入git命令行工具,使用gitclone命令将仓库克隆到本地:gitclone【刚刚复制的ssh链接】ps:这里推荐配置githubssh连接方式(参考),不需要每次pull或者push修改到自己的仓库都输入密码。去年github更新了ssh的使用。生成ssh密钥最好的方法是按照官方教程生成ed25519密钥,其他步骤不变。克隆完成后,可以在本地目录看到整个仓库的内容。这是一个本地仓库(实际上是github上远程仓库的克隆)。我们的修改先保存在本地仓库中,然后使用相关命令将Go推送到关联的远程仓库中。然后根据我们的需要修改本地仓库中的内容。如何提交更改?修改完成后,在本地仓库目录下打开gitbash命令行界面。查看状态输入gitstatus命令可以查看当前本地仓库的状态,比如哪些文件是新添加的(new),哪些文件被修改了(modified)。添加修改使用gitadd+[filename]添加当前filename文件的修改(根据gitstatus中显示的信息,逐步添加你需要的修改),gitadd.是添加所有修改。如果你需要添加一些默认被git忽略的文件类型,使用gitadd-f[filename]。提交到本地仓库使用gitcommit-m"[本次提交的一些描述性词语]"将本次修改提交到本地仓库。如果是通过ssh克隆提交到远程仓库,应该默认添加了自己的远程仓库地址。可以使用gitremote-v查看自己是否有自己的远程仓库地址。如果没有,可以通过gitremoteorigin[远程仓库地址]添加。然后使用gitpushoriginmaster(本地分支为master,可以替换),将刚才的commit从本地仓库推送到远程仓库。然后在github上查看自己的仓库,应该可以看到刚才commit的内容,点击commit可以看到一些修改的内容,这次我主要是修改了一些文档内容,新增了一个文件。看这张对比图,你可以看到我做了一些修改,包括删减和添加。到目前为止,我已将此修改提交到我的github存储库。如何拉取请求(PR)?PR——PullRequest,所谓提交自己的PR,其实就是向官方仓库申请拉取自己的代码并合并到仓库中。直观上,自己修改了官方代码或者文档,现在想把这些修改合并到官方仓库中。这是为开源项目做贡献的最后一步。一旦PR成功,我们就完成了这部分的开源贡献。从前面的步骤可以知道,我们自己的github仓库里的rt-thread是来自官方仓库的fork,我们已经提交修改到自己的仓库了。现在我们在自己仓库的rt-thread中点击提交PR,点击图中的Newpullrequest按钮。可以看到我们已经跳转到了官方仓库,然后在下面可以看到我们自己的仓库有几个commit。然后单击右侧绿色的创建拉取请求按钮。跳转到一个详细的页面,在最上面也可以看到我们要合并我们仓库的master分支到官方仓库的master分支;我们需要在下面的编辑框中填写一些必要的信息,并如实填写参考说明。最后,继续并单击创建拉取请求。此时,即使这次启动了PR进程,你也可以在官方仓库的Pullrequests选项页面看到你的PR在进程中。第一次PR的贡献者还需要在PR界面接受CLAassistant的贡献者许可。然后等待自动化代码审查流程,等待管理员人工审查。如果一切顺利,最终的PR可以通过,那么我们的修改就可以合并到官方仓库了!一些额外的话题1.如果我们在为一个issue做贡献,提交PR后如何关联到这个issue上,让proposer能够快速看到?这里我们首先看到的是issue界面,点击相关issue可以看到title右边有一个“#”+序号,这是一个事件的标识号。在github上,可以在同一个仓库中使用这个序列号来定位唯一的地方。我的commit活动或者PR活动可以在这里显示,因为我在commit描述或者PR描述中添加了#5923,github会自动识别关联。当然,我们也可以在每个评论的地方输入相关的表格序号,它可以自动关联到相关的事件。2.PR过程中,发现之前的commit有错误,需要修改怎么办?在PR过程中,如果我们检查发现之前的commit有问题需要修改,不要急于关闭PR。因为在PR过程中,我们可以对自己仓库中提交PR的分支进行多次commit(我这里曾经是master分支),而这些commit会被PR过程自动同步,也就是说,我们可以在PR过程中提交多次提交将被推送到PR。之前发现这里有错误,想修改,于是自己关闭了PR。事实上,我不需要它。后面继续提交修改内容即可。这也应该为管理员和开发人员在PR过程中修改提交提供一些灵活性。遇到一些小问题,小bug,不需要关闭PR重新来过,继续提交即可。在PR过程中,还可以看到整体的修改效果,也就是说,多个commit会整合在一起,查看PR过程的最新修改状态。如下图,在PR界面点击Fileschanged,修改设置即可看到对比图。3.关于branch的一些问题在这次贡献过程中,我在fork了官方仓库的rt-thread后,从自己的仓库拉取了rt-thread到本地。此时默认只有master主分支,修改完成后commit到master分支。其实,这是不明智的。你可以想象一下,如果我们需要同时开发很多功能,我们也会同时在master的一个分支上进行修改。那么很可能master分支上的代码会被放到错误的状态。虽然git工具支持版本回滚,但是这个过程会带来其他问题。我这次只是做了一个简单的修改,确实不会造成严重的后果,但是这个风险是存在的。因此,最好在每次修改需求开始时,新建一个属于本次修改目的的分支,并与主分支master隔离。这样无论你在新的分支上怎么修改,基本都不会影响主分支。master上代码的状态在master分支上可以一直保持正确运行。修改完成,测试成熟后,该分支将合并到主分支中。以此为基础,可以进行多分支的需求开发。关于分支的理解,参考git分支有什么用?结束语对于第一次PR的成功,我还是有点小激动的。很高兴看到我的提交可以合并到官方仓库中。回想之前为什么不参与开源,主要是觉得开源贡献的难度和工作量有多大,觉得自己能力不够。事实上,开源项目中有很多细节需要开发者去完善。这些任务或难或易,你可以根据自己的能力或时间来选择。开源的目的不是以某种硬性条件为标准,而是人人都可以为开源项目贡献力量,积极贡献,贡献力量。第一次写文章,我会根据个人理解来解释一下。如有任何问题,请多多包涵。有兴趣的小伙伴也可以看看这个链接HowtosubmitaPRtoRT-Thread,官方有一个PR视频教程教你如何从0开始给RT-Thread贡献代码。