- 版本控制:TortoiseSVN
- 依赖管理:Node.js + npm
# 钩子文件存放路径
D:\ProgramFiles\SVNHooks\
│ generate-changelog.js
│ logger.js # 日志记录模块,默认this.debugEnable = false;
│ package.json
| svn-hooks.log # 自动生成的日志文件,用于调试
└── pre-commit.bat
# 安装依赖
cd /d D:\ProgramFiles\SVNHooks
npm install
一次配置,全局生效
- 右键项目文件夹 -> TortoiseSVN -> Settings
- 进入 Hook Scripts 设置页
- 添加 Pre-Commit 钩子:
- Hook Type: Pre-Commit Hook
- Working Copy Path: *
- Command Line:
D:\ProgramFiles\SVNHooks\pre-commit.bat
- 勾选 "Wait for the command to complete"
- 取消勾选 "Hide the script while running"
- 取消勾选 "Always execute the script"
# 项目目录结构
project-root/
├── .svn/
├── .svn-hooks/ # 这个文件夹需要在 TortoiseSVN 中配置 Unversion and add to ignore list
│ ├── tmp/ # 临时文件夹,用于存放中间文件
│ ├── changelogs/ # 自动生成的 changelog 文件夹
│ ├── README.md
│ ├── config.json
│ └── version-release copy.json
├── src/
└── version-release.json # 手动创建并维护
# 初始化命令(在项目根目录执行)
cd /d "你的项目路径"
copy ".svn-hooks\version-release copy.json" "version-release.json"
- 使用 ToroiseSVN 提交代码时,TortoiseSVN 会自动执行
.svn-hooks\post-commit.bat
脚本,生成 changelog 文件
<type>(<scope>): <subject>
[空行]
<body>
[空行]
<footer>
类型 | 说明 |
---|---|
feat | 新增功能 |
fix | Bug修复 |
docs | 文档更新 |
style | 代码格式调整(不影响运行结果) |
perf | 性能优化 |
test | 测试用例相关 |
refactor | 代码重构(既不是新功能也不是bug修复) |
chore | 构建/依赖变更 |
# 单行示例
svn commit -m "feat: 新增双因素认证功能"
# 多行示例
svn commit -m "fix: 修复金额计算错误
- 修正小数点四舍五入逻辑
- 增加货币单位校验
BREAKING CHANGE: 移除旧版支付接口"
# 带作用域的破坏性提交
svn commit -m "chore(deps)!: 升级Node.js到18.x版本"
-
正文标记法
在提交正文中包含BREAKING CHANGE:
说明:feat(core): 重构用户认证模块 BREAKING CHANGE: 移除旧版JWT认证接口
-
感叹号标记法
在类型/作用域后直接添加!
符号:feat(core)!: 移除旧版JWT认证接口
变更类型 | 版本升级 | 触发条件 |
---|---|---|
破坏性变更 | MAJOR↑ | 存在 ! 或 BREAKING CHANGE |
新增功能(feat) | MINOR↑ | 无破坏性标记 |
问题修复(fix) | PATCH↑ | 无破坏性标记 |
- 提交前请确保版本文件存在:
version-release.json
,不存在也没关系,只会有一个默认unreleased的版本
# 配置建议
{
"versions": [
{
"version": "V1.0.0",
"from": 10,
"to": 20,
"releaseDate": "2025-01-20"
},
{
"version": "V2.0.0",
"from": 21,
"to": 34,
"releaseDate": "2025-01-24"
}
]
}
- 破坏性变更必须包含
BREAKING CHANGE:
说明 - 每次提交会自动更新项目根目录的 CHANGELOG.md
- 若钩子执行失败,提交操作将被中止
- Working Copy Path的配置为
*
表示可以对整个电脑的工作副本进行钩子操作 - WARN : post-commit.bat 会从你触发提交的目录开始,一直往前找
.svn-hooks
文件夹,如果找不到,将会出错,如果找的不对,changelog将会不正确 - 如果生成的changelog不正确,请检查配置,删除
.svn-hooks
文件夹中的tmp
文件夹,重新提交一次
😊