diff --git a/Terminal.Gui/README.md b/Terminal.Gui/README.md index e76a996ec..deda0a1f6 100644 --- a/Terminal.Gui/README.md +++ b/Terminal.Gui/README.md @@ -43,31 +43,21 @@ dotnet-gitversion /updateprojectfiles dotnet build -c Release ``` +**DO NOT COMMIT AFTER USING `/updateprojectfiles`!** + +Doing so will update the `.csproj` files in your branch with version info, which we do not want. + ## Publishing a Release of Terminal.Gui -To release a new version (e.g. with a higher `major`, `minor`, or `patch` value) tag a commit using `git tag` and then push that tag directly to the upstream repo. +To release a new version (e.g. with a higher `major`, `minor`, or `patch` value) tag a commit using `git tag` and then push that tag directly to the `main` branch on `github.com/gui-cs/Terminal.Gui` (`upstream`). -The `tag` must be of the form `v..`, e.g. `v1.2.3`. - -```powershell -git tag vmajor.minor.patch -a -m "Release vmajor.minor.patch" -git push upstream vmajor.minor.patch -``` +The `tag` must be of the form `v..`, e.g. `v2.3.4`. `patch` can indicate pre-release or not (e.g. `pre`, `beta`, `rc`, etc...). -For example, to launch v1.3.4-beta.5 as a Pre-Release nuget package, do the following: - -```powershell -git tag v1.3.4-beta.5 -a -m "v1.3.4 Beta 5" -git push upstream v1.3.4-beta.5 -``` +### 1) Generate release notes with the list of PRs since the last release -## To launch version 2.3.4 as a Release nuget package do this: - -1) Generate release notes with the list of PRs since the last release - -Use `gh` to get list with just titles to make it easy to paste into release notes: +Use `gh` to get a list with just titles to make it easy to paste into release notes: ```powershell gh pr list --limit 500 --search "is:pr is:closed is:merged closed:>=2021-05-18" @@ -75,57 +65,72 @@ gh pr list --limit 500 --search "is:pr is:closed is:merged closed:>=2021-05-18" Use the output to update `./Terminal.Gui/Terminal.Gui.csproj` with latest release notes -2) Update the API documentation +### 2) Update the API documentation See `./docfx/README.md`. -3) Create a PR for the release +### 3) Create a PR for the release in the `develop` branch The PR title should be "Release v2.3.4" ```powershell +git checkout develop +git pull -all +git checkout -b v_2_3_4 git add . git commit -m "Release v2.3.4" git push ``` -4) On github.co, verify the build action worked on your fork, then merge the PR +### 4) On github.com, verify the build action worked on your fork, then merge the PR -5) Pull the merged main +### 5) Pull the merged `develop` from `upstream` ```powershell -git pull upstream main +git pull upstream `develop` ``` -6) Create a new tag for the release +### 6) Merge `develop` into `main` + +```powershell +git checkout main +git merge develop +``` + +Fix any merge errors. + +### 7) Create a new annotated tag for the release ```powershell git tag v2.3.4 -a -m "Release v2.3.4" ``` -7) Push new tag to `main` +### 8) Push the new tag to `main` on `origin` ```powershell -git push upstream v2.3.4 +git push --atomic upstream main v2.3.4 ``` -8) Monitor Github actions to ensure it worked. +*See https://stackoverflow.com/a/3745250/297526* -9) Check nuget to see new package (wait a few minutes) +### 9) Monitor Github actions to ensure the Nuget publishing worked. +### 10) Check Nuget to see the new package version (wait a few minutes): https://www.nuget.org/packages/Terminal.Gui -10) Add a new Release in Github: https://github.com/gui-cs/Terminal.Gui/releases +### 11) Add a new Release in Github: https://github.com/gui-cs/Terminal.Gui/releases + +### 12) Tweet about it ## Nuget https://www.nuget.org/packages/Terminal.Gui -When a new version tag is defined, and merged into main, a nuget package will be generated. +When a new version tag is defined and merged into `main`, a Nuget package will be generated by a Github Action. If the version is pre-release (includes a hyphen, e.g. `1.3.4-beta.5`) the Nuget package will be tagged as pre-release. -Miguel can hide defunct/old nuget packages. +Miguel & Tig can hide defunct/old Nuget packages. ## Contributing