ARTICLE DETAIL

资讯详情

深耕网站建设、视觉设计与SEO优化的一线实战洞察。

Databasus 仓库 Git 提交规范:FEATURE/FIX/REFACTOR 前缀、分支命名与自动化版本发布工作流

Databasus 仓库 Git 提交规范:FEATURE/FIX/REFACTOR 前缀、分支命名与自动化版本发布工作流 数据库灾备【免费下载链接】databasusPostgreSQL backup tool with Point-In-Time-Recovery and restore verification项目地址https://gitcode.com/gh_mirrors/po/databasus点击查看免费下载本篇指南完整讲解 Databasus 开源仓库的 Git 提交与分支命名约定FEATURE/FIX/REFACTOR三种 subject 前缀、禁止!破坏性标记的原因、body 要点式写法、feature/scope分支命名规则以及这些约定如何与仓库 CI 的自动化语义化版本SemVer发布流程联动。读完你不仅能写出符合仓库规范的提交还能理解为什么在 subject 中写一个!会让发布流程直接触发 major 版本升级。该规范定义在仓库的 git-commits skill面向 Agent 的编码技能文档中且被 CI 发布工作流 的determine-version任务直接消费是仓库工程化体系的一部分。一、为什么要为提交信息立规矩Databasus 是一个 PostgreSQL 备份工具附带 Point-In-Time-Recovery 与恢复验证能力仓库由 Go 后端、TypeScript 前端、Next.js 官网、验证 Agent 等多个子工程组成开发以 Agent 与人工协作进行。在这种仓库中提交信息不仅仅是变更日志还是发布流程的输入CI 会根据上一次 Git tag 之后所有提交的 subject 前缀自动判断下一个版本应该 bump minor、patch 还是 major。正因如此SKILL.md 对提交格式做了强约束并在文件头的 metadata 中写明其适用场景Write Databasus commit messages and branch names using the repositorys release-compatible format. Use when creating, editing or reviewing a commit message or branch name in this repository.——即创建、编辑或审查本仓库的提交信息与分支名时都必须使用这套与发布流程兼容的格式。二、subject 格式三种前缀别无他选提交信息的 subject首行必须使用以下三种格式之一FEATURE (scope): Summary FIX (scope): Summary REFACTOR (scope): Summary要点解析前缀大写FEATURE、FIX、REFACTOR必须保持这种精确写法。这不是随意风格选择——CI 的正则匹配是大小写敏感的见下文第四节。scope 括号与冒号(scope):中 scope 用于标示影响面例如(postgresql)、(backups)、(frontend)。冒号后跟一句话摘要Summary。禁止使用!subject 中任何位置都不能出现!字符。原文档明确警告Never use!anywhere in the subject. The release workflow treats it as a breaking change and triggers a major version bump.切勿在 subject 的任何位置使用!。发布工作流会将其视为破坏性变更并触发 major 版本升级。如果某个变更本质上是破坏性的正确的表达方式是把它写进 OpenSpec 文档见第四节而不是在提交信息里使用!标记。三、body 写作规范短 bullet list不要长叙事提交信息的正文body部分有明确的风格约束用简短的 bullet list 列出变更点每条一行不要写长篇叙事段落不要硬性在 80 字符处换行Do not hard-wrap lines at 80 characters这与其他许多仓库的习惯相反需要注意。原文档给出的 body 示例- validate PostgreSQL targets and quote conninfo values - verify workspace access before applying saved credentials - isolate local sockets and rotate internal database credentials - add regression coverage and OpenSpec documentation可以看到每条 body 都是动词短语 变更对象的精简句式覆盖了功能变更、安全加固、测试与文档补充等多个维度信息密度高且易于浏览。四、理由与实现细节放 OpenSpec且随实现一起提交规范明确要求Keep the reasons and implementation details in OpenSpec. When a change has related OpenSpec files, commit them together with the implementation.把理由和实现细节放在 OpenSpec 中。当变更有关联的 OpenSpec 文件时将它们与实现一起提交。也就是说提交信息只承担变更摘要的角色而为什么这么改、具体怎么实现这类信息沉淀在 OpenSpec 变更文档中。仓库的 openspec/changes 目录保存了这类变更记录例如已归档的2026-09-21-add-email-two-factor-auth变更就包含openspec/changes/archive/2026-09-21-add-email-two-factor-auth/ ├── proposal.md # 变更动机、依赖、影响面、范围外事项 ├── design.md # 技术设计 ├── tasks.md # 任务分解 └── specs/ └── two-factor-authentication/ └── spec.md # 最终规格当一次提交既包含实现代码又包含上述 OpenSpec 文件时应把两者放在同一个提交里保持变更 文档的原子性。五、分支命名与 subject 前缀一一对应分支名使用与提交前缀一致的词根feature/scope fix/scope refactor/scope例如实现某个新功能时开feature/backups-retention修复缺陷时开fix/s3-upload-retry。分支名的 scope 可以与后续提交信息中的 scope 保持一致便于在合并时快速对映。六、不要随意添加 co-author 归属规范明确除非用户直接要求否则不要在提交信息中添加 co-author 归属Do not include co-author attribution unless the user requests it directly.。在 Agent 协作开发中这条规则尤为关键避免每次提交自动带上无关的署名。七、为什么!会导致 major 版本升级发布工作流源码印证SKILL.md 中!触发 major 版本升级的警告并非空穴来风它对应着 CI 发布工作流 中determine-version任务on: push到main且提交信息不含[skip-release]时运行的版本判断逻辑。该任务使用git describe --tags --abbrev0取得最近 tag 作为当前版本无 tag 时回退为v0.0.0然后遍历两次 tag 之间的全部非 merge 提交的 subject核心判断逻辑如下HAS_FEATUREfalse HAS_FIXfalse HAS_BREAKINGfalse while IFS read -r commit; do if [[ $commit ~ ^FEATURE ]]; then HAS_FEATUREtrue elif [[ $commit ~ ^FIX ]]; then HAS_FIXtrue elif [[ $commit ~ ^REFACTOR ]]; then HAS_FIXtrue # refactor 按 patch 处理 fi if [[ $commit ~ BREAKING[[:space:]]CHANGE ]] || [[ $commit ~ ! ]]; then HAS_BREAKINGtrue fi done (printf %s\n $COMMITS) if [ $HAS_BREAKING true ]; then BUMP_TYPEmajor elif [ $HAS_FEATURE true ]; then BUMP_TYPEminor elif [ $HAS_FIX true ]; then BUMP_TYPEpatch else BUMP_TYPEnone fi从这段代码可以得出几条与 SKILL.md 直接对应的硬事实!是破坏性变更触发器正则[[ $commit ~ ! ]]会在 subject 中匹配到任何!字符时把HAS_BREAKING置为 true进而把BUMP_TYPE定为major。这就是 SKILL.md 禁止在 subject 中出现!的根本原因——一个手滑的!就会让下一次发布从 patch/minor 直接变成 major。FEATURE触发 minor 升级只要两次发布之间出现任何以FEATURE开头的提交版本就 bump minornpx semver -i minor。FIX与REFACTOR触发 patch 升级FIX和REFACTOR都会置HAS_FIXtrue版本 bump patch。没有任何匹配前缀时不下发BUMP_TYPEnoneshould_releasefalseCI 不会触发镜像发布。因此提交前缀不仅影响变更日志的可读性还直接决定 Databasus 镜像的版本号走势。遵循FEATURE (scope):/FIX (scope):/REFACTOR (scope):格式等于让发布版本号自动、准确地反映每次合并的内容。八、快速参考一次合规提交的完整流程结合以上规范一次符合 Databasus 仓库约定的提交可以这样完成开分支按变更类型选择feature/scope、fix/scope或refactor/scope写 subjectFEATURE (backups): add retention policy presets前缀大写、带 scope 括号、无!写 body2~5 条精简 bullet list不写长段落、不硬换行到 80 字符同步 OpenSpec如果仓库中已有对应变更记录如 openspec/changes 下的 proposal/design/tasks/spec把相关 OpenSpec 文件与实现代码放在同一提交中署名除非用户明确要求不添加 co-author 归属提交并推送CI 会在合并到main后依据 subject 前缀自动计算下一个版本号无需手工维护版本号。如需更深入了解配套工程化约定可继续阅读仓库根目录的 AGENTS.md 与 CI 发布工作流其他 Agent 编码技能如 OpenSpec 的 propose、update、archive 流程位于 .agents/skills 目录下可与本提交规范配合使用。赞分享数据库灾备【免费下载链接】databasusPostgreSQL backup tool with Point-In-Time-Recovery and restore verification项目地址https://gitcode.com/gh_mirrors/po/databasus点击查看免费下载相关推荐Hamburgers Git工作流feature分支与Pull Request规范Hamburgers Git工作流feature分支与Pull Request规范 引言 在开源项目协作中规范的Git工作流是保证代码质量和开发效率的关键。前端UI组件Elementor 的 Git 工作流规范详解分支命名、提交信息与 PR 指南Elementor 的 Git 工作流规范详解分支命名、提交信息与 PR 指南 本文基于 Elementor 仓库中的 Git 协作规则文档 .cursor/CMS前端后端低代码nuqs 仓库发布与 Git 工作流Conventional Commits、语义化版本与自动化发布实战nuqs 仓库发布与 Git 工作流Conventional Commits、语义化版本与自动化发布实战 本指南基于仓库内 .agents/docs/git前端状态管理上一篇手语翻译辅助工具hf_mirrors/ai-gitcode/seamless-m4t-v2-large与计算机视觉的结合探索下一篇Azure Functions Host部署指南从本地开发到云端生产的完整流程创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表