
Nextcloud Server 贡献代码时如何按 Conventional Commits 格式提交并用 git commit -s 完成 DCO 签署【免费下载链接】server☁️ Nextcloud server, a safe home for all your data项目地址: https://gitcode.com/GitHub_Trending/se/server向 Nextcloud Server 仓库提交代码时每一个 commit 都要满足两条硬性要求提交信息遵循 Conventional Commits 格式并且带有 DCODeveloper Certificate of Origin签署。仓库的 贡献指南 要求使用 Conventional Commits 来保持项目内变更的一致性和可自动化DCO 则作为额外保障确认贡献者有权将其贡献以项目许可证授权。本文给出从配置、提交到 CI 校验的完整操作路径。Conventional Commits 的格式要求仓库要求的提交信息结构如下来自 AGENTS.mdtype(scope): short description [optional body]各部分的约束type仓库列出的常见类型有feat、fix、refactor、test、docs、chore、perf、build、ciscope应与受影响的组件或 app 对应例如files_sharing、core、encryptionshort description对本次变更的简短描述。贡献指南 给出的示例feat(files_sharing): allow sharing with contacts如果你的提交含有 AI 辅助生成的内容还需要在 commit message 中加入Assisted-bytrailer格式为Assisted-by: AGENT_NAME:MODEL_VERSION完整示例文档示例feat(files_sharing): allow sharing with contacts Assisted-by: ClaudeCode:claude-sonnet-4-6配置签名信息并用 git commit -s 签署DCO 签署就是一行 trailer追加到每个 commit message 中贡献指南 中的文档示例Signed-off-by: Random J Developer randomdeveloper.example.org这里需要替换为你的真实姓名和邮箱——文档明确要求使用真实姓名不接受化名或匿名贡献。配置好 git 的user.name和user.email后可以用git commit -s自动完成签署git config user.name 你的真实姓名 git config user.email 你的真实邮箱 git commit -s前两条命令中的值必须换成你的真实身份信息这是Signed-off-by中实际写入的内容。文档还提供了一个可选的快捷方式通过 git alias 让每次提交默认带-sgit config --global alias.ci commit -s配置后用git ci提交即可自动签署。注意这条命令带--global修改的是当前用户的全局 git 配置如果机器上还有其他仓库不想默认签署可省略--global只在仓库内配置。签署时你确认了什么签署前应先阅读 contribute/developer-certificate-of-originDCO 1.1。执行git commit -s相当于逐条声明(a) 贡献由你全部或部分原创且你有权按文件中标明的开源许可证提交(b) 贡献基于你知晓受合适开源许可证保护的前人工作且你有权在相同或允许的另一种许可证下提交(c) 贡献由他人直接提供、由该人完成了 (a)/(b)/(c) 认证、且你未做修改(d) 你理解本项目与贡献均为公开贡献记录包括你随贡献提交的全部个人信息和签名将被永久保存并可能按项目或涉及的开源许可证再分发。AI 辅助提交的边界谁可以添加 Signed-off-by如果提交过程中使用了 AI 工具仓库的 AI 政策检查流程 会检查 PR 中所有 commit message发现AI-assistant、Assisted-by或AI-Assisted-Bytrailer 时给 PR 打上 AI assisted 标签发现已知编程智能体邮箱如noreplyanthropic.com、copilotgithub.com等或智能体名称出现在Signed-off-by中时检查直接失败要求你修改受影响的 commit删除智能体的签署并改用Assisted-bytrailer。原因在 AGENTS.md 中有明确说明Signed-off-by代表 DCO 认证只能由人类贡献者作出AI 智能体不得添加。也就是说即使 AI 工具帮你生成了代码签署也必须由你本人以本人身份信息完成同时在 PR 描述中声明使用了 AI 工具。验证方式CI 会拦截哪些提交仓库内置的 CI 流程是格式合规性的最终校验你可以在 PR 上直接观察结果格式拦截block-unconventional-commits 工作流在 PR 的opened、ready_for_review、reopened、synchronize事件时运行 conventional commits 检查不符合type(scope): short description结构的 commit 会被拦截提交需要修正后重新推送。fixup 拦截fixup 工作流会阻止 fixup 和 squash 类型的 commit 进入非 draft 状态的 PR不要依赖 fixup 提交来打补丁。AI 签署拦截如上所述ai-policy 工作流在master/main分支的 PR 上失败提示移除智能体签署、改用Assisted-by。PR 模板自查项PR 模板 的 Checklist 中有 Sign-off message is added to all commits 一项要求所有 commit 都带签署若 PR 包含 AI 生成内容还需勾选 AI (if applicable) 部分。提交前核对清单推送 PR 前对照以下各条逐项确认每个 commit 的标题符合type(scope): short descriptiontype 在feat、fix、refactor、test、docs、chore、perf、build、ci之内scope 与受影响的组件一致每个 commit 都带Signed-off-by: 真实姓名 真实邮箱且姓名邮箱与你配置的user.name/user.email一致AI 辅助内容只出现在Assisted-bytrailer 中Signed-off-by里没有智能体身份信息没有fixup!或squash!前缀的 commitPR 描述中按 PR 模板 完成 Summary、Checklist并在适用时声明 AI 工具使用情况。满足以上条件后推送 PR上述工作流全部通过即为格式与签署合规。如果某个组件的问题不属于 server 仓库本仓库覆盖 Nextcloud server 核心及 files、encryption、external storage、sharing 等内置 app应到对应组件的仓库提交。【免费下载链接】server☁️ Nextcloud server, a safe home for all your data项目地址: https://gitcode.com/GitHub_Trending/se/server创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考