• Stars
    star
    217
  • Rank 182,446 (Top 4 %)
  • Language
    PHP
  • License
    GNU General Publi...
  • Created almost 4 years ago
  • Updated 9 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

A PHP tool built to generate a changelog from a project's commit messages and metadata following the conventionalcommits.org and automate versioning with semver.org.

PHP Conventional Changelog

Version Requirements Conventional Commits License GitHub

If this project helped you out, please support us with a star โญ


Description

When a new release of a software project is announced, it is convenient to generate documents that let the project users know what were the changes and other relevant notes about the new project release.

This package can help to automatically generate changelog and release note files, so the developers of the project reduce the work that is necessary to finalize and check the new release of the project.

This package can generate a changelog from a project's committing history messages and metadata using composer and automate versioning with semver and conventional-commits.

It provides a command that can be run from the terminal, or using composer scripts, to generate a changelog file in markdown for the current project.

The command may take parameters that define the releases of the project that will be considered to extract the changes from the git history to generate the file. The package uses a configuration system with that permit to customize the settings you may want to have your desired changelog generated.

Look at our CHANGELOG file if you are looking for an example of a possible final result.

How to contribute

Have an idea? Found a bug? Please raise to ISSUES or PULL REQUEST. Contributions are welcome and are greatly appreciated! Every little bit helps.

๐Ÿ“˜ Requirements

๐Ÿ“– Installation

You can install it easily with composer

composer require --dev marcocesarato/php-conventional-changelog

Scripts (Optional)

For easy use the changelog generator or release faster your new version you can add to your composer.json the scripts:

Notes: you can customize it according to your needs

{
  ...
  "scripts": {
    "changelog": "conventional-changelog",
    "release": "conventional-changelog --commit",
    "release:patch": "conventional-changelog --patch --commit",
    "release:minor": "conventional-changelog --minor --commit",
    "release:major": "conventional-changelog --major --commit"
  },
  ...
}

Now you can just run composer changelog or composer release (the last one will autobump the version code and commit changes) to generate your changelog.

๐Ÿ“˜ Configuration

Notes: this procedure is optional and permit to overwriting/merging the default settings

For customize settings you just needs to create a file named .changelog on the root of your project/on the working dir or use the --config option to specify the location of your configuration file.

Notes:

  • When a setting on the configuration file is not necessary just omit it
  • The default ignored types are: build, chore, ci, docs, perf, refactor, revert, style, test
  • To allow all types just keep empty types and set empty ignoreTypes

You can have more info about reading the config documentation.

๐Ÿ’ป Usage

The changelog generator will generate a log of changes from the date of the last tag to the current date, and it will put all commit logs in the latest version just created.

Notes:

  • Some of these options listed on examples could be used together at the same time (ex. --first-release --commit)
  • Auto bump of version code using the Semantic Versioning (MAJOR.MINOR.PATCH) is enabled by default if not specified the release method.
    • MAJOR: At least one breaking change.
    • MINOR: At least one new feature.
    • PATCH: Default
  • Use these options to specify the release method: --major, --minor, --patch, --rc, --beta, --alpha.

Examples

First version

Notes: use this option only if you don't need all history changes or is the first version, else run with --history option

To generate your changelog for the first version run:

php vendor/bin/conventional-changelog --first-release

New version

To generate your changelog (without committing files)

php vendor/bin/conventional-changelog

New release (with commit and tag)

To generate your changelog with auto commit and auto versioning tagging run:

php vendor/bin/conventional-changelog --commit

or to amend at an existing commit you can run:

php vendor/bin/conventional-changelog --amend

History

To generate your changelog with the entire history of changes of all releases

Warn: this operation will overwrite the CHANGELOG.md file if it already exists

php vendor/bin/conventional-changelog --history

Date range

To generate your changelog from a specified date to another specified date

php vendor/bin/conventional-changelog --from-date="2020-12-01" --to-date="2021-01-01"

Tag range

To generate your changelog from a specified tag to another specified tag

php vendor/bin/conventional-changelog --from-tag="v1.0.2" --to-tag="1.0.4"

Specific version

To generate your changelog with a specific version code

php vendor/bin/conventional-changelog --ver="2.0.1"

Commands List

Info: You can have more info about running php vendor/bin/conventional-changelog --help

Description:
  Generate changelogs and release notes from a project's commit messagesand metadata and automate versioning with semver.org and conventionalcommits.org

Usage:
  changelog [options] [--] [<path>]

Arguments:
  path                               Specify the path directory where generate changelog

Options:
      --config=CONFIG                Specify the configuration file path
  -c, --commit                       Commit the new release once changelog is generated
  -a, --amend                        Amend commit the new release once changelog is generated
      --commit-all                   Commit all changes the new release once changelog is generated
      --first-release                Run at first release (if --ver isn't specified version code it will be 1.0.0)
      --from-date=FROM-DATE          Get commits from specified date [YYYY-MM-DD]
      --to-date=TO-DATE              Get commits last tag date (or specified on --from-date) to specified date [YYYY-MM-DD]
      --from-tag=FROM-TAG            Get commits from specified tag
      --to-tag=TO-TAG                Get commits last tag (or specified on --from-tag) to specified tag
      --major                        Major release (important changes)
      --minor                        Minor release (add functionality)
      --patch                        Patch release (bug fixes) [default]
      --rc                           Release candidate
      --beta                         Beta release
      --alpha                        Alpha release
      --ver=VER                      Specify the next release version code (semver)
      --history                      Generate the entire history of changes of all releases
      --no-verify                    Bypasses the pre-commit and commit-msg hooks
      --no-tag                       Disable release auto tagging
      --no-change-without-commits    Do not apply change if no commits
      --annotate-tag[=ANNOTATE-TAG]  Make an unsigned, annotated tag object once changelog is generated [default: false]
      --merged                       Only include commits whose tips are reachable from HEAD
  -h, --help                         Display help for the given command. When no command is given display help for the changelog command

More Repositories

1

PHP-Antimalware-Scanner

AMWScan (PHP Antimalware Scanner) is a free tool to scan php files and analyze your project to find any malicious code inside it.
PHP
557
star
2

react-native-big-list

This is a high performance list view for React Native with support for complex layouts using a similar FlatList usage to make easy the replacement. This list implementation for big list rendering on React Native works with a recycler focused on performance and memory usage and so it permits processing thousands items on the list.
JavaScript
520
star
3

react-native-input-spinner

An extensible input number spinner component for react-native highly customizable. This component enhance a text input for entering numeric values, with increase and decrease buttons.
JavaScript
386
star
4

Database-Web-API

Dynamically generate RESTful APIs from the contents of a database table. Provides JSON, XML, and HTML. Supports most popular databases
PHP
42
star
5

PHP-AIO-Security

The objective of this class is offer an automatic system of protection for developers's projects and simplify some security operations as the check of CSRF or XSS all in a simple class. Infact you could just call the main method to have better security yet without too much complicated operations.
PHP
37
star
6

dotenv-mono

This package permit to have a centralized dotenv on a monorepo. It also includes some extra features such as manipulation and saving of changes to the dotenv file, a default centralized file, and a file loader with ordering and priorities.
TypeScript
35
star
7

PHP-Light-SQL-Parser

This class can parse SQL to get query type, tables, field values, etc.. It takes an string with a SQL statements and parses it to extract its different components. Currently the class can extract the SQL query method, the names of the tables involved in the query and the field values that are passed as parameters. This parser is pretty light respect phpsqlparser or others php sql parser.
PHP
28
star
8

PHP-Malware-Collection

Collection of php malware/backdoors/shell
PHP
27
star
9

react-native-input-validator

This library validates strings and number passed on TextInput component and highlight the result (valid green, invalid red). Optionally can have a placeholder with floating labels.
JavaScript
14
star
10

PHP-Markdown-Docs

This package can convert PHPDoc comments from classes into Markdown. It can parse a class file with a given file name and extracts the documentation of its functions and variables that it may contain in PHPDoc format. The package can convert the extracted documentation into a file in Markdown format.
PHP
14
star
11

PHP-Minifier

This class can minify HTML, JavaScript and CSS to take less space. It can take a string with either HTML, JavaScript or CSS, and parses it to eliminate unnecessary text. The class returns as result a a string that is smaller than the original.
PHP
12
star
12

Shell-BotKiller

We'll post findings from an infected confluence-systems we investigated recently, to show how it looks/feel like. the most systems we took a look at were infected with mining-bots like kerberods.
Shell
4
star
13

PHP-CPDO

This package can retrieve PDO query results from cache variables. It extends the base PDO class and override some functions to handle database query execution and store the query results in variables. The class can also return query results for cached queries for previously executed queries to retrieve the results faster for repeated queries.
PHP
4
star
14

marcocesarato

2
star
15

react-native-big-list-docs

HTML
1
star