#git-commit #changelog #git #version #tags #generate #tree

app git-changes

从git提交树生成变更日志

1个不稳定版本

0.1.0 2021年7月25日

#2460 in 开发工具

MPL-2.0 许可证

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