alexandre-daubois / release-genius
从您的Git历史记录中生成变更日志和标签
Requires
- php: >=8.2
- symfony/clock: ^6.3|^7.0
- symfony/console: ^6.3|^7.0
- symfony/process: ^6.3|^7.0
Requires (Dev)
- friendsofphp/php-cs-fixer: ^3.49
- phpstan/phpstan: ^1.10.57
- phpunit/phpunit: ^10.5.10
- symfony/var-dumper: ^7.0.3
README
要求
- 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
选项来更改此行为。可用模式有append
、prepend
和overwrite
。
vendor/bin/release-genius minor --mode=append
管理远程仓库
此包将尽力猜测远程仓库的URL。默认情况下,它尝试查找名为origin
的远程仓库。如果失败,您可以使用--remote
选项来指定远程仓库URL。
vendor/bin/release-genius minor --remote=upstream
这将允许您生成具有正确链接到提交和版本比较的变更日志。
如果您没有使用可猜测的远程URL(例如,您托管了Gitlab的私有实例),您可以使用--remote-type
选项来指定远程仓库的类型。可用的类型有github
和gitlab
。
vendor/bin/release-genius minor --remote-type=gitlab
指定类型将有助于生成包含您的远程URL的正确URL格式。远程类型始终优先于自动远程URL猜测。