Skip to content

GitHub Contribution Guide

1. Creating an ISSUE

The main types of ISSUES include: feat, bug, test, refactor, chore, style, docs, perf, build, ci. The corresponding explanations are as follows:

  • feat: New feature
  • bug: Bug issue
  • test: Additional test cases
  • refactor: Code refactoring that is neither a new feature nor a bug fix
  • docs: Changes and additions to documentation, including code comments
  • perf: Code involving performance optimization, which requires proof of optimization
  • build: Changes to the build system or external dependencies
  • ci: Changes to continuous integration configuration, including modifications to configuration files and scripts
  • style: Code style changes, used for submission formatting, punctuation, etc., that do not affect the code
  • chore: Mixed types of work, possibly involving multiple other types of changes

Users and Contributors Creating ISSUES

For users and contributors, if there are new feature requirements or bug fixes, they can submit an Issue by selecting BugReport, Enhancement or FeatureRequest.

image

Committer Creating ISSUES

If it is a small development task, then the process of creating an issue will be similar to users and contributors. You can use BugReport, Enhancement, or FeatureRequest to associate your issue with pull requests.

If it is a relatively large planned task that needs to be broken down, use Umbrella to associate with the corresponding issues and plan subtasks inside Umbrella. The specifics are as follows:

image

For each subtask, create the corresponding subtask using Subtask and describe the specific content that needs to be completed for that subtask.

For Umbrella, it is temporarily divided into two categories, RBIP-* and MINOR.

RBIP-*: Indicates the addition of features and characteristics, such as RBIP-09, RBIP-10, with the sequence number increasing. image

MINOR: Indicates fixing or adding small features. It can start with MINOR, followed by the title. image

For Subtask, use the following format: [RBIP-*/MINOR][Style/Refactor/Performance/Docs/Test/Build/CI/Chore][Subtask] xxx, for example,

image

2. Creating a Pull Request

If the PR is associated with an ISSUE, it must include the following in the PR content:

close #issue_number

close is a fixed prefix, # is also a fixed prefix, and issue_number represents the ISSUE number associated with the PR. For example:

image

#297, #292 are the corresponding ISSUE numbers.

For example, if you need to submit a PR to resolve ISSUE #297, the PR content should include:

close #297

When this PR is MERGED, the ISSUE will be automatically closed. After the PR is merged, the PR and ISSUE will look like this:

PR: image

ISSUE: image

For more details, you can refer to the PR submission example.

3. Reasons for PR Submission Failure

License Error

License checker / license-header-check (pull_request) failed. Some files are missing a License, which needs to be added. It is best to run the check command before each submission.

cargo install hawkeye

# Execute in the current project to check which files are missing a License
hawkeye check

# Automatically add a License to each code file
hawkeye format

Title Format Error

PR Title Checker / check (pull_request_target) failed due to incorrect PR title format.

Prefix: Title
Prefix options include: feat|fix|test|refactor|chore|style|docs|perf|build|ci|revert

feat: New feature
For example: feat: Compatible with Rocksdb

fix: Bug fix
docs: Documentation change
style: Code style change (does not affect code logic), used for submissions that only involve formatting, punctuation, whitespace, etc., that do not affect code execution.
refactor: Code refactoring (code changes that are neither new features nor bug fixes)
perf: Performance optimization
test: Adding or modifying tests
chore: Miscellaneous (changes to the build process or auxiliary tools)
build: Changes to the build system or external dependencies
ci: Changes to continuous integration configuration, including modifications to configuration files and scripts.
revert: Revert