All Projects → jwage → Changelog Generator

jwage / Changelog Generator

Licence: mit
Generate a markdown changelog document from a GitHub milestone.

Labels

Projects that are alternatives of or similar to Changelog Generator

Objectlogger
A powerful and easy-to-use operational logging system that supports analysis of changes in object properties. 强大且易用的操作日志记录系统,支持对象属性的变化分析。
Stars: ✭ 378 (+302.13%)
Mutual labels:  changelog
Lerna Changelog
📖 PR-based changelog generator with monorepo support
Stars: ✭ 611 (+550%)
Mutual labels:  changelog
Git Changelog
Automatic Changelog generator using Jinja2 templates.
Stars: ✭ 30 (-68.09%)
Mutual labels:  changelog
Git Quick Stats
▁▅▆▃▅ Git quick statistics is a simple and efficient way to access various statistics in git repository.
Stars: ✭ 5,139 (+5367.02%)
Mutual labels:  changelog
Composer Changelogs
📓 Display better summary after Composer update
Stars: ✭ 540 (+474.47%)
Mutual labels:  changelog
Github Changelog Generator
Automatically generate change log from your tags, issues, labels and pull requests on GitHub.
Stars: ✭ 6,631 (+6954.26%)
Mutual labels:  changelog
Releaser Tools
Create a GitHub/GitLab/etc. release using a project's commit messages and metadata.
Stars: ✭ 283 (+201.06%)
Mutual labels:  changelog
Changelogged
Quickly generate a list of merged PRs in the given git range
Stars: ✭ 86 (-8.51%)
Mutual labels:  changelog
Conventional Changelog
Generate changelogs and release notes from a project's commit messages and metadata.
Stars: ✭ 5,962 (+6242.55%)
Mutual labels:  changelog
Fugitive
Simple command line tool to make git more intuitive, along with useful GitHub addons.
Stars: ✭ 20 (-78.72%)
Mutual labels:  changelog
Gitchangelog
Creates a changelog from git log history.
Stars: ✭ 482 (+412.77%)
Mutual labels:  changelog
Standard Version
🏆 Automate versioning and CHANGELOG generation, with semver.org and conventionalcommits.org
Stars: ✭ 5,806 (+6076.6%)
Mutual labels:  changelog
Strangelog
Painless file-based changelog management via CLI.
Stars: ✭ 12 (-87.23%)
Mutual labels:  changelog
Release It
🚀 Automate versioning and package publishing
Stars: ✭ 4,773 (+4977.66%)
Mutual labels:  changelog
Changelog Ci
Changelog CI is a GitHub Action that generates changelog, Then the changelog is committed and/or commented to the release Pull request.
Stars: ✭ 68 (-27.66%)
Mutual labels:  changelog
Bump
Bump updates the project's version, updates/creates the changelog, makes the bump commit, tags the bump commit and makes the release to GitHub. Opinionated but configurable.
Stars: ✭ 327 (+247.87%)
Mutual labels:  changelog
Github Release Notes
Node module to create a release or a changelog from a tag and uses issues or commits to creating the release notes.
Stars: ✭ 705 (+650%)
Mutual labels:  changelog
Changelog
Jekyll powered static site to host your product's changelog. Demo -
Stars: ✭ 91 (-3.19%)
Mutual labels:  changelog
Changelog Linker
[READ-ONLY] Make CHANGELOG.md Useful with Links
Stars: ✭ 85 (-9.57%)
Mutual labels:  changelog
Aosp.changelog.to
Generates a change log between different aosp tags. Based on the wonderful work of @alsutton
Stars: ✭ 12 (-87.23%)
Mutual labels:  changelog

Changelog Generator

Build Status Scrutinizer Code Quality Code Coverage

This library will generate a changelog markdown document from a GitHub milestone. It is based off of weierophinney/changelog_generator.

Features

Installation

You can install with composer:

$ composer require jwage/changelog-generator

Or you can download the latest changelog-generator.phar file from the 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

You can also look at the 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:

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

declare(strict_types=1);

use ChangelogGenerator\ChangelogConfig;

return [
    'changelog-generator' => (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

declare(strict_types=1);

use ChangelogGenerator\ChangelogConfig;

return [
    'changelog-generator' => (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

declare(strict_types=1);

use ChangelogGenerator\ChangelogConfig;
use ChangelogGenerator\GitHubUsernamePassword;

return [
    'changelog-generator' => (new ChangelogConfig())
        // ...
        ->setGitHubCredentials(new GitHubUsernamePassword('username', 'passwordOrToken'))
    ,
];

OAuth Token

You can authenticate with an OAuth token as well using the ChangelogGenerator\GitHubOAuthToken class:

<?php

declare(strict_types=1);

use ChangelogGenerator\ChangelogConfig;
use ChangelogGenerator\GitHubOAuthToken;

return [
    'changelog-generator' => (new ChangelogConfig())
        // ...
        ->setGitHubCredentials(new GitHubOAuthToken('the oauth token'))
    ,
];
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].