diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md new file mode 100644 index 0000000..f5a8afb --- /dev/null +++ b/CONTRIBUTING.md @@ -0,0 +1,253 @@ +# Contributing to Barycenter + +Thank you for your interest in contributing to Barycenter! This document provides guidelines and instructions for contributing to the project. + +## Code of Conduct + +Be respectful, inclusive, and collaborative. We're here to build great software together. + +## Development Workflow + +We use **Gitflow** as our branching model. Please familiarize yourself with this workflow before contributing. + +### Branch Structure + +#### Main Branches + +- `main` - Production-ready code. Only release and hotfix branches merge here. +- `develop` - Integration branch for features. Default branch for development. + +#### Supporting Branches + +- `feature/*` - New features and non-emergency bug fixes +- `release/*` - Release preparation (version bumps, final testing) +- `hotfix/*` - Emergency fixes for production issues + +### Workflow Steps + +#### Working on a New Feature + +1. **Create a feature branch from `develop`:** + ```bash + git checkout develop + git pull origin develop + git checkout -b feature/your-feature-name + ``` + +2. **Make your changes** following our commit conventions (see below) + +3. **Push your branch:** + ```bash + git push -u origin feature/your-feature-name + ``` + +4. **Create a Pull Request** targeting `develop` + +#### Creating a Release + +1. **Create a release branch from `develop`:** + ```bash + git checkout develop + git pull origin develop + git checkout -b release/v1.2.0 + ``` + +2. **Update version numbers** and finalize changelog + +3. **Create PR to `main`** and after merge, tag the release: + ```bash + git tag -a v1.2.0 -m "Release version 1.2.0" + git push origin v1.2.0 + ``` + +4. **Merge back to `develop`** to include any release changes + +#### Hotfix Process + +1. **Create a hotfix branch from `main`:** + ```bash + git checkout main + git pull origin main + git checkout -b hotfix/v1.2.1 + ``` + +2. **Fix the issue** and update version number + +3. **Create PR to `main`** and after merge, tag the hotfix + +4. **Merge back to `develop`** to include the fix + +## Commit Message Convention + +We follow **Conventional Commits** specification. This leads to more readable commit history and enables automated changelog generation. + +### Commit Message Format + +``` +(): + + + +