贡献代码
简介
Neo4j 社区是一个自由软件和开源社区,其核心是 Neo4j 图形数据库的软件和组件。它由 Neo Technology 赞助,后者提供基础设施(各种托管、文档等)以及管理人员。Neo4j 社区是一个开放社区,欢迎任何接受基本贡献标准的成员。
贡献可以有多种形式(文档、讨论、错误报告)。本文档概述了代码贡献者的治理规则。
贡献者角色
每个贡献代码的个人都在特定角色下进行(一个人可以拥有多个角色)。该角色定义了他们的职责和权限:
-
补丁提交者 是希望为现有组件贡献补丁的人。请参阅下方的 贡献工作流。
-
提交者 可以直接向一个或多个组件贡献代码。
-
组件维护者 负责特定组件。他们可以:
-
在他们组件的仓库中提交代码,
-
管理仓库的工单,
-
授予仓库推送权限。
-
-
Neo4j 管理员 管理 Neo4j 基础设施。他们:
-
定义新组件并分配组件维护权,
-
推动、指导和培养 Neo4j 组件开发。
-
贡献工作流
单元测试
如果您提供涵盖您所编写代码的、小而易读的单元测试,您的更改被接受的机会会大大增加。此外,请确保您的代码不会破坏任何现有测试。请注意,根据您的更改,可能还需要测试下游组件。
要运行测试,请使用 Maven 而不是您的 IDE,以确保其他人可以复现您的测试运行。在任何给定组件中运行 Neo4j 测试的命令是 mvn clean test
。
单元测试的通用结构如下:
@Test
public void myTest()
{
// Given
[ Setup code here, setting the stage and
parameters that are relevant ]
// When
[ The code that is being tested, preferably
just one line, like calling a method ]
// Then
[ Assertions on the result ]
}
代码风格
Neo4j 代码风格维护在 http://neo4j.github.io/。
提交消息
请注意提供良好的提交消息;关于良好实践的优秀总结可以在 http://chris.beams.io/posts/git-commit/ 找到。另请考虑以下准则:
-
使用英文。这包括正确的标点符号和拼写。提交消息旨在一目了然地传达信息——它们不是聊天室。
-
请记住,一次提交是一个变更集,它描述了跨多个文件的内聚更改集合。尝试将每次提交分组为一个逻辑更改。解释它更改了什么。如果您需要重做工作,您可能需要在进行拉取请求之前清理您的提交日志。
-
如果您修复了一个与工单相关的错误或问题,请在消息中提及该工单。例如,"添加了这个然后更改了那个。这修复了 #14。" 只需在提交中提及 #xxx 即可将其与具有该编号的 GitHub 问题连接起来,请参阅 GitHub 问题。以下任何同义词也都有效:
-
fixes #xxx
-
fixed #xxx
-
fix #xxx
-
closes #xxx
-
close #xxx
-
closed #xxx。
-
-
请记住传达意图。不要过于简短,但也不要提供太多细节。那是
git diff
的作用。
签署 CLA
贡献的一个关键方面是 贡献者许可协议。简而言之:请务必签署 CLA,否则 Neo4j 项目将无法接受您的贡献。
不要合并,请使用 rebase!
因为我们希望每个贡献都包含在一个单独的提交中,所以在拉取请求中不允许合并提交。合并会使历史混乱,只应在必要时进行,例如将分支合并到 master 以记录代码来源。
如果您想更新您的开发分支以合并来自 master 的最新更改,请使用 git rebase
。有关如何使用 rebase 的详细信息,请参阅 Git rebase 手册:Git 手册。