这篇文章描述笔者发现sharding-sphere的一个BUG,然后如何规范的提交PR的整个过程。
issue
PR的第一步就是提交issue,即提交你发现的BUG:
说明,如果不是BUG,而是一些优化建议,那么选择"Feature Request"。
接下来填入BUG的标题和描述,如下所示:
BUG的标题:
RoundRobinMasterSlaveLoadBalanceAlgorithm throw an ArrayIndexOutOfBoundsException,
BUG的描述(注意说明,只接受英文描述,直接会被拒绝。如果英文不够6,建议借助:translate.google.cn):
提交Issue后,静静的等待官方确认。
下载代码
得到官方确认后,Fork分支:
接下来下载你刚才fork分支的代码(我比较喜欢SSH方式,即Clone with SSH):
得到地址后,在PC上执行如下命令即可:
git clone git@github.com:feelwing1314/sharding-sphere.git
配置SSH KEYS
需要注意的是,如果是第一次下载源码,需要配置SSH KEYS,只需要简单几步即可:
cd ~/.ssh
ssh-keygen -t rsa
执行ssh-keygen这个命令的交互过程中,下面的3个地方都需要你的输入确认,全部按回车即可,
第一个回车表示生成的key保存在/c/Users/afei/.ssh/id_rsa文件中,
第2,3个回车表示以后本机的git操作都不需要密码;
Generating public/private rsa key pair.
Enter file in which to save the key (/c/Users/afei/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
最后将生成的key,即C:\Users${username}.ssh目录下id_rsa.pub文件中的内容拷贝到Github的Settings->SSH and GPG keys->New SSH key中即可,接下来就可以在你的PC上git clone了:
Fix Bug
下载代码后,建议创建一个分支再修改BUG,并且最好基于当前的开发分支,以sharding-jdbc为例,当前的开发分支是dev,创建一个fix-1265分支:
基于当前(dev)分支创建一个分支并切换到创建的分支:
git checkout -b fix-1265
接下在就是在本地修复BUG,然后commit&push。
更新fork分支
这里还有一种情况,就是之前已经fork过,这次要更新fork分支的代码为最新代码,需要如何几个步骤:
git remote add upstream git@github.com:sharding-sphere/sharding-sphere.git
查看远程分支:
git remote -v
如果现实有4条记录表示远程分支创建OK:
origin git@github.com:feelwing1314/sharding-sphere.git (fetch)
origin git@github.com:feelwing1314/sharding-sphere.git (push)
upstream git@github.com:sharding-sphere/sharding-sphere.git (fetch)
upstream git@github.com:sharding-sphere/sharding-sphere.git (push)
fetch源分支的新版本到本地:git fetch --all
合并两个版本的dev分支代码:git rebase upstream/dev
将合并后的代码push到github上去:git push origin dev
Pull Request
接下来就是最后一步Pull Request,即PR。
当你在上一步push代码后,再访问你自己的github主页时,会有pull request提示:
点击"Compare & pull request"后,就会到下面这个页面,文本框中Fixes后的issue编号就是当初提交issue的编号,最后点击Create pull request即可:
在这一页还有commit change信息,展示你此次提交的变更信息:
创建PR后,可以看到你的PR进度,接下来就耐心的等待官方接受你的PR吧:
笔者此次Pull Request参考:https://github.com/sharding-sphere/sharding-sphere/pull/1279