# Contributing to Refined Storage ## Versioning This project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). ## Pull requests - Keep your PR as small as possible, this makes reviewing easier. - Commits serve a clear purpose and have a fitting commit message. - Branches are kept up to date by rebasing, preferably. - PRs are merged by rebasing the commits on top of the target branch. - Changes are added in `CHANGELOG.md`. Please refrain from using technical terminology, keep it user-friendly. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). ## Gitflow This project uses [Gitflow](https://www.atlassian.com/git/tutorials/comparing-workflows/gitflow-workflow). ## Releasing 1) Make sure the version number in `build.gradle` is correct. 2) Merge `develop` to `main`. 3) Push a tag with the version number (prefixed with `v`). After releasing: 1) Rename the "Unreleased" section to the correct version number in `CHANGELOG.md`. 2) Upgrade the version number in `build.gradle`. 3) Create a new "Unreleased" section in `CHANGELOG.md`. ## Pipelines ### Build The build pipeline triggers when a commit is pushed to a branch or pull request. ### Release The release pipeline triggers when a tag is pushed. This will run all the steps that our build pipeline does. After that succeeds, it will publish to GitHub packages and CreeperHost Maven repository. The "Unreleased" section in `CHANGELOG.md` is parsed and a GitHub release is created with the changelog body and relevant artifacts. After that, a Discord and Twitter notification is sent.