大家好哇,许久不见,也感谢大家这么久一直以来的关注,也感谢在短视频盛行的今天,你们还能静下心来坚守文字的阵地。
说到这次的主题,参加鸿蒙项目的开源,也是小编第一次拥抱开源,就像是别人有困难,然后给予帮助的那种快乐感。之前也了解过开源,曾得到过某位大佬赠予的开源书籍,但是一直止于实践,经过这次开源项目的实践后我想以后有类似的项目还会继续参加。
可能有人会觉得参加开源并不会得到什么,毕竟为爱发电这种事还是很少有人去做。可当我们真正去参与到其中的时候,就会发现原来这个团体有这么多小伙伴,大家在一起可以互相学习交流,可以一起探索新的知识,在开源的这个团体中可以让我们学得更多。
接下来小编将会带大家认识提 Bug 的大致流程。
**
一、准备工作
**
可能会有小伙伴不知道提 PR(Pull Requests)是啥,简单来说,就是拉取(forked)一个代码仓库,然后 clone 到本地查找错误,然后通过 Git 把这个经过修改的仓库 push 上去。push 上去后就需要提交 PR 给这个开源项目的管理者,PR 中包括了找到的什么错误,对项目有什么影响等等,随后会有相关的进行查阅编译,在提交 PR 的时候可能会需要提一个 Issues。
那么首先需要我们下载一个 Git,相关步骤:用Hexo+Github Pages搭建私人博客(第二站)
当我们下载完 Git 后暂时不做相关的配置。
这里以小编提交两次 PR 为例,第一次是在 Docs 仓提交的轻量级 PR,简单来说就是简单的修改你觉得文档中有什么表达不好或者有语法错误的地方;第二次是修改了部分源代码。
To:主要会讲到在提交时踩过的坑~
二、轻量级 PR 提交
1.首先我们找到 OpenHarmony 的开源仓库:
https://gitee.com/openharmony
2.找到如下页面中的 docs 仓库,点击进去:
3.在 docs 仓库里面的右上角找到 Forked,选择你的账号并确认,如下:
To:此步骤好比是将 docs 仓库复制粘贴到你自己账号下面。
4.等待刷新后会进入到我们的 docs 仓库,接下来就是我们去相关文档查看有没有需要修改的地方:
To:比如这里小编一直点击到 docs 仓库的 zh-cn/design/API-Review-Template.md
目录下。
5.在文档下标题上面的一框中找到编辑,进入编辑页面即可使用 markdown 语法进行修改:
修改完成后,我们将页面滑到最下面,在扩展信息中可填写修改的理由,并在最后加上:Signed-off-by: Gitee 用户名 <邮箱>
然后我们点提交即可。
返回到 Gitee 的 docs 仓库下便可以看到我们提交了一个修改内容,那么我们既然要把这个内容修改到开源的远程仓库里面,就需要提交一个 PR 到远程仓库,即合并修改的内容。
如上图,我们找到 Pull Requests,然后再找到新建 Pull Request,点击进去后会进入到一个填写信息的页面,如下,首先要填写的是标题,在下面的框框内大概描述一下修改的说明,填写完后点击下面的创建 Pull Request 即可。
进入后我们会进入一个页面,下面可以看到有评论的地方,首先第一步我们可以先评论 start build 进行编译测试,这时我们会发现一个问题,它需要我们签署一个 DOC 协议,如下:
这种情况我们只需点击进去按照步骤来,随后评论 check dco 检查完后继续评论 start build 即可。
**
三、通过 Git 提交 PR
**
当我们有对源码进行修改然后提交 PR 时就需要通过 Git 这个分布式版本控制系统(能够实现本地版本控制),它可以快速、高效地处理项目版本管理。值得注意的是我们在管理项目时如果有多个账号就需要设置好用户名和邮箱,比如在设置邮箱时就需要注意是否添加–global,添加它就代表此用户名和邮箱为全局配置。在配置完后我们还需要将 Github 或者 Gitee 里面的公钥添加到我们的 Git 里面,相关内容在前面的博客设置中有使用到。
在设置好相关配置后,当我们把需要修改的代码仓 clone 下来后便是查找 Bug,关于查找 Bug 这里就不多展示了。
这里关于提交到仓库和之前博客提交到 Github 上是差不多的,主要是其中会遇到很多问题,小编这里把遇到的一些相关问题给大家展示出来,方便以后大家可以快速解决。
1.Clone 仓库时报错
当我们在 Git 上输入 git clone xxxx 时,发现报错如下:“fatal: Could not read from remote repository.”
首先需要排查的就是自己的账户以及 ssh 公钥有没有设置好。小编主要是之前配过 Github 上面的,然后在 Gitee 上面没有配置,所以会有报错。
2. gitBash did not match any file(s) known to git
这个报错主要可能有两个原因,第一个可能是在 commit 的时候使用的是单引号,这个在 Linux 系统是可行的,但是在 Windows 上只能使用双引号,当然这个报错也是最简单。
还有一个可能是分支问题,不过这个主要是我们管理之前的仓库时容易遇到的问题,在提交 PR 时可不考虑此问题,当然这也要我们去解决啦。
比如我们克隆了一个仓库,然后切换到 master 分支,但是在切换时就会提示上面的错误。
git checkout master
首先我们看一下分支情况:
git branch -a
如果没有找到我们想要的分支,则输入 git fetch 获取所有分支。然后切换到远程 master 分支,使用如下命令:
git checkout origin/mater//输出develop
此时也会报错,但不管它,我们继续运行命令:
git checkout -b master
git pull
此时也会报错,说明我们建立的 master 分支不能和远程的 master 分支建立联系。那么我们继续命令:、
git branch -u origin/master master
git pull
//输出:Already up-to-date.说明问题已解决
当然也有一些其他的小问题,但是最终在查资料的情况下也是可以解决的,加上现在 ChatGPT 出来了,对于我们解决问题的速度无疑是巨大的提升。
最后,这篇文章也是在去年暑假就打了草稿,由于一些原因并没有继续完成,这里也希望能够继续和大家一起分享。当时也是和另外一位大佬一起参与的开源项目,也感谢能够有他的指导。也感谢大家一直都在路上,我想不管风雨兼程,总有一天能够到达自己想要到达的终点!