feat: add contributing guide

This commit is contained in:
Matteo Sirri 2025-02-03 16:45:25 +00:00
parent e6715ce8b8
commit 22c100bb6b

196
CONTRIBUTING.md Normal file
View File

@ -0,0 +1,196 @@
# Contributing Guide
## Development Guidelines
### Code Quality Tools
1. Pre-commit setup:
```bash
pre-commit install
```
2. Configured hooks:
- YAML checking
- End-of-file fixer
- Trailing whitespace removal
- Ruff (linting + formatting)
- MyPy (type checking)
### Coding Standards
- Follow PEP 8 guidelines.
- Use type hints consistently.
- Maximum line length: 130 characters.
- Use single quotes for strings.
### Commit Guidelines
Use Commitizen for standardized commits:
```bash
git cz
```
## Git Strategy: Feature branch
The **Git Feature Branch Workflow** is a way to work on new features in a project without messing up the main code. Instead of working directly on the `main` branch (the "official" code), you create a separate branch for each feature. This keeps the `main` branch clean and stable.
---
## How It Works (Diagram)
**Example:**
```bash
git branch -d add-login-button
git push origin --delete add-login-button
```
**Example Workflow (Diagram)**
Heres an example of how Mary uses this workflow:
```mermaid
sequenceDiagram
participant Mary
participant GitHub
participant Bill
Mary->>GitHub: Create a new branch (add-login-button)
Mary->>Mary: Make changes and commit
Mary->>GitHub: Push branch to remote
Mary->>GitHub: Open a pull request
Bill->>GitHub: Review pull request
Bill->>Mary: Request changes
Mary->>Mary: Fix feedback and commit
Mary->>GitHub: Push updates
Bill->>GitHub: Approve pull request
Mary->>GitHub: Merge branch into main
Mary->>GitHub: Delete feature branch
```
---
## General Step-by-Step Instructions
### 1. Start with the main branch
Make sure your local main branch is up-to-date with the latest code from the central repository.
```bash
git checkout main
git fetch origin
git reset --hard origin/main
```
### 2. Create a new branch for your feature
Create a branch for your feature. Use a clear name that describes what youre working on, like `add-login-button` or `fix-bug-123`.
```bash
git checkout -b your-branch-name
```
**Example:**
```bash
git checkout -b add-login-button
```
### 3. Work on your feature
Make changes to the code. After making changes, save your work by following these steps:
- Check what files youve changed:
```bash
git status
```
- Add the files you want to save:
```bash
git add <file-name>
```
**Example:**
```bash
git add index.html
```
- Save your changes with a message:
```bash
git commit -m "Describe what you changed"
```
**Example:**
```bash
git commit -m "Added login button to homepage"
```
### 4. Push your branch to the remote repository
To back up your work and share it with others, push your branch to the central repository.
```bash
git push -u origin your-branch-name
```
**Example:**
```bash
git push -u origin add-login-button
```
### 5. Open a pull request
Go to your Git hosting platform (like GitLab) and open a pull request. This is how you ask your team to review your changes and approve them before adding them to the main branch.
### 6. Fix feedback from reviewers
If your teammates suggest changes, follow these steps to update your branch:
- Make the changes locally.
- Save the changes:
```bash
git add <file-name>
git commit -m "Fixed feedback"
git push
```
### 7. Merge your branch into main
Once your pull request is approved, its time to merge your branch into the main branch.
- Switch to the main branch:
```bash
git checkout main
```
- Update your local main branch:
```bash
git pull
```
- Merge your feature branch into main:
```bash
git merge your-branch-name
```
- Push the updated main branch to the remote repository:
```bash
git push
```
### 8. Delete your feature branch
After merging, delete your feature branch to keep things clean.
- Delete the branch locally:
```bash
git branch -d your-branch-name
```
- Delete the branch from the remote repository:
```bash
git push origin --delete your-branch-name
```
## Summary
- Create a branch for each feature.
- Work on your branch without touching `main`.
- Push your branch to back up your work.
- Open a pull request to get feedback and approval.
- Merge your branch into `main` when its ready.
- Delete your branch after merging.
By following these steps, youll keep the `main` branch clean and make it easy for your team to collaborate.