Skip to content

Commit

Permalink
Merge pull request #90 from tig/v1_0_6
Browse files Browse the repository at this point in the history
Prepping for Release v1.0.6
  • Loading branch information
tig authored Dec 4, 2022
2 parents 093b2f5 + bd3b39c commit 92b5d7f
Show file tree
Hide file tree
Showing 5 changed files with 126 additions and 66 deletions.
29 changes: 1 addition & 28 deletions NStack/NStack.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -26,34 +26,7 @@

It starts with a new string type that is focused on Unicode code-points as opposed to the historical chars and UTF-16 encoding and introduces a utf8 string that supports slicing</Description>
<PackageReleaseNotes>
Version 1.0.5
* Fixes #83. Ustring ConsoleWidth must return the exactly character size or zero and not Rune.ColumnWidth

Version 1.0.3
* Fixes #79. Needed to add unit test for equal and not equal operators.

Version 1.0.1 - Moderinized API doc generation and now using gitflow
* Fixes #59. Automatically generate API docs via github action
* Fixes #61. ustring.IsNullOrEmpty doesn't work the same way as the string.IsNullOrEmpty method.

Previous Versions:
0.17: Fork by @tig modernize build/deploy and help publishing newer versions. No functional changes.
0.16: Fixes issue #51 (chess symbols);
0.15: Fixes to MaxRune; ColumnWidth differentiates between non-printable and nul characters; Rune has a constructor from two surrogate pairs; contributions by @BDisp;
0.14: Upgrade the NetStandard dependencies;
0.13: Fixes ustring.Map() and Lower(); Extends Rune.IsValid to match Go; add Rune.ExpectedSizeFromFirstByte() plus a bug fix;
stack
0.12: Rebuild with an older Roslyn, to prevent regressions on Xamarin.
0.10: Merged some changes from upstream.

0.9:
Added ustring.ColumnWidth to return number of columns that a ustring takes in a console.

0.8:
* Renamed some methods to match the equivalent methods in Char.
* Introduced Substring (int start)
* Introduced difference between this [int start, int end] and this [int start, object end] the latter used to mean "until the end", replacing '0' as the previous value for "until the end".
* Introduced new method in Rune to measure the width in columns for console applications.
See https://github.com/gui-cs/NStack/releases
</PackageReleaseNotes>

<!-- Version numbers are automatically updated by gitversion when a release is released -->
Expand Down
125 changes: 125 additions & 0 deletions NStack/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,125 @@
# Build & Deploy

## Regenerating Tables when the Unicode standard is updated

To regenerate the Tables.cs file from the reference unicode files, run `Makefile`
with the command `make tables`, which will create the updated tables.

There is some work to be done to dump the tables as a binary blob,
without going through the various data structures that we have now, it would
avoid all these constructors triggered on the static class.

## Version Numbers

Version info for NStack is managed by [gitversion](https://gitversion.net).

Install `gitversion`:

```powershell
dotnet tool install --global GitVersion.Tool
dotnet-gitversion
```

The project version (the nuget package and in `NStack.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.

To define a new version (e.g. with a higher `major`, `minor`, `patch`, or `build` value) tag a commit using `git tag`:

```powershell
git tag v1.3.4-beta.5 -a -m "Release v1.3.4 Beta 5"
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.

## Deploying a new version of the NStack Nuget Library

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/NStack` (`upstream`).

The `tag` must be of the form `v<major>.<minor>.<patch>`, e.g. `v2.3.4`.

`patch` can indicate pre-release or not (e.g. `pre`, `beta`, `rc`, etc...).

### 1) Verify the `develop` branch is ready for release

* Ensure everything is committed and pushed to the `develop` branch
* Ensure your local `develop` branch is up-to-date with `upstream/develop`

### 2) Create a pull request for the release in the `develop` branch

The PR title should be of the form "Release v2.3.4"

```powershell
git checkout develop
git pull upstream develop
git checkout -b v_2_3_4
git merge develop
git add .
git commit -m "Release v2.3.4"
git push
```

Go to the link printed by `git push` and fill out the Pull Request.

### 3) On github.com, verify the build action worked on your fork, then merge the PR

### 4) Pull the merged `develop` from `upstream`

```powershell
git checkout develop
git pull upstream develop
```

### 5) Merge `develop` into `main`

```powershell
git checkout main
git pull upstream main
git merge develop
```

Fix any merge errors.

### 6) Create a new annotated tag for the release on `main`

```powershell
git tag v2.3.4 -a -m "Release v2.3.4"
```

### 7) Push the new tag to `main` on `upstream`

```powershell
git push --atomic upstream main v2.3.4
```

*See https://stackoverflow.com/a/3745250/297526*

### 8) Monitor Github Actions to ensure the Nuget publishing worked.

https://github.com/gui-cs/NStack/actions

### 9) Check Nuget to see the new package version (wait a few minutes)
https://www.nuget.org/packages/NStack.Core

### 10) Add a new Release in Github: https://github.com/gui-cs/NStack/releases

Generate release notes with the list of PRs since the last release

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:>=2022-11-1"
```
### 11) Update the `develop` branch with the new version

```powershell
git checkout develop
git pull upstream develop
git merge main
git push upstream develop
```
6 changes: 0 additions & 6 deletions NStack/demo.md

This file was deleted.

6 changes: 0 additions & 6 deletions NStack/unicode/README.md

This file was deleted.

26 changes: 0 additions & 26 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -34,29 +34,3 @@ can exist without them being valid UTF8 strings, but rather a collection of byte
a particular character set and are effectively not possible to map into strings.


# Version Numbers

Version info for NStack is managed by [gitversion](https://gitversion.net).

Install `gitversion`:

```powershell
dotnet tool install --global GitVersion.Tool
dotnet-gitversion
```

The project version (the nuget package and in `NStack.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.

To define a new version (e.g. with a higher `major`, `minor`, `patch`, or `build` value) tag a commit using `git tag`:

```powershell
git tag v1.3.4-beta.5 -a -m "Release v1.3.4 Beta 5"
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.

0 comments on commit 92b5d7f

Please sign in to comment.