Skip to content

Development Flow

Branch Strategy

As shown in the diagram below, the feature branches (feature/xxx) are branched off from the main branch for development. The main branch is the release branch.

gitGraph LR:
    commit tag:"release-v1.0.0"
    branch feature/xxx
    commit
    commit
    checkout main
    branch feature/yyy
    commit
    checkout main
    merge feature/yyy
    checkout feature/xxx
    commit
    checkout main
    merge feature/xxx
    commit tag:"release-v1.1.0"
    checkout main
    branch hotfix/zzz
    commit
    commit
    checkout main
    merge hotfix/zzz
    commit tag:"release-v1.2.0"

Branch Naming

While there are no strict rules, the following naming conventions are recommended:

  • feature/xxx: (xxx represents the feature being added)
  • bugfix/xxx: (xxx represents the bug being fixed)
  • hotfix/xxx: (xxx represents the urgent fix)

Conventional Commits

The commit messages should preferably follow the Conventional Commits guidelines.

Commit Message Format

By using .gitmessage, a template for commit messages is provided. This template can be enabled locally for this project by configuring git config --local.

git config --local commit.template .gitmessage

Once configured, running git commit will display the contents of .gitmessage in your editor (Vim by default).

git commit
# Overview (Uncomment one of the following templates)
#feat: 
# └  A new feature
#fix:
# └  A bug fix
#docs:
# └  Documentation only changes
#style:
# └  Changes that do not affect the meaning of the code
#    (white-space, formatting, missing semi-colons, etc)
#refactor:
# └  A code change that neither fixes a bug nor adds a featur
#test:
# └  Adding missing or correcting existing tests
#ci:
# └  Changes to our CI configuration files and scripts
#chore:
# └  Updating grunt tasks etc; no production code change

Select the appropriate template and uncomment it, then write your commit message.

docs: Update README.md
# └  Documentation only changes

Correspondence between Commit Messages and Labels

When creating a PR to the main branch, labels are automatically assigned based on the commit messages. Below is the correspondence between prefixes and labels:

Prefix Label Description
feat: feature Adding a new feature
fix: bugfix Bug fixes
docs: documentation Documentation only changes
style: style Changes that do not affect the meaning of the code (white-space, formatting, missing semi-colons, etc)
refactor: refactor Code changes that neither fix a bug nor add a feature
test: test Adding or correcting existing tests
ci: ci Adding or updating CI configuration and scripts
chore: chore Minor changes or maintenance tasks