贡献 Parquet-Java
Pull Requests
我们更愿意以 GitHub pull request 的形式接收贡献。请向 github.com/apache/parquet-java 仓库发送 pull request。如果您之前从旧位置 fork 了 Parquet,您需要添加一个 remote 或将您的 origin remote 更新为 https://github.com/apache/parquet-java.git。以下是一些让您的贡献被接受的技巧:
- 如果可能,将您的工作分解成小的、单一目的的补丁。合并包含大量不相关功能的大型更改要困难得多。
- 在 Parquet-Java issues 上创建一个 Issue。
- 将补丁作为 GitHub pull request 提交到 master 分支。有关教程,请参阅关于 fork 仓库和发送 pull request 的 GitHub 指南。用 Issue 号
GH-2935作为您的 pull request 名称前缀:(例如:https://github.com/apache/parquet-java/pull/2951)。 - 确保您的代码通过单元测试。您可以在根目录中使用
mvn test运行测试。 - 为您的代码添加新的单元测试。
- 所有 Pull Request 都会在 GitHub Actions 上自动测试。
如果您想报告 bug 但没有时间修复它,您仍然可以提交 issue,或发送电子邮件到邮件列表(dev@parquet.apache.org)。
Committers
合并 Pull Request
合并 pull request 需要是项目的 committer,并且需要非作者的 committer 批准该 PR。
Pull request 可以通过 GitHub UI 合并。默认情况下,项目仅启用了 squash and merge。
当 PR 解决现有 issue 时,确保在 Pull-Request 模板中引用该 issue Closes #1234。这样 issue 就会链接到 PR,当 PR 被合并时,GitHub 会自动关闭相关 issue。
语义版本控制
Parquet-Java 利用语义版本控制来确保库的 API 和实现演进时开发人员和用户的兼容性。Maven 插件 japicmp 强制执行此规则,当 API 在没有经过正确的弃用周期的情况下被更改时会失败。这适用于所有模块,不包括:parquet-benchmarks、parquet-cli、parquet-tools、parquet-format-structures、parquet-hadoop-bundle 和 parquet-pig-bundle。
所有计划弃用的接口、类和方法必须包括以下内容:
- 在适当的元素上添加
@Deprecated注解 @deprecatedjavadoc 注释,包括:移除版本、使用的适当替代方案- 替换使用已弃用行为的现有代码路径
/**
* @param c the current class
* @return the corresponding logger
* @deprecated will be removed in 2.0.0; use org.slf4j.LoggerFactory instead.
*/
@Deprecated
public static Log getLog(Class<?> c) {
return new Log(c);
}
可以通过运行 mvn verify -Dmaven.test.skip=true japicmp:cmp 来检查 API 违规。
使用 Milestones 跟踪问题
当提交修复 bug 或您想针对某个版本的功能的 PR 时,请确保附加一个 milestone。这样其他 committer 可以跟踪某些版本,并查看仍在等待的内容。有关实际发布的信息,请查看发布页面。
维护分支
一旦 PR 合并到 master,可能需要将提交 backport 到维护分支(例如:1.14.x)。最简单的方法是在本地执行:
确保 remote 设置正确:
git remote add github-apache git@github.com:apache/parquet-java.git
现在您可以将 PR cherry-pick 到以前的分支:
git fetch --all
git checkout parquet-1.14.x
git reset --hard github-apache/parquet-1.14.x
git cherry-pick <hash-from-the-commit>
git push github-apache/parquet-1.14.x
网站
发布文档
要为 parquet-format 的新版本创建文档,请在 content/en/blog/parquet-format 下创建一个新的
要为 parquet-java 的新版本创建文档,请在 content/en/blog/parquet-java 下创建一个新的
网站开发和部署
Staging
要对网站的 staging 版本进行更改:
- 向仓库的
staging分支发送 PR - PR 合并后,部署工作流中的
Build and Deploy Parquet Site作业将运行,用必要的文件填充此仓库的asf-staging分支。
不要直接编辑此仓库的 asf-staging 分支
Production
要对网站的 production 版本进行更改:
- 向仓库的
production分支发送 PR - PR 合并后,部署工作流中的
Build and Deploy Parquet Site作业将运行,用必要的文件填充此仓库的asf-site分支。
不要直接编辑此仓库的 asf-site 分支