我们真诚地感谢您的贡献,欢迎通过 GitHub 的 fork 和 pull request 流程来提交代码。
在您的代码合入之前请签署个人或者公司的Contributor License Agreement(CLA)。
请您选择合适的CLA并仔细阅读,在您签署CLA后方可将代码合入。
在新提交的代码中包含license:
- c++代码头文件
/* Copyright (c) 2018 Anakin Authors, Inc. All Rights Reserved.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/
- python代码
# Copyright (c) 2018 Anakin Authors, Inc. All Rights Reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
- 代码注释请遵守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进行回复,而非直接回复的方式。