Your First PR for Databend
Databend is an open-source project where everyone can contribute their code and make their creative ideas into a reality. This topic helps new contributors understand how to create a pull request for Databend on GitHub and provides useful considerations for code contributions.
Did You Know? To show our appreciation, your GitHub username will be added to the table system.contributors
after your code is successfully merged.
Check it out:
SELECT * FROM system.contributors
Prerequisites
Databend 使用 Rust 编程语言编写,为了从零开始构建 Databend ,你需要安装以下工具:
- Git
- 使用 Rusup 安装 Rust
Coding Guidelines
Code Format and Analysis
$ make lint
Code Documentation
Any public fields, functions, and methods should be documented with Rustdoc.
Please follow the conventions as detailed below for modules
, structs
, enums
, and functions
. The single line is used as a preview when navigating Rustdoc. As an example, see the 'Structs' and 'Enums' sections in the collections Rustdoc.
/// [Single line] One line summary description
///
/// [Longer description] Multiple lines, inline code
/// examples, invariants, purpose, usage, etc.
[Attributes] If attributes exist, add after Rustdoc
Example below:
/// Represents (x, y) of a 2-dimensional grid
///
/// A line is defined by 2 instances.
/// A plane is defined by 3 instances.
#[repr(C)]
struct Point {
x: i32,
y: i32,
}
Pull Requests
Submit a PR
- Fork the
databend
repo and create your branch frommain
. - Open a regular issue for binding the pull request.
- Submit a Draft Pull Requests, tag your work in progress.
- If you have added code that should be tested, add unit tests.
- Verify and ensure that the test suites passes,
make test
. - Make sure your code passes both linters,
make lint
. - Change the status to “Ready for review”.
- Watch out the replies from the
@mergify
, she will be your guide.
PR Title
Format: <type>(<scope>): <subject>
<scope>
is optional
fix(query): fix group by string bug
^--^ ^------------^
| |
| +-> Summary in present tense.
|
+-------> Type: rfc, feat, fix, refactor, ci, docs, chore
More types:
rfc
: this PR proposes a new RFCfeat
: this PR introduces a new feature to the codebasefix
: this PR patches a bug in codebaserefactor
: this PR changes the code base without new features or bugfixci
: this PR changes build/ci stepsdocs
: this PR changes the documents or websiteschore
: this PR only has small changes that no need to record, like coding styles.
PR Template
Databend has a Pull Request Template:
I hereby agree to the terms of the CLA available at: https://databend.rs/dev/policies/cla/
## Summary
Summary about this PR
Fixes #issue
You should not change the PR template context, but need to finish:
Summary
- Describes what constitutes the Pull Request and what changes you have made to the code. For example, fixes which issue.
Testing
Unit tests
$ make unit-test
Stateless tests
$ make stateless-test
Issues
Databend uses GitHub issues to track bugs. Please include necessary information and instructions to reproduce your issue.
Documentation
All developer documentation is published on the Databend developer site, databend.rs.
Code of Conduct
Please refer to the Code of Conduct, which describes the expectations for interactions within the community.