# auto-changelog **Repository Path**: quant1x/auto-changelog ## Basic Information - **Project Name**: auto-changelog - **Description**: git仓库自动输出ChangeLog - **Primary Language**: Go - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 2 - **Created**: 2023-04-23 - **Last Updated**: 2026-10-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # AutoChangeLog ## 简介 AutoChangeLog 是一个用于自动为 git 仓库生成和维护 CHANGELOG.md,并自动打 tag 的工具。支持主版本、次版本、修订版本递增。 支持多主版本分支并行:tag 按当前分支提取,各分支的 CHANGELOG 与版本号互不污染。低版本分支进入维护期(封版)后,可与最新分支各自独立发展,互不干扰。 ## 安装 使用 Go 工具链安装(需要 Go 1.27 及以上版本): ```shell go install github.com/quant1x/auto-changelog@latest ``` 如需安装指定版本,可将 `@latest` 替换为版本号,例如: ```shell go install github.com/quant1x/auto-changelog@v1.4.3 ``` ## 构建 从源码构建: ```shell go build -o autochangelog.exe ``` ## 快速开始 在 git 仓库根目录下执行(无参数时默认修订版本号 +1): - 默认修订版本号 +1(patch): ```shell autochangelog ``` 或 ```shell autochangelog --patch ``` - 次版本号 +1(minor),修订号重置为 0: ```shell autochangelog --minor ``` - 主版本号 +1(major),次版本号和修订号重置为 0: ```shell autochangelog --major ``` - 输出当前版本并退出: ```shell autochangelog --version ``` 版本号取自当前分支最近可达的 tag(通过 `go install` 安装的二进制则取自 Go 工具链嵌入的模块版本),代码不硬编码版本号,打新 tag 即生效。 - 输出第三方许可证信息并退出: ```shell autochangelog --license ``` ## 功能说明 - 遍历当前分支所有可达提交,按提交提取 tag,生成 CHANGELOG.md - tag 按当前分支隔离,多主版本分支并行互不污染 - 自动递增版本号并打新 tag;若最新提交上已有 tag 则提示并跳过 - 工作区存在未提交改动时提示退出,避免生成结果不准确 - 支持主版本、次版本、修订版本递增,默认 patch - 存在 Cargo.toml 时同步更新其版本号,并刷新 Cargo.lock - 存在 build.zig.zon 时同步更新其顶层 `.version`(`.fingerprint` 由包名派生,不随版本变化) - 存在 pom.xml 时同步更新其版本号;聚合(multi-module)项目按 `` 声明的相对路径递归级联,同步各子模块 `` 版本(嵌套聚合同样支持,不依赖 src 等固定目录) ## 第三方许可证合规 `third_party/NOTICE.txt` 收录了所有编译进二进制的第三方依赖的许可证全文与版权声明,并随二进制嵌入,可通过 `autochangelog --license` 随时输出,保障单一可执行文件自带合规的许可证信息。 依赖升级后重新生成: ```shell go run ./tools/noticegen ``` 生成器特性: - 模块清单取自实际编译进二进制的包(`go list -deps ./...`),与运行产物严格一致 - 逐模块提取许可证全文、版权声明行(LICENSE 无版权行时从源码头部兜底提取)、NOTICE 文件内容(满足 Apache-2.0 第 4(d) 条再分发要求) 合规检查(无缺失/未知许可证): ```shell go run github.com/google/go-licenses@latest check ./... \ --ignore github.com/quant1x/auto-changelog ``` ## 其他 - 许可证合规工具:`tools/noticegen`(Go 依赖,见上文「第三方许可证合规」) - vcpkg(C++ 依赖)许可证声明生成:`tools/vcpkg_notices.py`