Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/jwage/changelog-generator
Generate a markdown changelog document from a GitHub milestone.
https://github.com/jwage/changelog-generator
changelog changelog-generator
Last synced: 4 days ago
JSON representation
Generate a markdown changelog document from a GitHub milestone.
- Host: GitHub
- URL: https://github.com/jwage/changelog-generator
- Owner: jwage
- License: mit
- Created: 2018-05-19T06:15:30.000Z (over 6 years ago)
- Default Branch: master
- Last Pushed: 2023-04-24T22:45:59.000Z (over 1 year ago)
- Last Synced: 2024-10-14T14:11:43.017Z (about 1 month ago)
- Topics: changelog, changelog-generator
- Language: PHP
- Size: 245 KB
- Stars: 101
- Watchers: 3
- Forks: 8
- Open Issues: 12
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Changelog Generator
[![Build Status](https://travis-ci.org/jwage/changelog-generator.svg)](https://travis-ci.org/jwage/changelog-generator)
[![Scrutinizer Code Quality](https://scrutinizer-ci.com/g/jwage/changelog-generator/badges/quality-score.png?b=master)](https://scrutinizer-ci.com/g/jwage/changelog-generator/?branch=master)
[![Code Coverage](https://scrutinizer-ci.com/g/jwage/changelog-generator/badges/coverage.png?b=master)](https://scrutinizer-ci.com/g/jwage/changelog-generator/?branch=master)This library will generate a changelog markdown document from a GitHub milestone. It is based off of
[weierophinney/changelog_generator](https://github.com/weierophinney/changelog_generator).## Features
- [Shows total issues, pull requests and contributors in a GitHub milestone](https://github.com/jwage/changelog-generator#003)
- [Filter by GitHub labels](https://github.com/jwage/changelog-generator#filtering-by-labels)
- [Grouped by GitHub labels](https://github.com/jwage/changelog-generator#003)
- [Write changelog to a file](https://github.com/jwage/changelog-generator#write-to-file)
- [Multi-Project configuration](https://github.com/jwage/changelog-generator#configuration-file)
- [Connects related pull requests and issues to reduce redundant lines in the changelog](https://github.com/jwage/changelog-generator#connecting-issues--pull-requests)
- [GitHub Enterprise Support](https://github.com/jwage/changelog-generator#github-enterprise-support)## Installation
You can install with composer:
$ composer require jwage/changelog-generator
Or you can download the latest `changelog-generator.phar` file from the [releases](https://github.com/jwage/changelog-generator/releases) pages.
## Example
Here is what an example changelog looks like. It was generated from the `0.0.3` milestone in GitHub for this project:
### 0.0.3
- Total issues resolved: **7**
- Total pull requests resolved: **7**
- Total contributors: **1**#### Enhancement
- [15: Look for changelog-generator-config.php file by default if no --confi…](https://github.com/jwage/changelog-generator/pull/15) thanks to @jwage
- [13: Allow changelog configurations to be provided via a php config file.](https://github.com/jwage/changelog-generator/pull/13) thanks to @jwage
- [12: Allow changelog to be filtered by label names.](https://github.com/jwage/changelog-generator/pull/12) thanks to @jwage
- [11: Add total contributors to changelog.](https://github.com/jwage/changelog-generator/pull/11) thanks to @jwage
- [9: Improve changelog totals to be split by issue and pull requests.](https://github.com/jwage/changelog-generator/pull/9) thanks to @jwage
- [7: Link pull requests and issues together to improve the changelog format.](https://github.com/jwage/changelog-generator/pull/7) thanks to @jwage
- [6: Allow changelog to be written to a file.](https://github.com/jwage/changelog-generator/pull/6) thanks to @jwageYou can also look at the [CHANGELOG.md](https://github.com/jwage/changelog-generator/blob/master/CHANGELOG.md) file which
is generated by this project.## Basic Usage
Generate a change log based on a GitHub milestone with the following command:
$ ./vendor/bin/changelog-generator generate --user=doctrine --repository=migrations --milestone=2.0
## Write to File
Write the generated changelog to a file with the `--file` option. If you don't provide a value, it will be written
to the current working directory in a file named `CHANGELOG.md`:$ ./vendor/bin/changelog-generator generate --user=doctrine --repository=migrations --milestone=2.0 --file
You can pass a value to `--file` to specify where the changelog file should be written:
$ ./vendor/bin/changelog-generator generate --user=doctrine --repository=migrations --milestone=2.0 --file=changelog.md
By default it will overwrite the file contents but you can pass the `--append` option to append the changelog to
the existing contents.$ ./vendor/bin/changelog-generator generate --user=doctrine --repository=migrations --milestone=2.0 --file=changelog.md --append
If you want to prepend the changelog to an existing file, use the `--prepend` option:
$ ./vendor/bin/changelog-generator generate --user=doctrine --repository=migrations --milestone=2.0 --file=changelog.md --prepend
## Connecting Issues & Pull Requests
To make the changelog easier to read, we try to connect pull requests to issues by looking for `#{ISSUE_NUMBER}` in the body
of the pull request. When the user of the issue and pull request are different github users, the changelog line will look like the following:- [634: Fix namespace in bin/doctrine-migrations.php](https://github.com/doctrine/migrations/pull/634) thanks to @Majkl578 and @jwage
## Filtering by Labels
You can filter the changelog by label names using the `--label` option:
$ ./vendor/bin/changelog-generator generate --user=doctrine --repository=migrations --milestone=2.0 --label=Enhancement --label=Bug
## Including Open Issues & Pull Requests
It can be convenient when preparing release notes for an upcoming release to include open issues and pull requests. For
this you can use the `--include-open` option:$ ./vendor/bin/changelog-generator generate --user=doctrine --repository=migrations --milestone=2.0 --include-open
## Configuration File
You can provide a PHP configuration file to the changelog generator if you don't want to provide the data manually each time.
Put the following contents in a file named `config.php`:```php
(new ChangelogConfig())
->setUser('jwage')
->setRepository('changelog-generator')
->setMilestone('0.0.4')
->setLabels(['Enhancement', 'Bug'])
->setIncludeOpen(true)
,
'another-project' => (new ChangelogConfig())
// ...
,
];
```Then you can use the configuration file like the following:
$ ./vendor/bin/changelog-generator generate --config=config.php
By default it will generate a changelog for the first changelog config in the array returned by the file. You can use the
`--project` option if you want to generate a changelog for a specific project in the config file:$ ./vendor/bin/changelog-generator generate --config=config.php --project=another-project
By default if you name your config file `changelog-generator-config.php`, the changelog generator will look for that file
if no `--config` option is passed.$ ./vendor/bin/changelog-generator generate
You can override options provided by the `ChangelogConfig` object from the command line by passing options to the
`generate` command:$ ./vendor/bin/changelog-generator generate --include-open=0
## GitHub Enterprise Support
You can configure the URL of your GitHub instance by using the `rootGitHubUrl` option. In your `config.php` you can
pass a 5th argument to `ChangelogConfig` that contains an array of options:```php
(new ChangelogConfig())
->setUser('jwage')
->setRepository('changelog-generator')
->setMilestone('0.0.3')
->setLabels(['Enhancement', 'Bug'],)
->setOption('rootGitHubUrl', 'https://git.mycompany.com/api/v3')
,
];
```## GitHub Authentication
By default it is not required to authenticate with GitHub to use this tool. But if you want
higher rate limits or want to use it with private repositories then you will need to authenticate.### Personal Credentials
You can authenticate with your `username` and `password` or a personal access token
instead of your password using the `ChangelogGenerator\GitHubUsernamePassword` class:```php
(new ChangelogConfig())
// ...
->setGitHubCredentials(new GitHubUsernamePassword('username', 'passwordOrToken'))
,
];
```### OAuth Token
You can authenticate with an OAuth token as well using the `ChangelogGenerator\GitHubOAuthToken` class:
```php
(new ChangelogConfig())
// ...
->setGitHubCredentials(new GitHubOAuthToken('the oauth token'))
,
];
```