1个不稳定版本
0.1.0 | 2021年7月25日 |
---|
#2460 in 开发工具
20KB
314 行
Git变更日志
一个从git提交树生成变更日志的应用程序
https://gitlab.com/claudiomattera/git-changes
安装
可执行文件可以从发布页面下载。
如果将可执行文件 git-changes
放置在包含在 PATH
环境变量中的目录中,则会提供一个新的git子命令 changelog
。
git changelog /path/to/git/repository > changelog.txt
从源代码安装
这是一个Rust应用程序,可以使用Cargo安装。
cargo install git-changes
用法
此应用程序对git提交树有以下假设。
- 版本名称遵循 语义版本控制 格式;
- 可用的版本编码在git标签中(不匹配格式的标签将被忽略);
- 版本按顺序开发;
- 更改编码在遵循特定格式的提交中(不匹配此格式的提交将被忽略)。
应用程序查看提交树,并考虑每对后续版本之间的所有更改。然后,它创建一个Markdown格式的变更日志,列出每个版本的所有更改,并将其打印到标准输出。
git-changes 0.1.0
Claudio Giovanni Mattera <[email protected]>
Generate changelog from git commit tree
USAGE:
git-changes [FLAGS] [OPTIONS] <repo-path>
FLAGS:
--add-tag-description Add version description from tag messages
-h, --help Prints help information
-o, --only-last Only last version changes
--strip-gpg-signature Strip GPG signature from version descriptions
-V, --version Prints version information
-v, --verbose Verbosity
OPTIONS:
-c, --commit-regex <commit-regex>
Commit message regular expression [default: (.+)\s+\(issue\s+#(\d+)\)]
-r, --commit-replacement <commit-replacement> Commit message replacement text [default: ${1} (issue ${2})]
-d, --head-description <head-description> Set the current head description
-i, --include-head <include-head> Include the current head as last version
-s, --select-version <selected-versions>... Generate changelog for selected versions
ARGS:
<repo-path> Repository path
示例
考虑以下提交日志。
* e0f2b3a (HEAD -> master, tag: 0.2.0) Merge branch 'v0.2.0-devel'
|\
| * d65a363 (v0.2.0-devel) Add file d (issue #4)
| | * b808f2d (issue/4) Add file d
| |/
| * 54dde1f Add file c (issue #3)
| | * 8c0a87b (issue/3) Add file c
| |/
| * 6ba5ad1 Start version 0.2.0
|/
* 742c7b3 (tag: 0.1.0) Merge branch 'v0.1.0-devel'
|\
| * 5053c28 (v0.1.0-devel) Add other file (issue #2)
| * a26d0e0 Add file (issue #1)
| | * 0ff918f (issue/2) Add file b
| |/
| | * 63cc891 (issue/1) Add file
| | * 1289020 Other change
| | * 5c7d7e5 Some change
| |/
| * b97af0f Start version 0.1.0
|/
* cc5c841 Initial commit
此应用程序将生成以下Markdown格式的变更日志。
# Version 0.2.0 (2021-07-07)
- Add file d (issue #4)
- Add file c (issue #3)
# Version 0.1.0 (2021-07-07)
- Add other file (issue #2)
- Add file (issue #1)
选择和转换提交信息
提交信息根据通过命令行参数 --commit-regex
传入的正则表达式进行选择,并根据 --commit-replacement
传入的模式进行替换。默认值分别为 (.+)\s+\(issue\s+#(\d+)\)
和 ${1} (issue ${2})
。
为了在变更日志中包含对仓库问题的链接,可以使用类似以下的方法
${1} (issue [${2}](https://gitlab.com/claudiomattera/git-changes/issues/#{2}))`
包含当前头
可以生成当前头的变更日志,以便将其包含在即将到来的git标签中。
在下面的示例中,版本 1.0.3
被分配给当前头。
git-changes --include-head 1.0.3
在变更日志中包含标签描述
标签信息可以用作变更日志中更改列表之前的摘要。
git-changes --add-tag-description
此应用程序将生成以下Markdown格式的变更日志。
# Version 0.2.0 (2021-07-07)
This is the text in the tag message.
It can contain arbitrary text, it is not parsed as Markdown, but copied verbatim.
- Add file d (issue #4)
- Add file c (issue #3)
# Version 0.1.0 (2021-07-07)
- Add other file (issue #2)
- Add file (issue #1)
如果标签已签名,则标志 --strip-gpg-signature
将在变更日志中移除签名。
许可证
版权所有 Claudio Mattera 2021
您可以在署名的条件下自由复制、修改和分发此应用程序,具体条款请参阅 MPL 2.0 许可证。有关详细信息,请参阅 License.txt
文件。
依赖
~15–23MB
~392K SLoC