localheinz/github-changelog
Provides a console command that generates a changelog based on titles of pull requests merged between specified references.
Requires
- php: ^7.0
- knplabs/github-api: ^2.5.0
- php-http/guzzle6-adapter: ^1.1.1
- symfony/cache: ^3.1.5
- symfony/console: ^3.3.6
- symfony/stopwatch: ^3.1.5
Requires (Dev)
- localheinz/php-cs-fixer-config: ~1.7.1
- localheinz/test-util: 0.4.0
- phpunit/phpunit: ^6.4.1
- dev-master
- 0.6.1
- 0.6.0
- 0.5.2
- 0.5.1
- 0.5.0
- 0.4.0
- 0.3.0
- 0.2.1
- 0.2.0
- 0.1.5
- 0.1.4
- 0.1.3
- 0.1.2
- 0.1.1
- 0.1.0
- dev-dependabot/composer/symfony/console-4.4.1
- dev-dependabot/composer/symfony/cache-4.4.1
- dev-feature/phpstan-rules
- dev-feature/php7.4
- dev-dependabot/composer/phpunit/phpunit-8.5.0
- dev-fix/stale
- dev-feature/synchronize
- dev-feature/range-not-found
README
Provides a script that generates a changelog based on titles of pull requests merged between specified references.
Is this the right tool for me?
Probably not. There are a range of other tools that probably do a better job.
Take a look at
- https://packagist.org/?q=changelog
- https://www.npmjs.com/search?q=changelog
- https://pypi.python.org/pypi?%3Aaction=search&term=changelog
Nonetheless, for me and my projects, it's the second best thing after manually keeping a changelog as suggested at http://keepachangelog.com.
When will it work for me?
My process | Will this tool work for me? |
---|---|
I need elaborate changelogs | No |
I push to master |
No |
![]() |
No |
![]() |
No |
![]() |
Yes |
Why is this tool so limited?
All this tool does is this:
- it collects commits between references
- it matches commit messages against what is used by GitHub as a merge commit message
- it fetches the pull request title from the corresponding pull request
- it then uses all of the pull request titles to compile a list
CLI Tool
Global installation
Install globally:
$ composer global require localheinz/github-changelog
Create your changelogs from within a Git repository:
$ git clone git@github.com:localheinz/github-changelog.git
$ cd github-changelog
$ github-changelog generate 0.1.1 0.1.2
Create your changelogs from anywhere, specifying the repository using the --repository
option:
$ github-changelog generate --repository localheinz/github-changelog 0.1.1 0.1.2
Enjoy the changelog:
- Fix: Catch exceptions in command (#37), by @localheinz
- Fix: Request 250 instead of 30 commits (#38), by @localheinz
Local installation
Install locally:
$ composer require --dev localheinz/github-changelog
Create your changelog from within in your project:
$ vendor/bin/github-changelog generate localheinz/github-changelog ae63248 master
Enjoy the changelog:
- Enhancement: Create ChangeLog command (#31), by @localheinz
- Fix: Assert exit code is set to 0 (#32), by @localheinz
- Enhancement: Add console application (#33), by @localheinz
- Fix: Readme (#34), by @localheinz
- Fix: Autoloading for console script (#35), by @localheinz
- Fix: Version foo with rebasing and whatnot (#36), by @localheinz
- Fix: Catch exceptions in command (#37), by @localheinz
- Fix: Request 250 instead of 30 commits (#38), by @localheinz
Userland Code
Install locally:
$ composer require localheinz/github-changelog
Retrieve pull requests between references in your application:
<?php require 'vendor/autoload.php'; use Github\Client; use Github\HttpClient\CachedHttpClient; use Localheinz\GitHub\ChangeLog\Repository; use Localheinz\GitHub\ChangeLog\Resource; $client = new Client(new CachedHttpClient()); $client->authenticate( 'your-token-here', Client::AUTH_HTTP_TOKEN ); $pullRequestRepository = new Repository\PullRequestRepository( $client->pullRequests(), new Repository\CommitRepository($client->repositories()->commits()) ); /* @var Resource\RangeInterface $range */ $range = $repository->items( Resource\Repository::fromString('localheinz/github-changelog'), '0.1.1', '0.1.2' ); $pullRequests = $range->pullRequests(); array_walk($pullRequests, function (Resource\PullRequestInterface $pullRequest) { echo sprintf( '- %s (#%d), submitted by @%s' . PHP_EOL, $pullRequest->title(), $pullRequest->number(), $pullRequest->author()->login(), ); });
Enjoy the changelog:
- Fix: Catch exceptions in command (#37), submitted by @localheinz
- Fix: Request 250 instead of 30 commits (#38), submitted by @localheinz
Hints
💡 You can use anything for a reference, e.g., a tag, a branch, a commit!
Changelog
Please have a look at CHANGELOG.md
.
Contributing
Please have a look at CONTRIBUTING.md
.
Code of Conduct
Please have a look at CODE_OF_CONDUCT.md
.
License
This package is licensed using the MIT License.