[![Gem Version](https://badge.fury.io/rb/github_changelog_generator.svg)](http://badge.fury.io/rb/github_changelog_generator) [![Build Status](https://travis-ci.org/skywinder/Github-Changelog-Generator.svg?branch=master)](https://travis-ci.org/skywinder/Github-Changelog-Generator) GitHub Changelog Generator ================== - [Installation](#installation) - [Output example](#output-example) - [Usage](#usage) - [Params](#params) - [GitHub token](#github-token) - [Features and advantages of this project](#features-and-advantages-of-this-project) - [Alternatives](#alternatives) - [Projects using this library](#projects-using-this-library) - [Am I missed some essential feature?](#am-i-missed-some-essential-feature) - [Contributing](#contributing) - [License](#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** (and split them to separate lists according labels) from :octocat: GitHub Issue Tracker. Since now you don't have to fill your `CHANGELOG.md` manually: just run script, relax and take a cup of :coffee: before your next release! :tada: ### *What’s the point of a change log?* To make it easier for users and contributors to see precisely what notable changes have been made between each release (or version) of the project. ## Installation [sudo] gem install github_changelog_generator ## Output example - Look at **[CHANGELOG.md](https://github.com/skywinder/Github-Changelog-Generator/blob/master/CHANGELOG.md)** for this project - [ActionSheetPicker-3.0/CHANGELOG.md](https://github.com/skywinder/ActionSheetPicker-3.0/blob/master/CHANGELOG.md) was generated by command: github_changelog_generator -u skywinder -p ActionSheetPicker-3.0 - In general it looks like this: > ## [1.2.5](https://github.com/skywinder/Github-Changelog-Generator/tree/1.2.5) (2015-01-15) > > [Full Changelog](https://github.com/skywinder/Github-Changelog-Generator/compare/1.2.4...1.2.5) > > **Implemented enhancements:** > > - Use milestone to specify in which version bug was fixed [\#22](https://github.com/skywinder/Github-Changelog-Generator/issues/22) > > **Fixed bugs:** > > - Error when trying to generate log for repo without tags [\#32](https://github.com/skywinder/Github-Changelog-Generator/issues/32) > > **Merged pull requests:** > > - PrettyPrint class is included using lowercase 'pp' [\#43](https://github.com/skywinder/Github-Changelog-Generator/pull/43) ([schwing](https://github.com/schwing)) > > - support enterprise github via command line options [\#42](https://github.com/skywinder/Github-Changelog-Generator/pull/42) ([glenlovett](https://github.com/glenlovett)) ## Usage **It's really simple**: - If your **git remote** `origin` refer 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` - `github_changelog_generator github_username/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 (`-t, --token` option) **You can easily [generate it here](https://github.com/settings/applications)**. And: - Run with key `-t [your-16-digit-token]` - Or set environment variable `CHANGELOG_GITHUB_TOKEN` and specify there your token. i.e. add to your `~/.bash_profile` or `~/.zshrc` or 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, neat change log file, followed by [basic change log guidlines](http://keepachangelog.com/) :gem: - Possible to generate **Unreleased** changes (closed issues that have not released yet) :dizzy: - **GitHub Enterprise support** via command line options! :factory: - Flexible format **customisation**: - **Customize** issues, that **should be added** to changelog :eight_spoked_asterisk: - **Custom date format** supported :date: - Ability to manually specify in which version issue was fixed (in case, when closed date is not match) by setting `milestone` of issue the same name as tag of required version :pushpin: - Automatically **exclude specific issues**, not-related to change log (any issue, that has label `question` `duplicate` `invalid` `wontfix`by default) :scissors: - **Distinguish** issues **according labels**. :mag_right: - Merged pull requests (all `merged` pull-requests) :twisted_rightwards_arrows: - Bug fixes (by label `bug` in issue) :beetle: - Enhancements (by label `enhancement` in issue) :star2: - Issues (closed issues `w/o any labels`) :non-potable_water: - You manually can set which labels should be included/excluded. :wrench: - Apply a lot of other customisations, to fit changelog for your personal style :tophat: (*look `github_changelog_generator --help` for details)* ###Alternatives Here is a [wikipage list of alternatives](https://github.com/skywinder/Github-Changelog-Generator/wiki/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](https://github.com/skywinder/Github-Changelog-Generator/wiki/Projects-using-Github-Changelog-Generator) *If you are using `github_changelog_generator` for generation change log in your project or know another 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](https://github.com/skywinder/Github-Changelog-Generator/issues/new) and let's make generator better together! - *Bug reports, feature requests, patches, well-wishes are always welcome* :heavy_exclamation_mark: ## Contributing 1. Create an issue to discuss about your idea 2. [Fork it] (https://github.com/skywinder/Github-Changelog-Generator/fork) 3. Create your feature branch (`git checkout -b my-new-feature`) 4. Commit your changes (`git commit -am 'Add some feature'`) 5. Push to the branch (`git push origin my-new-feature`) 6. Create a new Pull Request 7. Profit! :white_check_mark: ## License Github Changelog Generator is released under the [MIT License](http://www.opensource.org/licenses/MIT).