alexandre-daubois/release-genius

从您的Git历史记录中生成变更日志和标签

0.3.4 2024-03-29 15:42 UTC

This package is auto-updated.

Last update: 2024-08-29 16:32:55 UTC


README

PHPUnit

Conventional version screenshot

要求

  • PHP 8.2 或更高版本
  • Git

这就完了!

为什么使用这个包?

这个包是一个简单的工具,可以帮助您管理变更日志和版本。它使用常规提交标准来生成变更日志。这个标准在开源社区中广泛使用,并且是一个确保您的提交消息易于理解和解析的绝佳方式。

此包不同,此包采用MIT许可证。此许可证比GPL-3.0许可证更加宽松。这可能是一些项目的痛点,也是创建Release Genius的主要原因。

安装

composer require alexandre-daubois/release-genius

使用方法

TL;DR

# Initialize the package
vendor/bin/release-genius --init

# Upgrade to the next version (major, minor or patch)
# CHANGELOG.md, package.json and composer.json will be updated
vendor/bin/release-genius patch
git push && git push --tags

# Only update the changelog, composer.json and package.json
vendor/bin/release-genius patch --no-commit

可用选项

Usage:
  ./release-genius [options] [--] [<release type>]

Arguments:
  release type                   The type of release to be generated (major, minor, patch)

Options:
  -f, --path=PATH                The file to write the changelog to [default: "CHANGELOG.md"]
  -m, --mode=MODE                The writing mode to use when writing the changelog to a file, between prepend, append and overwrite [default: "prepend"]
  -i, --init                     Initialize the changelog file and create a new git tag
  -r, --remote=REMOTE            The remote to push the tag to; This is also used to generate URLs in the Changelog (use "none" if you don't use a remote) [default: "origin"]
      --remote-type=REMOTE-TYPE  The type of remote to use; This is used to generate URLs in the Changelog ("github" or "gitlab")
      --skip-vendors             Skip the update of package.json and composer.json
      --no-commit                Do not create a commit and a tag, only update the changelog and vendor files if any

初始化和升级版本

第一次使用该包时,您可能需要初始化它。当您的仓库中没有标签且不存在变更日志文件时,这是必须的。您可以通过运行以下命令来完成此操作

vendor/bin/release-genius --init

这将在您的项目根目录中创建一个名为CHANGELOG.md的新文件。它还将创建一个新标签。您将被提示输入要使用的版本号。版本号应遵循语义版本控制规范。

初始化后,您可以使用该包来管理您的变更日志和版本。该包提供了一些命令来帮助您完成此操作。假设您的当前版本是1.0.0。您可以通过运行以下命令来升级版本

# Upgrade the version to 1.0.1
vendor/bin/release-genius patch

# Upgrade the version to 1.1.0
vendor/bin/release-genius minor

# Upgrade the version to 2.0.0
vendor/bin/release-genius major

这将更新CHANGELOG.md文件并创建一个新标签。标签不会自动推送到远程仓库。这是您需要手动执行的操作,以确保您对更改和新版本满意。

供应商JSON文件

如果您的项目根目录中存在package.json文件,则版本号将更新为该文件中的版本号(如果存在)。同样,对于composer.json文件也是如此。

跳过创建提交和标签

如果您想自己创建标签并提交以额外小心,可以使用--no-commit选项。Release Genius将仅更新变更日志和供应商JSON文件。

vendor/bin/release-genius minor --no-commit

生成变更日志

变更日志是通过您的提交消息生成的。从最后一个标签到您仓库当前状态的所有提交都将用于生成它。

您可以使用--path选项自定义变更日志文件的输出路径。默认情况下,变更日志文件将创建在项目根目录中,并命名为CHANGELOG.md

vendor/bin/release-genius minor --path=docs/CHANGELOG.md

您还可以选择生成变更日志文件的方式。默认情况下,变更日志文件使用prepend模式。这意味着新内容将被添加到文件的开头。您可以使用--mode选项来更改此行为。可用模式有appendprependoverwrite

vendor/bin/release-genius minor --mode=append

管理远程仓库

此包将尽力猜测远程仓库的URL。默认情况下,它尝试查找名为origin的远程仓库。如果失败,您可以使用--remote选项来指定远程仓库URL。

vendor/bin/release-genius minor --remote=upstream

这将允许您生成具有正确链接到提交和版本比较的变更日志。

如果您没有使用可猜测的远程URL(例如,您托管了Gitlab的私有实例),您可以使用--remote-type选项来指定远程仓库的类型。可用的类型有githubgitlab

vendor/bin/release-genius minor --remote-type=gitlab

指定类型将有助于生成包含您的远程URL的正确URL格式。远程类型始终优先于自动远程URL猜测。