Skip to content
This repository has been archived by the owner on Jun 10, 2024. It is now read-only.

Latest commit

 

History

History
83 lines (44 loc) · 3.49 KB

CONTRIBUTING.md

File metadata and controls

83 lines (44 loc) · 3.49 KB

Contributing to NCalcAsync

As with any open source projects, contributions are most welcome!

Pull requests

Generally pull requests should go to the master branch where all new development and bugfixes are integrated. An exception are bug fixes that only apply to a specific version, which can be targeted to the relevant release/vX.Y branch.

Testing

Run the unit tests in NCalcAsync.Tests to test the project. New features should always have corresponding unit tests that exercise them.

Code coverage

Coverlet is used to collect code coverage when running the unit tests, using the VSTest integration.

The script run-code-coverage.ps1 will run the tests with code coverage enabled and then produce an HTML report.

Building and publishing packages

Github Actions are used for CI builds in all pull requests and on new commits to master, and for publishing packages (see below).

Versioning

Nerdbank.GitVersioning is used to assign version numbers to the packages using a standard major.minor.patch[-alpha] scheme. Patch versions may only contain bugfixes. New backward compatible features require a new minor version, and any breaking changes require a new major version.

The nbgv tool is used to manage the git branches and tags and to update version.json.

master is used to integrates new features and bugfixes. Any builds here will be labelled X.Y.Z-alpha.

release/vX.Y branches contain the commits that are published as non-alpha versions, and any builds in them will get a X.Y.Z version number.

Creating a new major versions

Any non-backward compatible features require a new major release. This should be created from master with nbgv:

git checkout master
nbgv set-version X.0-alpha

Commit the new version.json. Create a branch for the new major release:

nbgv prepare-release

nbgv will create a new release/vX.Y branch and update version.json in both that branch and in master.
Check that it looks correct and then push both master and the new branch to this repository to trigger builds. Follow the publishing process below to tag and publish the release.

Creating a new minor versions

New backward-compatible features should always be published in a new minor release. This should be created from master with nbgv:

git checkout master
nbgv prepare-release

nbgv will create a new release/vX.Y branch and update version.json in both that branch and in master.
Check that it looks correct and then push both master and the new branch to this repository to trigger builds. Follow the publishing process below to tag and publish the release.

Creating a new patch release

Just push commits to the relevant release/vX.Y branch, and follow the publishing process below to tag and publish the release.

Creating a new alpha release

The current master can be released as an alpha by following the publishing process below.

Publishing to NuGet

  • Create and tag the new version with nbgv: ** Alpha releases: nbgv tag master ** Other releases: nbgv tag release/vX.Y
  • Push the tag to Github.
  • Go to https://github.com/ncalc/ncalc-async/tags and select the tag.
  • Click Create release from tag and copy the release notes from CHANGELOG.md, and publish the release.
  • A Github Action will run to package the library and publish it to Nuget.