Skip to content

Latest commit

 

History

History
117 lines (74 loc) · 3.52 KB

CONTRIBUTING.md

File metadata and controls

117 lines (74 loc) · 3.52 KB

Contributing to Dragonfly DB

Thank you for your interest in Dragonfly DB.

Feel free to browse our Discussions and Issues

Build from source

See building from source

Please note that in order to build development/debug version, it's better to alter the configure and build steps above with:

./helio/blaze.sh   # without '-release' flag. Creates build-dbg subfolder
cd build-dbg && ninja dragonfly

Before you make your changes

cd dragonfly   # project root

# Make sure you have 'pre-commit' and 'clang-format' installed
pip install pre-commit clang-format

# IMPORTANT! Enable our pre-commit message hooks
# This will ensure your commits match our formatting requirements
pre-commit install

This step must be done on each machine you wish to develop and contribute from to activate the commit-msg and commit hooks client-side.

Once you have done these things, we look forward to adding your contributions and improvements to the Dragonfly DB project.

Unit testing

# Build specific test
cd build-dbg && ninja [test_name]
# e.g cd build-dbg && ninja generic_family_test

# Run
./[test_name]
# e.g ./generic_family_test

Rendering Helm golden files

A Golang golden test is included in the dragonfly helm chart. This test will render the chart and compare the output to a golden file. If the output has changed, the test will fail and the golden file will need to be updated. This can be done by running:

cd contrib/charts/dragonfly
go test -v ./... -update

This makes it easy to see the changes in the rendered output without having to manually run helm template and diff the output.

Signoff Commits

All community submissions must include a signoff.

git commit -s -m '...'

Squash Commits

Please squash all commits for a change into a single commit (this can be done using "git rebase -i"). Do your best to have a well-formed commit message for the change.

Use Conventional Commits

This repo uses Conventional Commmits

The Conventional Commits specification is a lightweight convention on top of commit messages. It provides an easy set of rules for creating an explicit commit history; which makes it easier to write automated tools on top of. This convention dovetails with SemVer, by describing the features, fixes, and breaking changes made in commit messages.

The commit message should be structured as follows:


<type>[optional scope]: <description>

[optional body]

[optional footer(s)]

This repo uses automated tools to standardize the formatting of code, text files and commits.

pre-commit hooks

The Dragonfly DB team has agreed to systematically use a number of pre-commit hooks to normalize formatting of code. You need to install and enable pre-commit to have these used when you do your own commits.

Codebase guidelines

This repo conforms to the Google's C++ Style Guide. Keep in mind we use an older version of the style guide which can be found here.

Any exception to the rules specified on the style guide will be documented here.

License terms for contributions

Please see our CLA agreement

THANK YOU FOR YOUR CONTRIBUTIONS