Skip to main content
Working with Git & GitHub
Before starting, it's important to learn Git and GitHub to effectively contribute and communicate with other members.

Apache Cloudberry (Incubating) is hosted on GitHub. We use GitHub Issues as the bug report system, and use Git as our version control system. Given these, it's important for community users and developers to learn how to work well with GitHub and Git.

Please note, we do not aim to write one complete guide for Git or GitHub on this page, but we list the key points in your future work.

Get ready for working

Step 1: Set up your GitHub.com account

Before we start, it's necessary to have a GitHub account. If not, please create one.

Then you need to edit your public GitHub profile, including your name, avatar, bio, social accounts, etc. to let other people know you.

(Option) Step 2: Configure two-factor authentication

You can take GitHub Document: Configuring two-factor authentication for reference.

Step 3: Install Git

If you don't have Git installed, you can download Git at www.git-scm.com.

If you need additional assistance in installing Git, you can find more information in the ProGit chapter on installing Git.

Step 4: Set your Git name and email

Run the following commands in the terminal to set your email address and your name, which will be visible in your commits of Pull Request:

git config --global user.email "Your Email"
git config --global user.name "Your Name"
caution

If you are used to working on different laptops, please make sure to have the right email address and name settings.

Step 5: Set up your text editor

Run the following command to set up your favorite editor, which will be used to open and edit your files with Git:

git config --global core.editor "vim"

For more editors, such as Visual Studio Code, Sublime Text, and TextMate, see the GitHub Document.

Step 6: Learn about GitHub flow

Follow this document to learn about the GitHub flow, including how to create a branch, make changes, create a pull request, address review comments, and merge the pull request.

Commit Conventions

We have one git commit message template for coding contributions. You can download the file and run the following command to apply it globally:

git config --global commit.template .gitmessage

We have marked the important notes in the above template. For more on how to write a good commit message, you can read this blog: https://cbea.ms/git-commit/.

caution

Once the commit message template is applied, please use git commit instead of git commit -m "CommitMessage..." when committing changes, the latter command cannot edit the message body.

If you need to rewrite the most recent commit message, please use git commit --amend command, and see more on GitHub Documentation, but it doesn't support our customized message template.

GitHub Label System

info

Only the member with triage or write access can add or edit the labels now. GitHub Discussions and GitHub Issues use the same label system.

PriorityTypeStatusStandard
the urgency of issue or PRthe type of Issue or PRthe progress of Issue or PRcommonly used in most projects

priority: Urgent

priority: High

priority: Medium

priority: Low

type: Announcement

type: Proposal

type: Enhancement

type: Question

type: Documentation

type: Bug

type: Refactoring

type: Testing

type: Security

type: Backport

type: Pipeline

status: Await triage

status: In Progress

status: Not planned

status: Completed

help wanted

good first issue

Description of the labels:

#Priority
priority: Urgent - This should be dealt with ASAP. Not fixing this issue would be a serious error.
priority: High - After critical issues are fixed, these should be dealt with before any further issues.
priority: Medium - This issue may be useful, and needs some attention.
priority: Low - This issue can probably be picked up by anyone looking to contribute to the project, as an entry fix

#Type
type: Announcement - New Release, Events, Blog and more
type: Proposal - Proposals of major changes to Apache Cloudberry
type: Enhancement - New feature or request, ideas
type: Question - Ask the community for help
type: Documentation - Improvements or additions to documentation
type: Bug - Something isn't working
type: Refactoring - A code change that neither fixes a bug nor adds a feature
type: Testing - Adding missing tests or correcting existing tests
type: Security - Vulnerability disclosure or Fixing security issue
type: Backport - Backport compitable related issues or PRs
type: Pipeline - CICD and development pipeline

#Status
status: Await triage - This issue needs triage.
status: In Progress - This issue is being worked on, and has someone assigned.
status: Not planned - Including Duplicate, Invalid and wontfix issues.
status: Completed - This label means issues are done, closed, fixed or resovled.

#Standard
help wanted - Extra attention is needed
good first issue - Good for newcomers

If you add new labels, please follow the format prefix-name: type.

GitHub Issues or GitHub Discussions

We use GitHub Issues as a bug report system and work tracking, use GitHub Discussions for asking questions and answering, share ideas for new features, and share proposals for Apache Cloudberry.

If you find problems and issues with code in Apache Cloudberry core, welcome to report to GitHub Issues.

If you want to ask for help, answer questions, share your new ideas for features, and get feedback for your proposal, please create new discussions directly.

GitHub Discussion CategoriesDescription
AnnouncementsNew Release, events, blog and more (Only maintainers can post)
Ideas / Feature RequestsShare ideas for new features
ProposalShare proposals of major changes to Apache Cloudberry
Q&AAsk the community for help
note

Read GitHub blog 'What is GitHub Discussions? A complete guide' to learn more.

Advanced Usage in GitHub

In addition to the plain text and basic writing and formatting syntax, we can use more formats to communicate clearly in the GitHub pull requests, issues and comments, such as tables, diagrams, task lists and more, please refer to GitHub Documentation for details.

Acronyms and Abbreviations

We often use some acronyms and abbreviations for the code review, and comments in our daily GitHub communications. We collect some popular words to help you leverage them as part of an effective code review process in the Apache Cloudberry community.

********
+1/++1Yes, agreed, accepted, approved-1No, rejected, disagreed
AFAICTAs far as I can tellAKAAlso known as
AFAIKAs far as I knowASAPAs soon as possible
ATMAt the momentBTWBy the way
CUZ/COSBecauseDIYDo it yourself
DMDirect messageDNMDo not merge
DRYDon't repeat yourselfFYIFor your information
IANALI am not a lawyerICYMIIn case you missed it
IIRCIf I recall correctlyIMHOIn my humble opinion
IMOIn my opinionITTIn this thread
IOWIn other wordsw/oWithout
LGTMLooks good to meLGT1Looks good to 1
LGT2Looks good to 2NPNo Problem
PLZPleasePTALPlease take a look
RFCRequest for commentsRTFMRead the f*****g manual
SGTMSounds good to meTBDTo Be defined/done/discussed/determined
TBRTo be reviewedTL;DRToo Long; Didn't Read
TYSMThank you so muchTTYLTalk to you later
TYVMThank you very muchWDYTWhat do you think
WIPWork in progressw/With

Learning Materials