GitHub Changelog Generator
- Installation
- Output example
- Usage
- Features and advantages of this project
- Am I missed some essential feature?
- Contributing
- License
Changelog generation has never been so easy.
Fully automate changelog generation - This gem generate change log file based on tags, issues and merged pull requests from Github issue tracker. This generator complies all change log format guidelines.
Installation
[sudo] gem install github_changelog_generator
Output example
-
Look at CHANGELOG.md for this project
-
ActionSheetPicker-3.0/CHANGELOG.md was generated by command:
github_changelog_generator -u skywinder -p ActionSheetPicker-3.0 -
In general it looks like this:
1.3.10
09/01/15
Merged pull-request: add header file to public #115 (skywinder)
Merged pull-request: Fix bad interaction with Git submodules. #112 (JimDabell)
Implemented enhancement: Should have minimum/maximum date property exposed #97
1.3.9
11/12/14
Usage
It's really simple:
-
If your git remote
originrefer to your GitHub repo, then just go to your project folder and run:github_changelog_generator -
or from anywhere:
github_changelog_generator -u github_username -p github_project
As output you will get CHANGELOG.md file with pretty Markdown-formatted changelog.
Params
Type github_changelog_generator --help for detailed usage.
Usage: changelog_generator [options]
-u, --user [USER] Username of the owner of target GitHub repo
-p, --project [PROJECT] Name of project on GitHub
-t, --token [TOKEN] To make more than 50 requests per hour your GitHub token required. You can generate it here: https://github.com/settings/tokens/new
-f, --date-format [FORMAT] Date format. Default is %d/%m/%y
-o, --output [NAME] Output file. Default is CHANGELOG.md
--[no-]verbose Run verbosely. Default is true
--[no-]issues Include closed issues to changelog. Default is true
--[no-]issues-wo-labels Include closed issues without labels to changelog. Default is true
--[no-]pr-wo-labels Include pull requests without labels to changelog. Default is true
--[no-]pull-requests Include pull-requests to changelog. Default is true
--[no-]filter-by-milestone Use milestone to detect when issue was resolved. Default is true
--[no-]author Add author of pull-request in the end. Default is true
--unreleased-only Generate log from unreleased closed issues only.
--[no-]unreleased Add to log unreleased closed issues. Default is true
--[no-]compare-link Include compare link between older version and newer version. Default is true
--include-labels x,y,z Issues only with that labels will be included to changelog. Default is 'bug,enhancement'
--exclude-labels x,y,z Issues with that labels will be always excluded from changelog. Default is 'duplicate,question,invalid,wontfix'
--github-site [URL] The Enterprise Github site on which your project is hosted.
--github-api [URL] The enterprise endpoint to use for your Github API.
-v, --version Print version number
-h, --help Displays Help
GitHub token
Since GitHub allow to make only 50 requests without authentication it's recommended to run this script with token
You can easily generate it here.
And:
-
Run with key
-t [your-16-digit-token] -
Or set environment variable
CHANGELOG_GITHUB_TOKENand specify there your token.i.e. add to your
~/.bash_profileor~/.zshrcor any other place to load ENV variables string :export CHANGELOG_GITHUB_TOKEN="your-40-digit-github-token"
So, if you got error like this:
! /Library/Ruby/Gems/2.0.0/gems/github_api-0.12.2/lib/github_api/response/raise_error.rb:14:in `on_complete'
It's time to create this token or wait for 1 hour before GitHub reset the counter for your IP.
##Features and advantages of this project
- Generate canonical change log file, followed by keepachangelog.com guidlines
- Simply add links for all closed issues and merged pull requests
- Possible to generate Unreleased changes (closed issues that have not released yet)
- Flexible format customisation:
- Customize issues, that should be added to changelog
- Custom date format supported
- Ability to manually specify in which version issue was fixed (in case, when closed date is not match) by setting
milestoneof issue the same name as tag of required version - Ability to exclude specific issues from change log (by labels)
- Automatically exclude "questions" - issues marked as
questionlabels (and other issues, that shouldn't be in change log file: withduplicate invalid wontfixlabels)
- Automatically exclude "questions" - issues marked as
- Distinguish bug fixes, enchantments, and closed issues according labels.
- Issues (closed issues w/o any labels)
- Merged pull-requests (all merged pull-requests)
- Bug-fixes (by label
bugin issue) - Enhancements (by label
enhancementin issue)
###Alternatives Here is a wikipage list of alternatives, that I found. But no one was satisfy my requirements.
If you know other projects - feel free to edit this Wiki page!
Projects using this library
Wikipage with list of projects
If you are using github_changelog_generator for generation change log in your project or know of project that uses it, please add it to [this] (https://github.com/skywinder/Github-Changelog-Generator/wiki/Projects-using-Github-Changelog-Generator) list.
Am I missed some essential feature?
Nothing is impossible!
Open an issue and let's make generator better together!
Bug reports, feature requests, patches, well-wishes are always welcome!
Contributing
- Create an issue to discuss about your idea
- [Fork it] (https://github.com/skywinder/Github-Changelog-Generator/fork)
- Create your feature branch (
git checkout -b my-new-feature) - Commit your changes (
git commit -am 'Add some feature') - Push to the branch (
git push origin my-new-feature) - Create a new Pull Request
License
Github Changelog Generator is released under the MIT License.