Skip to content

Commit

Permalink
Merge pull request #351 from dvonthenen/example-tag-release
Browse files Browse the repository at this point in the history
Example Tagging Release
  • Loading branch information
dvonthenen authored Nov 5, 2024
2 parents 86b27b7 + 7f80135 commit db9a7dc
Showing 1 changed file with 52 additions and 0 deletions.
52 changes: 52 additions & 0 deletions .github/BRANCH_AND_RELEASE_PROCESS.md
Original file line number Diff line number Diff line change
Expand Up @@ -86,3 +86,55 @@ In the event of a breaking interface change, a `release-v[0-9]+` branch is creat
In scenarios where urgent issues arise, the `hotfix` branch comes into play. A hotfix branch is created off main or the relevant release branch to address critical issues that need immediate attention. After the hotfix is implemented and thoroughly tested, it is merged back into both the `main` and the `release-v[0-9]+` branches to ensure the fix is included in the current and future versions of the project.

This dual approach of leveraging both **GitHub Flow** and **Git Flow** ensures that the project can iterate quickly while maintaining high standards of code stability and release management.
### Creating a Release

Since the latest stable code is contained on `main` in a typical **GitHub Flow**, to create a release someone with write access to the repository needs to simply just `git tag` the release and then create a (draft) release using that tag in the [repository's release page](https://github.com/deepgram/deepgram-dotnet-sdk/releases).

If you haven't done this before, these are the typicial commands to execute at the root of the repository assuming you are on your fork:

```bash
# get the latest everything and update your fork
git checkout main
git pull --rebase upstream main
git push
git fetch upstream --tags
git push origin --tags

# create a new tag following semver
git tag -m <version> <version>
git push upstream <version>
```

If the release you want to create is `4.5.0`, then this would look like:

```bash
# get the latest everything and update your fork
git checkout main
git pull --rebase upstream main
git push
git fetch upstream --tags
git push origin --tags

# create a new tag following semver
git tag -m 4.5.0 4.5.0
git push upstream 4.5.0
```

#### Creating a Release from a Release Branch

While we don't have a formal requirement for supporting past releases (ie currently on `v3` but need a patch on `v2`), there are times when you need to provide a patch release for things like security fixes. To create that patch releases, you do something similar as you would have done on main, but on the `release-v[0-9]+/*` branch.

If this were the `release-v3` branch for version `3.4.3` (note the `3` matches the `release-v3`), this would look like (again, assuming you are on your fork):

```bash
# get the latest everything and update your fork
git checkout release-v3
git pull --rebase upstream release-v3
git push origin release-v3
git fetch upstream --tags
git push origin --tags

# create a new tag following semver
git tag -m 3.4.3 3.4.3
git push upstream 3.4.3
```

0 comments on commit db9a7dc

Please sign in to comment.