Pull Request Release Notes utility generates release notes for all merged pull requests, on a specific branch, that have not yet been released relying solely on pull request titles and labels to generate the release notes.
Supported Pull Request providers are GitHub, GitLab, TFS / Team Services, BitBucket Cloud and Bitbucket Server.
Intention is to run this utility as part of a continuous integration process and generate notes automatically as part of every release branch build. Optionally the utility can also publish the notes to a markdown file, Atlassian Confluence page or a Slack post.
Utility outputs release notes following the Semantic Release Notes format and extracts semantic release note sections, categories and summaries from the pull request title and labels. For example all pull requests with Bug
label can be grouped under Fixes
section and pull requests with Enhancement
label can be grouped under Enhancements
section. Category grouping is possible through use of the #Label
where #
character is used to denote a category label as opposed to a section label. TFS / Team Services and BitBucket Cloud / Server pull request providers do not have a label concept yet so for those providers you can type [#section]
and [##category]
either in the title or the description of the pull request as a pseudo-label.
You can also define a label to exclude pull request from release notes. Also you can define a label that when not added to a pull request will add a release note highlighted as code. This can be useful for scenarios such as QA team adding a QC label to a pull request so then it is easy to spot which items haven't gone through QC.
Release note formatting can be customised where you can turn off grouping by section and category, order the release notes based on merged or created time of pull request and the format of the release note itself. Other cool things it can do includes supplying a version number via GitVersion and ability to consider only annotated tags as releases or any kind of tag. See HELP.md for all the details on how perform these customisations.
choco install PullRequestReleaseNotes
While inside a git working directory run the application
$ PullRequestReleaseNotes
# 1.2.1 (MASTER) - XX XXX 2016
## Enhancements
### Category A
- Awesome new feature [\#1854](https://github.com/org/repo/pull/1854)
### Undefined
- Special feature for Acme Co [\#1855](https://github.com/org/repo/pull/1855)
## Fixes
### Category Z
- Fixed problem with widget [\#1792](https://github.com/org/repo/pull/1792)
### Category Y
- Fixed exception with view layout [\#1848](https://github.com/org/repo/pull/1848)
### Undefined
- Fixed spelling mistake [\#1833](https://github.com/org/repo/pull/1833)
## Unclassified
### Undefined
- Added new Category H [\#1843](https://github.com/org/repo/pull/1843)
See HELP.md for details on parameters.
Big thanks to Jake Ginnivan for inspiring this tool with his work on GitReleaseNotes and GitVersion
Also many thanks to:
- Edward Thomson for Infinity.NET that made it super-easy to connect to TFS.
- Adam Abdelhamed for PowerArgs that made command line argument parsing so easy it hurts.
- Mitja Bezenšek for SharpBucket that provided a pain-free way to connect to BitBucket.
- Antoine Aubry for YamlDotNet which made use of YAML format for the application configuration file as trivial as a yawn
- Simon Cropp for PepitaPackage which made NuGet packages for me before I even realised what was happening.
- Anthony van der Hoorn & Nik Molnar for creating Semantic Release Notes
- All contributors of RestSharp which is a swiss-army knife of REST clients and life without it would be meaningless. (bows)
- All contributors of LibGit2Sharp which made it possible to traverse a Git repo history to find all unreleased commits