github-changelog-generator/README.md

202 lines
10 KiB
Markdown
Raw Permalink Normal View History

2014-11-06 17:30:51 +00:00
[![Gem Version](https://badge.fury.io/rb/github_changelog_generator.svg)](http://badge.fury.io/rb/github_changelog_generator)
2015-03-20 13:56:54 +00:00
[![Build Status](https://travis-ci.org/skywinder/github-changelog-generator.svg?branch=master)](https://travis-ci.org/skywinder/github-changelog-generator)
2014-12-03 09:42:52 +00:00
2015-03-20 23:00:37 +00:00
GitHub Changelog Generator ![GitHub Logo](../master/images/logo.jpg)
2015-02-18 12:31:00 +00:00
==================
2015-02-18 18:20:57 +00:00
- [Installation](#installation)
- [Output example](#output-example)
- [Usage](#usage)
- [Params](#params)
2015-02-18 12:31:00 +00:00
- [GitHub token](#github-token)
2015-02-23 10:35:12 +00:00
- [Features and advantages of this project](#features-and-advantages-of-this-project)
2015-02-18 18:20:57 +00:00
- [Alternatives](#alternatives)
- [Projects using this library](#projects-using-this-library)
2015-03-20 21:28:48 +00:00
- [Am I missing some essential feature?](#am-i-missing-some-essential-feature)
2015-02-18 12:31:00 +00:00
- [Contributing](#contributing)
- [License](#license)
2015-03-18 13:26:32 +00:00
### Changelog generation has never been so easy:
2014-11-07 10:00:01 +00:00
2015-03-20 21:28:48 +00:00
**Fully automate changelog generation** - This gem generates change log file based on **tags**, **issues** and merged **pull requests** (and splits them into separate lists according labels) from :octocat: GitHub Issue Tracker.
2015-03-18 13:26:32 +00:00
2015-03-20 21:28:48 +00:00
Since now you don't have to fill your `CHANGELOG.md` manually: just run the script, relax and take a cup of :coffee: before your next release! :tada:
2015-03-18 13:26:32 +00:00
2015-03-18 14:04:42 +00:00
>### *Whats the point of a change log?*
2015-03-18 13:26:32 +00:00
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.
2015-03-18 14:04:42 +00:00
### *Why should I care?*
Because software tools are for people. If you dont care, why are you contributing to open source? Surely, there must be a kernel (ha!) of care somewhere in that lovely little brain of yours.
2015-03-18 14:06:27 +00:00
> :copyright: *[http://keepachangelog.com](http://keepachangelog.com/)*
2014-11-06 13:39:10 +00:00
2015-02-18 18:20:57 +00:00
## Installation
2014-11-19 20:16:41 +00:00
2014-11-07 10:00:01 +00:00
[sudo] gem install github_changelog_generator
2014-11-06 17:14:35 +00:00
2015-02-18 18:20:57 +00:00
## Output example
2015-02-02 17:16:06 +00:00
- 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:
2015-02-02 16:54:59 +00:00
2015-02-27 13:11:56 +00:00
> ## [1.2.5](https://github.com/skywinder/Github-Changelog-Generator/tree/1.2.5) (2015-01-15)
2015-02-02 16:54:59 +00:00
>
2015-02-27 13:11:56 +00:00
> [Full Changelog](https://github.com/skywinder/Github-Changelog-Generator/compare/1.2.4...1.2.5)
2015-02-02 16:54:59 +00:00
>
2015-02-27 13:30:29 +00:00
> **Implemented enhancements:**
2015-02-02 16:54:59 +00:00
>
2015-02-27 13:11:56 +00:00
> - Use milestone to specify in which version bug was fixed [\#22](https://github.com/skywinder/Github-Changelog-Generator/issues/22)
2015-02-02 16:54:59 +00:00
>
2015-02-27 13:30:29 +00:00
> **Fixed bugs:**
2015-02-27 13:11:56 +00:00
>
> - Error when trying to generate log for repo without tags [\#32](https://github.com/skywinder/Github-Changelog-Generator/issues/32)
>
2015-02-27 13:30:29 +00:00
> **Merged pull requests:**
2015-02-27 13:11:56 +00:00
>
> - 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))
2015-02-02 16:54:59 +00:00
2015-02-18 18:20:57 +00:00
## Usage
2014-11-11 08:57:53 +00:00
**It's really simple**:
2014-11-06 13:47:56 +00:00
2015-03-20 21:28:48 +00:00
- If your **git remote** `origin` refers to your GitHub repo, then just go to your project folder and run:
2014-11-06 17:14:35 +00:00
2014-11-11 08:57:53 +00:00
github_changelog_generator
2014-11-06 17:14:35 +00:00
2014-11-24 19:20:46 +00:00
- or from anywhere:
2015-03-09 07:59:04 +00:00
- `github_changelog_generator -u github_username -p github_project`
- `github_changelog_generator github_username/github_project`
2014-11-11 08:57:53 +00:00
2015-01-21 18:17:57 +00:00
As output you will get `CHANGELOG.md` file with pretty *Markdown-formatted* changelog.
2014-11-06 17:25:58 +00:00
2015-02-18 18:20:57 +00:00
### Params
2014-11-11 08:57:53 +00:00
Type `github_changelog_generator --help` for detailed usage.
Usage: changelog_generator [options]
2015-02-24 14:34:16 +00:00
-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
2014-11-07 16:31:36 +00:00
2014-11-07 10:00:01 +00:00
2014-11-24 19:20:46 +00:00
### GitHub token
2014-11-06 17:14:35 +00:00
2015-03-20 21:28:48 +00:00
Since GitHub allows you to make only 50 requests without authentication it's recommended to run this script with a token (`-t, --token` option)
**You can easily [generate it here](https://github.com/settings/applications)**.
And:
2014-11-24 19:20:46 +00:00
- Run with key `-t [your-16-digit-token]`
2014-11-13 07:22:32 +00:00
- Or set environment variable `CHANGELOG_GITHUB_TOKEN` and specify there your token.
2015-01-21 18:17:57 +00:00
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"
2014-11-06 13:47:56 +00:00
2014-11-06 17:14:35 +00:00
So, if you got error like this:
2014-11-11 08:57:53 +00:00
>! /Library/Ruby/Gems/2.0.0/gems/github_api-0.12.2/lib/github_api/response/raise_error.rb:14:in `on_complete'
2014-11-06 14:35:53 +00:00
2014-11-11 08:57:53 +00:00
It's time to create this token or wait for 1 hour before GitHub reset the counter for your IP.
2014-11-06 14:35:53 +00:00
2015-02-23 10:35:12 +00:00
##Features and advantages of this project
2015-03-18 13:26:32 +00:00
- Generate canonical, neat change log file, followed by [basic change log guidlines](http://keepachangelog.com/) :gem:
2015-03-18 13:36:01 +00:00
- Possible to generate **Unreleased** changes (closed issues that have not released yet) :dizzy:
- **GitHub Enterprise support** via command line options! :factory:
2015-03-17 15:07:12 +00:00
- Flexible format **customisation**:
2015-03-18 13:36:01 +00:00
- **Customize** issues, that **should be added** to changelog :eight_spoked_asterisk:
2015-03-20 21:44:18 +00:00
- **Custom date format** supported (but get in mind [ISO 8601](http://xkcd.com/1179/) ) :date:
2015-03-18 13:56:35 +00:00
- 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:
2015-03-18 13:52:46 +00:00
- **Distinguish** issues **according labels**. :mag_right:
- Merged pull requests (all `merged` pull-requests) :twisted_rightwards_arrows:
- Bug fixes (by label `bug` in issue) :beetle:
2015-03-18 13:43:11 +00:00
- Enhancements (by label `enhancement` in issue) :star2:
2015-03-18 13:52:46 +00:00
- Issues (closed issues `w/o any labels`) :non-potable_water:
2015-03-20 21:28:48 +00:00
- You can manually set which labels should be included/excluded. :wrench:
2015-03-18 13:45:51 +00:00
- Apply a lot of other customisations, to fit changelog for your personal style :tophat:
(*look `github_changelog_generator --help` for details)*
2015-03-18 13:26:32 +00:00
2015-02-18 10:06:36 +00:00
2015-02-18 18:20:57 +00:00
###Alternatives
2015-03-20 21:28:48 +00:00
Here is a [wikipage list of alternatives](https://github.com/skywinder/Github-Changelog-Generator/wiki/Alternatives), that I found. But none satisfied my requirements.
2015-02-18 10:06:36 +00:00
*If you know other projects - feel free to edit this Wiki page!*
2015-02-18 18:20:57 +00:00
### Projects using this library
2014-11-24 19:20:46 +00:00
[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.*
2014-11-24 19:20:46 +00:00
2015-03-20 21:28:48 +00:00
## Am I missing some essential feature?
2014-11-11 08:57:53 +00:00
2015-03-18 13:59:44 +00:00
- **Nothing is impossible!**
2015-02-02 17:16:06 +00:00
2015-03-18 13:59:44 +00:00
- Open an [issue](https://github.com/skywinder/Github-Changelog-Generator/issues/new) and let's make generator better together!
2014-11-06 14:35:53 +00:00
2015-03-18 13:59:44 +00:00
- *Bug reports, feature requests, patches, well-wishes are always welcome* :heavy_exclamation_mark:
2014-11-06 17:33:44 +00:00
2015-03-20 11:05:00 +00:00
## FAQ
- ***I already use GitHub Releases. Why do I need this?***
2015-03-20 16:41:55 +00:00
GitHub Releases is a very good thing. And it's very good practice to maintain it (not so much people using it yet)! :congratulations:
2015-03-20 11:05:00 +00:00
2015-03-20 16:41:55 +00:00
*BDW: I would like to support GitHub Releases in [next releases](https://github.com/skywinder/github-changelog-generator/issues/56) ;)*
2015-03-20 11:05:00 +00:00
2015-03-20 16:41:55 +00:00
I'm not try to compare quality of auto-generated and manually generated logs.. but:
The auto generated Changelog really helps even if you manually fill Releases notes!
For example:
2015-03-20 11:05:00 +00:00
When I found a closed bug - it's very useful to understand, in which release it was fixed. In that case you can easily find this issue by \# in `CHANGELOG.md`.
- it's not so quite easy to find it in manually filled Releases notes.
- this file can also help you to build your Release note and not miss features in manually-filled list.
In the end:
I think, that GitHub Releases is more for end-users.
But `CHANGELOG.md` could stay in the repo for developers with detailed list of changes.
And it's nothing bad to combine GitHub Releases and `CHANGELOG.md` file together in that manner.
2014-11-11 09:00:34 +00:00
## Contributing
2014-11-06 17:33:44 +00:00
1. Create an issue to discuss about your idea
2014-11-06 17:48:59 +00:00
2. [Fork it] (https://github.com/skywinder/Github-Changelog-Generator/fork)
2014-11-06 17:33:44 +00:00
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
2015-03-18 13:36:01 +00:00
7. Profit! :white_check_mark:
2014-11-06 17:33:44 +00:00
2014-11-11 08:57:53 +00:00
## License
2014-11-06 17:33:44 +00:00
2015-02-06 13:36:03 +00:00
Github Changelog Generator is released under the [MIT License](http://www.opensource.org/licenses/MIT).