|
@@ -1,6 +1,6 @@
|
|
# Terminal.Gui Project
|
|
# Terminal.Gui Project
|
|
|
|
|
|
-Contains all files required to build the **Terminal.Gui** library (and NuGEt package).
|
|
|
|
|
|
+Contains all files required to build the **Terminal.Gui** library (and NuGet package).
|
|
|
|
|
|
## Project Folder Structure
|
|
## Project Folder Structure
|
|
|
|
|
|
@@ -22,33 +22,40 @@ Contains all files required to build the **Terminal.Gui** library (and NuGEt pac
|
|
|
|
|
|
## Version numbers
|
|
## Version numbers
|
|
|
|
|
|
-Version info for Terminal.Gui is managed by MinVer (https://github.com/adamralph/minver).
|
|
|
|
|
|
+Version info for Terminal.Gui is managed by [gitversion](https://gitversion.net).
|
|
|
|
|
|
-The project version (the nuget package and in `Terminal.Gui.dlls`) is determined from the latest `git tag`.
|
|
|
|
|
|
+Install `gitversion`:
|
|
|
|
+
|
|
|
|
+```powershell
|
|
|
|
+dotnet tool install --global GitVersion.Tool
|
|
|
|
+dotnet-gitversion
|
|
|
|
+```
|
|
|
|
+
|
|
|
|
+The project version (the nuget package and in `Terminal.Gui.dll`) is determined from the latest `git tag`.
|
|
|
|
|
|
The format of version numbers is `vmajor.minor.patch.build.height` and follows the [Semantic Versioning](https://semver.org/) rules.
|
|
The format of version numbers is `vmajor.minor.patch.build.height` and follows the [Semantic Versioning](https://semver.org/) rules.
|
|
|
|
|
|
To define a new version (e.g. with a higher `major`, `minor`, `patch`, or `build` value) tag a commit using `git tag`:
|
|
To define a new version (e.g. with a higher `major`, `minor`, `patch`, or `build` value) tag a commit using `git tag`:
|
|
|
|
|
|
```powershell
|
|
```powershell
|
|
-git tag v1.3.4-beta.5 -a -m "v1.3.4 Beta 5"
|
|
|
|
|
|
+git tag v1.3.4-beta.5 -a -m "Release v1.3.4 Beta 5"
|
|
|
|
+dotnet-gitversion /updateprojectfiles
|
|
dotnet build -c Release
|
|
dotnet build -c Release
|
|
```
|
|
```
|
|
|
|
|
|
-If the current commit does not have a version tag, another number is added to the pre-release identifiers. This is the number of commits since the latest commit with a version tag or, if no commits have a version tag, since the root commit. This is known as "height". For example, if the latest version tag found is 1.0.0-beta.1, at a height of 42 commits, the calculated version is 1.0.0-beta.1.42.
|
|
|
|
-
|
|
|
|
-You can see the version in the `UICatalog` about box or by viewing the "Details" page of the file properties of `/Terminal.Gui/bin/Release/net5.0/Terminal.Gui.dll.
|
|
|
|
|
|
+You can see the version in the `UICatalog` about box.
|
|
|
|
|
|

|
|

|
|
|
|
|
|
## Publishing a Release of Terminal.Gui
|
|
## 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 upstream repo.
|
|
|
|
|
|
-```powershell
|
|
|
|
-git tag vmajor.minor.patch.build -a -m "Descriptive comment about release"
|
|
|
|
-git push upstream vmajor.minor.patch.build
|
|
|
|
|
|
+The `tag` must be of the form `v<major>.<minor>.<patch>`, e.g. `v1.2.3`.
|
|
|
|
|
|
|
|
+```powershell
|
|
|
|
+git tag vmajor.minor.patch -a -m "Release vmajor.minor.patch"
|
|
|
|
+git push upstream vmajor.minor.patch
|
|
```
|
|
```
|
|
|
|
|
|
`patch` can indicate pre-release or not (e.g. `pre`, `beta`, `rc`, etc...).
|
|
`patch` can indicate pre-release or not (e.g. `pre`, `beta`, `rc`, etc...).
|
|
@@ -62,49 +69,63 @@ git push upstream v1.3.4-beta.5
|
|
|
|
|
|
## To launch version 2.3.4 as a Release nuget package do this:
|
|
## To launch version 2.3.4 as a Release nuget package do this:
|
|
|
|
|
|
-1) Create a new tag
|
|
|
|
|
|
+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:
|
|
|
|
|
|
```powershell
|
|
```powershell
|
|
-git tag v2.3.4 -a -m "v2.3.4 Release"
|
|
|
|
-```
|
|
|
|
|
|
+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 `./Terminal.Gui/Terminal.Gui.csproj` with latest release notes and submit a PR with a commit of `v2.3.4 Release`
|
|
|
|
|
|
+See `./docfx/README.md`.
|
|
|
|
|
|
-* Use `gh` to get list with just titles to make it easy to paste into release notes: `gh pr list --limit 500 --search "is:pr is:closed is:merged closed:>=2021-05-18"`
|
|
|
|
-* PR title should be "v2.3.4 Release"
|
|
|
|
|
|
+3) Create a PR for the release
|
|
|
|
+
|
|
|
|
+The PR title should be "Release v2.3.4"
|
|
|
|
|
|
```powershell
|
|
```powershell
|
|
git add .
|
|
git add .
|
|
-git commit -m "v2.3.4 Release"
|
|
|
|
|
|
+git commit -m "Release v2.3.4"
|
|
git push
|
|
git push
|
|
```
|
|
```
|
|
|
|
|
|
-3) Pull upstream after PR has been merged
|
|
|
|
|
|
+4) On github.co, verify the build action worked on your fork, then merge the PR
|
|
|
|
+
|
|
|
|
+5) Pull the merged main
|
|
|
|
|
|
```powershell
|
|
```powershell
|
|
git pull upstream main
|
|
git pull upstream main
|
|
```
|
|
```
|
|
|
|
|
|
-4) Push new tag to `main`
|
|
|
|
|
|
+6) Create a new tag for the release
|
|
|
|
+
|
|
|
|
+```powershell
|
|
|
|
+git tag v2.3.4 -a -m "Release v2.3.4"
|
|
|
|
+```
|
|
|
|
+
|
|
|
|
+7) Push new tag to `main`
|
|
|
|
|
|
```powershell
|
|
```powershell
|
|
-git tag v2.3.4 -a -m "v2.3.4 Release"
|
|
|
|
git push upstream v2.3.4
|
|
git push upstream v2.3.4
|
|
```
|
|
```
|
|
|
|
|
|
-5) Monitor Github actions to ensure it worked.
|
|
|
|
|
|
+8) Monitor Github actions to ensure it worked.
|
|
|
|
|
|
-6) Check nuget to see new package (wait a few minutes)
|
|
|
|
|
|
+9) Check nuget to see new package (wait a few minutes)
|
|
|
|
|
|
https://www.nuget.org/packages/Terminal.Gui
|
|
https://www.nuget.org/packages/Terminal.Gui
|
|
|
|
|
|
-7) Add a new Release in Github: https://github.com/migueldeicaza/gui.cs/releases
|
|
|
|
|
|
+10) Add a new Release in Github: https://github.com/migueldeicaza/gui.cs/releases
|
|
|
|
|
|
## Nuget
|
|
## Nuget
|
|
|
|
|
|
https://www.nuget.org/packages/Terminal.Gui
|
|
https://www.nuget.org/packages/Terminal.Gui
|
|
|
|
|
|
-When a new version tag is defined, and merged into master, a nuget package will be generated.
|
|
|
|
|
|
+When a new version tag is defined, and merged into main, a nuget package will be generated.
|
|
|
|
|
|
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.
|
|
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.
|
|
|
|
|