我们真诚地感谢您的贡献,欢迎通过 GitHub 的 fork 和 pull request 流程来提交代码。
- 代码注释请遵守Doxygen的样式
- 所有代码必须具有单元测试
- 通过所有单元测试
- 请遵守提交代码的一些约定
以下教程将指导您提交代码
首先跳转到Anakin的github首页,然后点击Fork
, 生成自己目录下的仓库
将远程仓库clone到本地:
git clone YOUR_REPOSITORY_URL
cd Anakin
Anakin目前使用Git流分支模型进行开发, 测试和维护。
所有的feature和bug fix的开发工作都应该在一个新的分支上完成,根据需要从现有分支上创建新分支。
使用git checkout -b
创建并切换到新分支
git checkout -b YOUR_NEW_BRANCH
编写代码
详细请参考Docker installation guide 和 build from source guide。
提交代码时,请认真写好提交说明,这样其他人就可以清楚的知道这次提交做了哪些改变:
git commit -m 'description'
在发起Pull Request之前,需要与原始仓库同步。
如果还没添加原仓库,请先添加源,可通过git remote -v
查看是否添加源:
git remote -v
origin .... (fetch)
origin .... (push)
如果只出现origin,说明还未添加源,可通过如下命令添加源:
git remote add upstream ORIGIN_REPOSITORY_URL
获取 upstream 的最新代码并更新当前分支
git fetch upstream
git pull upstream BRANCH_NAME
将本地的修改push到远程仓库上
git push origin BRANCH_NAME
接下来等待review。
在PR被merge进主仓库后,可以在PR的界面删除远程仓库的分支。
也可以通过以下命令删除远程分支:
git push origin :YOUR_NEW_BRANCH
最后,删除本地分支。
#切换到其他分支
git checkout OTHER_BRANCH
#删除YOUR_NEW_BRANCH分支
git branch -D YOUR_NEW_BRANCH
至此,我们就完成了一次代码贡献的过程。
为了使评审人在评审代码时更好地专注于代码本身,请您每次提交代码时,遵守以下约定:
- 提交Pull Request前:
-
注意commit的数量
-
原因:如果仅仅修改一个文件但提交了十几个commit,每个commit只做了少量的修改,这会给评审人带来很大困扰。评审人需要逐一查看每个commit才能知道做了哪些修改,且不排除commit之间的修改存在相互覆盖的情况。
-
建议:每次提交时,保持尽量少的commit,可以通过
git commit --amend
补充上次的commit。对已经Push到远程仓库的多个commit,可以参考squash commits after push
-
-
注意每个commit的名称:应能反映当前commit的内容,不能太随意。
- 如果解决了某个Issue的问题,请在该Pull Request的第一个评论框中加上:
fix #issue_number
,这样当该Pull Request被合并后,会自动关闭对应的Issue。关键词包括:close, closes, closed, fix, fixes, fixed, resolve, resolves, resolved,请选择合适的词汇。详细可参考Closing issues via commit messages。
在回复评审人意见时,请您遵守以下约定:
- 评审人的每个意见都必须回复
- 对评审意见同意且按其修改完的,给个简单的Done即可
- 对评审意见不同意的,请给出您自己的反驳理由。
- 如果评审意见比较多
- 请给出总体的修改情况。
- 请采用start a review进行回复,而非直接回复的方式。