ergebnis/github-changelog

This package is abandoned and no longer maintained. No replacement package was suggested.

Provides a console command that generates a changelog based on titles of pull requests merged between specified references.

Maintainers

πŸ‘ localheinz

Package info

github.com/ergebnis/github-changelog

pkg:composer/ergebnis/github-changelog

Fund package maintenance!

localheinz

Statistics

Installs: 25

Dependents: 0

Suggesters: 0

Stars: 47

Open Issues: 1

0.7.1 2019-12-15 09:43 UTC

MIT 25d0731f6462511716737e4b9f4faad28d44d88c

  • Andreas MΓΆller <am.woop@localheinz.com>

This package is auto-updated.

Last update: 2026-05-15 15:50:25 UTC


README

πŸ‘ Integrate
πŸ‘ Prune
πŸ‘ Release
πŸ‘ Renew

πŸ‘ Code Coverage
πŸ‘ Type Coverage

πŸ‘ Latest Stable Version
πŸ‘ Total Downloads

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

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 directly into the default branch No
πŸ‘ Rebase and merge
No
πŸ‘ Squash and merge
No
πŸ‘ Merge pull request
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 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

Local installation

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

Userland Code

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

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.

Please have a look at LICENSE.md.

Curious what I am building?

πŸ“¬ Subscribe to my list, and I will occasionally send you an email to let you know what I am working on.