# Torrust Tracker Release Process (v2.2.2)
## Version:
> **The `[semantic version]` is bumped according to releases, new features, and breaking changes.**
>
> *The `develop` branch uses the (semantic version) suffix `-develop`.*
## Process:
**Note**: this guide assumes that the your git `torrust` remote is like this:
```sh
git remote show torrust
```
```s
* remote torrust
Fetch URL: git@github.com:torrust/torrust-tracker.git
Push URL: git@github.com:torrust/torrust-tracker.git
...
```
### 1. The `develop` branch is ready for a release.
The `develop` branch should have the version `[semantic version]-develop` that is ready to be released.
### 2. Stage `develop` HEAD for merging into the `main` branch:
```sh
git fetch --all
git push --force torrust develop:staging/main
```
### 3. Create Release Commit:
```sh
git stash
git switch staging/main
git reset --hard torrust/staging/main
# change `[semantic version]-develop` to `[semantic version]`.
git add -A
git commit -m "release: version [semantic version]"
git push torrust
```
### 4. Create and Merge Pull Request from `staging/main` into `main` branch.
Pull request title format: "Release Version `[semantic version]`".
This pull request merges the new version into the `main` branch.
### 5. Push new version from `main` HEAD to `releases/v[semantic version]` branch:
```sh
git fetch --all
git push torrust main:releases/v[semantic version]
```
> **Check that the deployment is successful!**
### 6. Create Release Tag:
```sh
git switch releases/v[semantic version]
git tag --sign v[semantic version]
git push --tags torrust
```
### 7. Create Release on Github from Tag.
This is for those who wish to download the source code.
### 8. Stage `main` HEAD for merging into the `develop` branch:
Merge release back into the develop branch.
```sh
git fetch --all
git push --force torrust main:staging/develop
```
### 9. Create Comment that bumps next development version:
```sh
git stash
git switch staging/develop
git reset --hard torrust/staging/develop
# change `[semantic version]` to `(next)[semantic version]-develop`.
git add -A
git commit -m "develop: bump to version (next)[semantic version]-develop"
git push torrust
```
### 10. Create and Merge Pull Request from `staging/develop` into `develop` branch.
Pull request title format: "Version `[semantic version]` was Released".
This pull request merges the new release into the `develop` branch and bumps the version number.