|
@@ -43,31 +43,21 @@ dotnet-gitversion /updateprojectfiles
|
|
|
dotnet build -c Release
|
|
|
```
|
|
|
|
|
|
-## Publishing a Release of Terminal.Gui
|
|
|
+**DO NOT COMMIT AFTER USING `/updateprojectfiles`!**
|
|
|
|
|
|
-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.
|
|
|
+Doing so will update the `.csproj` files in your branch with version info, which we do not want.
|
|
|
|
|
|
-The `tag` must be of the form `v<major>.<minor>.<patch>`, e.g. `v1.2.3`.
|
|
|
+## Publishing a Release of Terminal.Gui
|
|
|
|
|
|
-```powershell
|
|
|
-git tag vmajor.minor.patch -a -m "Release vmajor.minor.patch"
|
|
|
-git push upstream vmajor.minor.patch
|
|
|
-```
|
|
|
+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`).
|
|
|
|
|
|
-`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
|
|
|
-```
|
|
|
+The `tag` must be of the form `v<major>.<minor>.<patch>`, e.g. `v2.3.4`.
|
|
|
|
|
|
-## To launch version 2.3.4 as a Release nuget package do this:
|
|
|
+`patch` can indicate pre-release or not (e.g. `pre`, `beta`, `rc`, etc...).
|
|
|
|
|
|
-1) Generate release notes with the list of PRs since the last release
|
|
|
+### 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
|
|
|
|