Provides a script that generates a changelog based on titles of pull requests merged between specified references.
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.
My process | Will this tool work for me? |
---|---|
I need elaborate changelogs | No |
I push directly into the default branch | No |
No | |
No | |
Yes |
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
Install globally:
$ composer global require ergebnis/github-changelog
Create your changelogs from within a Git repository:
$ git clone git@github.com:ergebnis/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 ergebnis/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
Install locally:
$ composer require --dev ergebnis/github-changelog
Create your changelog from within in your project:
$ vendor/bin/github-changelog generate ergebnis/github-changelog ae63248 main
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
Install locally:
$ composer require ergebnis/github-changelog
Retrieve pull requests between references in your application:
<?php
require 'vendor/autoload.php';
use Github\Client;
use Github\HttpClient\CachedHttpClient;
use Ergebnis\GitHub\Changelog\Repository;
use Ergebnis\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('ergebnis/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
💡 You can use anything for a reference, e.g., a tag, a branch, a commit!
Please have a look at CHANGELOG.md
.
Please have a look at CONTRIBUTING.md
.
Please have a look at CODE_OF_CONDUCT.md
.
This package is licensed using the MIT License.
Please have a look at LICENSE.md
.
📬 Subscribe to my list, and I will occasionally send you an email to let you know what I am working on.