Gem Version Build Status

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 from Github issue tracker. This generator complies all change log format guidelines.

Installation

[sudo] gem install github_changelog_generator

Output example

1.2.5 (2015-01-15)

Full Changelog

Implemented enhancements:

  • Use milestone to specify in which version bug was fixed #22

Fixed bugs:

  • Error when trying to generate log for repo without tags #32

Merged pull requests:

  • PrettyPrint class is included using lowercase 'pp' #43 (schwing)

  • support enterprise github via command line options #42 (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
    

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_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 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 `milestone` of 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 `question` labels (and other issues, that shouldn't be in change log file: with `duplicate invalid wontfix` labels)
    
  • 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 bug in issue)
    • Enhancements (by label enhancement in 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

  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

License

Github Changelog Generator is released under the MIT License.