为保证 git 提交记录能够清晰的反应提交的内容,我们制定了如下 commit 提交信息规范。此规范涵盖了社区贡献者与 Deepin 内部均需遵守的规范格式。
由于社区贡献者与 Deepin 内部员工的贡献方式有别,关于以下规范中的部分信息是否需要填写的要求也会有所差异,将会在随后的段落中另行描述。
请注意,Commit 提交规范适用于 git commit 时所填写的提交信息,
而不是在 GitHub 发起 Pull Request 时所填写的标题与描述。
以下为满足目前提交信息规范的基准格式。
类型: 标题概要
详细描述
Log: 填写面向于产品的总结性内容,用于生成更新日志
如果您是统信员工,则
Log:
一行必须存在;
如果是社区贡献者,则Log:
一行可选,不做强制要求。
关于类型详情以及选填的其它元信息等内容,请参阅下方提供的完整的格式规范描述。
我们使用类如 约定式提交 格式的提交信息格式,其中分别包含提交的标题概要,详细描述以及额外元信息三个部分,这三个部分均为必须提供的部分:
类型: 标题概要
详细描述
元信息类型: 元信息内容
标题概要一部分中需要提供的类型可参见 约定式提交 中的介绍。
相比约定式提交,我们额外对每个提交的提交信息有附带元信息的要求,元信息大概有下面几种:
Log: 填写面向于产品的总结性内容,用于生成更新日志(必填)
Bug: 内部开发人员适用,填写修复的缺陷链接
Issue: 填写对应的 GitHub Issue 信息
Task: 内部开发人员适用,填写相关任务链接
Influence: 此提交会造成的影响
社区贡献者仅需了解这些元信息字段的存在即可,参见后续关于社区贡献者的段落。
这些元信息是为了方便自动化处理和项目管理而存在的,由于自动化流水线检查过程中的检查项会利用这些元信息字段,故一些字段是必须提供的。
举例而言,一个符合提交规范的提交信息大概像是这样(这个例子即为 dtkgui@3ecea3 的提交信息):
feat: 支持无标题、窗口圆角、系统菜单
窗口圆角、系统菜单兼容旧借口,新增无标题栏的适配
Log: 支持无标题、窗口圆角、系统菜单
Task: https://pms.uniontech.com/zentao/task-view-93008.html
Influence: 所有dtk应用的标题栏、窗口圆角
上述的元信息字段描述了一个字段为必填,即 Log
。这些字段的值均为站在产品发布角度所使用的值,对于社区贡献者可能会有些生疏。若您并不了解相关的填写方式,您也不必担心。您可以将元信息部分留空,只在 Commit 信息中保留标题与描述两个部分,即下面这样:
类型: 标题概要
详细描述
尽管这样的提交可能造成持续集成显示检查失败,您可以暂时忽略关于提交信息缺失元信息的相关提示。我们的社区工作人员和其它贡献者可帮您在合并时修改提交日志,帮您补充缺失但必要的元信息。
当您向 GitHub 的 linuxdeepin 组织下的仓库发起 Pull Request 时,通常会进行针对提交信息的自动化检查。
当前,自动化检查使用 action-conventionalcommits-checker 进行,此检查将会检查 Pull Request 内所包含的所有提交 是否符合上述的 约定式提交 规范。此检查要求提交信息的标题一行必须遵循约定式提交规范,且 Commit 必须包含详细描述的段落。若 PR 所包含的任一提交不符合规范,则会导致检查失败。
在 GitHub 在线应用的修改建议也需要遵循 Commit 信息规范。请注意其默认所填充的内容是 不符合 Commit 信息规范的,需要进行修改。
在 GitHub 的 Pull Request 中,当 PR 分支所基于的提交落后于主干时,会展示更新分支的选项。此时若选择 “Update branch” (Update with merge commit) 形式更新 PR 分支,则可能导致来自主干的其它提交被引入到 PR 分支,并会同时自动创建一个新的 Commit,因而导致 Commit 检查失败。
因此,当您看到更新分支的提示时,请考虑点击更新按钮右侧的下拉箭头,并选择 “Rebase branch” (Update with rebase) 形式来更新分支,如图所示。
Log
与 Influence
)须使用中文描述。fix: 标题
而不是 fix:标题
或 fix:标题
。Log: 更新日志内容
。Log
类型的元信息必须存在,作为一般社区贡献者可暂不提供,作为有合并权限的贡献者,应在合并时 酌情考虑 将缺失的元信息予以补齐再进行合并。