sync-changelog
按以下流程执行,任何一步失败都立即停止,不做 push。
1. 前置检查(必须)
- •当前仓库必须工作区干净:
- •执行
git status --porcelain。 - •允许白名单改动:
package.json、docs/changelogs_cn.json(这两个文件可作为本次任务前置输入)。 - •若存在白名单外改动(包含已暂存/未暂存/未跟踪),立即退出并提示用户手动处理。
- •执行
- •当前仓库必须在
main:- •若不在
main,仅在工作区干净时执行git checkout main。
- •若不在
- •目标仓库固定为
../chatlab.fun。 - •目标仓库也必须满足:
- •工作区干净,否则退出。
- •位于
main,否则在干净前提下切换。
可复用脚本:scripts/preflight_main_clean.sh
当前仓库建议调用:
bash
scripts/preflight_main_clean.sh . "package.json,docs/changelogs_cn.json"
chatlab.fun 仓库仍需严格干净(不传白名单参数)。
2. 读取当前版本并校验文件
- •从
docs/changelogs_cn.json读取第一个对象作为当前版本。 - •读取版本号
version(例如0.9.6)。 - •检查
docs/changelogs_en.json是否存在:- •不存在则立即退出,不允许自动创建。
3. 生成英文 changelog(AI 翻译)
- •将当前版本中文内容转写为英文,要求:
- •不做逐字直译。
- •使用自然、简洁、适合英文母语用户的 release notes 语气。
- •保持原始结构:
version/date/summary/changes(type/items)。
- •更新
docs/changelogs_en.json:- •若已存在该版本,替换该版本对象。
- •若不存在,插入到数组首位。
- •写入后执行格式化(若项目有 Prettier,优先使用 Prettier)。
4. 在当前仓库创建发布提交
- •提交文件必须包含:
- •
docs/changelogs_cn.json - •
docs/changelogs_en.json
- •
- •commit message:
release: v<version>(示例:release: v0.9.6)。 - •仅创建 commit,不 push。
可复用脚本:scripts/commit_release_changelogs.sh
5. 同步到 chatlab.fun 并提交
- •从当前仓库复制:
- •
docs/changelogs_cn.json->../chatlab.fun/docs/public/cn/changelogs.json - •
docs/changelogs_en.json->../chatlab.fun/docs/public/en/changelogs.json
- •
- •目标路径必须存在;不存在则报错退出,不自动创建目录。
- •在
../chatlab.fun提交:- •仅提交上述两个文件。
- •commit message:
docs: changelogs update
- •仅创建 commit,不 push。
可复用脚本:scripts/sync_to_chatlab_fun.sh
6. 输出结果
输出以下信息给用户:
- •当前版本号。
- •当前仓库 release commit hash。
- •
chatlab.fun仓库 docs commit hash。 - •明确声明“未执行 push”。
参考
- •
references/english-release-style.md - •
scripts/preflight_main_clean.sh - •
scripts/commit_release_changelogs.sh - •
scripts/sync_to_chatlab_fun.sh