如何贡献代码和文档

    签署贡献者许可协议(CLA)

    什么是?

    签署协议链接:vesoft inc. Contributor License Agreement

    单击按钮Sign in with GitHub to agree签署协议。

    如果有任何问题,请发送邮件至。

    Nebula Graph文档以Markdown语言编写。单击文档标题右侧的铅笔图标即可提交修改建议。

    该方法仅适用于修改单篇文档。

    该方法适用于贡献代码、批量修改多篇文档或者新增文档。

    Step 1:通过GitHub fork仓库

    Nebula Graph项目有很多仓库,以为例:

    1. 访问https://github.com/vesoft-inc/nebula

    2. 在右上角单击按钮Fork,然后单击用户名,即可fork出nebula-graph仓库。

    Step 2:将分支克隆到本地

    1. 定义本地工作目录。

    2. 克隆代码。

      1. mkdir -p $working_dir
      2. cd $working_dir
      3. git clone https://github.com/$user/nebula-graph.git
      4. # 或:git clone git@github.com:$user/nebula-graph.git
      5. cd $working_dir/nebula
      6. git remote add upstream https://github.com/vesoft-inc/nebula.git
      7. # 或:git remote add upstream git@github.com:vesoft-inc/nebula.git
      8. # 由于没有写访问权限,请勿推送至上游主分支。
      9. git remote set-url --push upstream no_push
      10. # 正确的格式为:
      11. # origin git@github.com:$(user)/nebula-graph.git (fetch)
      12. # origin git@github.com:$(user)/nebula-graph.git (push)
      13. # upstream https://github.com/vesoft-inc/nebula (fetch)
      14. # upstream no_push (push)
      15. git remote -v
    3. (可选)定义pre-commit hook。

      请将Nebula Graph的pre-commit hook连接到.git目录。

      1. ln -s $working_dir/nebula-graph/.linters/cpp/hooks/pre-commit.sh .

      pre-commit hook有时候可能无法正常执行,用户必须手动执行。

    1. 更新本地主分支。

      1. cd $working_dir/nebula
      2. git fetch upstream
      3. git checkout master
      4. git rebase upstream/master
    2. 从主分支创建并切换分支:

      1. git checkout -b myfeature

      Note

      由于一个PR通常包含多个commits,最终合入upstream/master分支时,我们会将这些commits挤压(squash)成一个commit进行合并。因此强烈建议创建一个独立的分支进行更改,这样在合入时才容易被挤压。合并后,这个分支可以被丢弃。如果未创建单独的分支,而是直接将commits提交至origin/master,在合入时,可能会出现问题。 若未创建单独的分支(或是origin/master合并了其他的分支等),导致origin/master和upstream/master不一致时,用户可以使用hard reset强制两者进行一致。例如:

      1. git fetch upstream
      2. git reset --hard upstream/master
      3. git push --force origin master

    Step 4:开发

    • 代码风格

      Nebula Graph采用cpplint来确保代码符合Google的代码风格指南。检查器将在提交代码之前执行。

    • 单元测试要求

      请为新功能或Bug修复添加单元测试。

    • 构建代码时开启单元测试

      详情请参见。

      Note

      请确保已设置-DENABLE_TESTING = ON启用构建单元测试。

    • 运行所有单元测试

      nebula根目录执行如下命令:

    Step 5:保持分支同步

    1. # 当处于myfeature分支时。
    2. git fetch upstream
    3. git rebase upstream/master

    Step 6:Commit

    提交代码更改:

    1. git commit -a

    用户可以使用命令--amend重新编辑之前的代码。

    需要审核或离线备份代码时,可以将本地仓库创建的分支push到GitHub的远程仓库。

    1. git push origin myfeature

    Step 8:创建pull request

    1. 访问fork出的仓库https://github.com/$user/nebula-graph (替换此处的用户名$user)。

    Step 9:代码审查

    pull request创建后,至少需要两人审查。审查人员将进行彻底的代码审查,以确保变更满足存储库的贡献准则和其他质量标准。

    添加测试用例的方法参见How to add test cases

    Step 1:确认项目捐赠

    通过邮件、微信、Slack等方式联络Nebula Graph官方人员,确认捐赠项目一事。项目将被捐赠至Nebula Contrib组织下。

    邮件地址:info@vesoft.com

    微信:NebulaGraphbot

    Slack:Join Slack

    由Nebula Graph官方人员给出Nebula Contrib的项目接收者ID。

    Step 3:捐赠项目

    由您将项目转移至本次捐赠的项目接受人,并由项目接收者将该项目转移至Nebula Contrib组织下。捐赠后,您将以Maintain角色继续主导社区项目的发展。

    GitHub上转移仓库的操作,请参见Transferring a repository owned by your user account