代碼時(shí)如何按 Conventional Commits 格式提交并用 git commit -s 完成 DCO 簽署)
Nextcloud Server 貢獻(xiàn)代碼時(shí)如何按 Conventional Commits 格式提交并用 git commit -s 完成 DCO 簽署【免費(fèi)下載鏈接】server?? Nextcloud server, a safe home for all your data項(xiàng)目地址: https://gitcode.com/GitHub_Trending/se/server向 Nextcloud Server 倉(cāng)庫(kù)提交代碼時(shí)每一個(gè) commit 都要滿足兩條硬性要求提交信息遵循 Conventional Commits 格式并且?guī)в?DCODeveloper Certificate of Origin簽署。倉(cāng)庫(kù)的 貢獻(xiàn)指南 要求使用 Conventional Commits 來(lái)保持項(xiàng)目?jī)?nèi)變更的一致性和可自動(dòng)化DCO 則作為額外保障確認(rèn)貢獻(xiàn)者有權(quán)將其貢獻(xiàn)以項(xiàng)目許可證授權(quán)。本文給出從配置、提交到 CI 校驗(yàn)的完整操作路徑。Conventional Commits 的格式要求倉(cāng)庫(kù)要求的提交信息結(jié)構(gòu)如下來(lái)自 AGENTS.mdtype(scope): short description [optional body]各部分的約束type倉(cāng)庫(kù)列出的常見(jiàn)類(lèi)型有feat、fix、refactor、test、docs、chore、perf、build、ciscope應(yīng)與受影響的組件或 app 對(duì)應(yīng)例如files_sharing、core、encryptionshort description對(duì)本次變更的簡(jiǎn)短描述。貢獻(xiàn)指南 給出的示例feat(files_sharing): allow sharing with contacts如果你的提交含有 AI 輔助生成的內(nèi)容還需要在 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追加到每個(gè) commit message 中貢獻(xiàn)指南 中的文檔示例Signed-off-by: Random J Developer randomdeveloper.example.org這里需要替換為你的真實(shí)姓名和郵箱——文檔明確要求使用真實(shí)姓名不接受化名或匿名貢獻(xiàn)。配置好 git 的user.name和user.email后可以用git commit -s自動(dòng)完成簽署git config user.name 你的真實(shí)姓名 git config user.email 你的真實(shí)郵箱 git commit -s前兩條命令中的值必須換成你的真實(shí)身份信息這是Signed-off-by中實(shí)際寫(xiě)入的內(nèi)容。文檔還提供了一個(gè)可選的快捷方式通過(guò) git alias 讓每次提交默認(rèn)帶-sgit config --global alias.ci commit -s配置后用git ci提交即可自動(dòng)簽署。注意這條命令帶--global修改的是當(dāng)前用戶的全局 git 配置如果機(jī)器上還有其他倉(cāng)庫(kù)不想默認(rèn)簽署可省略--global只在倉(cāng)庫(kù)內(nèi)配置。簽署時(shí)你確認(rèn)了什么簽署前應(yīng)先閱讀 contribute/developer-certificate-of-originDCO 1.1。執(zhí)行g(shù)it commit -s相當(dāng)于逐條聲明(a) 貢獻(xiàn)由你全部或部分原創(chuàng)且你有權(quán)按文件中標(biāo)明的開(kāi)源許可證提交(b) 貢獻(xiàn)基于你知曉受合適開(kāi)源許可證保護(hù)的前人工作且你有權(quán)在相同或允許的另一種許可證下提交(c) 貢獻(xiàn)由他人直接提供、由該人完成了 (a)/(b)/(c) 認(rèn)證、且你未做修改(d) 你理解本項(xiàng)目與貢獻(xiàn)均為公開(kāi)貢獻(xiàn)記錄包括你隨貢獻(xiàn)提交的全部個(gè)人信息和簽名將被永久保存并可能按項(xiàng)目或涉及的開(kāi)源許可證再分發(fā)。AI 輔助提交的邊界誰(shuí)可以添加 Signed-off-by如果提交過(guò)程中使用了 AI 工具倉(cāng)庫(kù)的 AI 政策檢查流程 會(huì)檢查 PR 中所有 commit message發(fā)現(xiàn)AI-assistant、Assisted-by或AI-Assisted-Bytrailer 時(shí)給 PR 打上 AI assisted 標(biāo)簽發(fā)現(xiàn)已知編程智能體郵箱如noreplyanthropic.com、copilotgithub.com等或智能體名稱(chēng)出現(xiàn)在Signed-off-by中時(shí)檢查直接失敗要求你修改受影響的 commit刪除智能體的簽署并改用Assisted-bytrailer。原因在 AGENTS.md 中有明確說(shuō)明Signed-off-by代表 DCO 認(rèn)證只能由人類(lèi)貢獻(xiàn)者作出AI 智能體不得添加。也就是說(shuō)即使 AI 工具幫你生成了代碼簽署也必須由你本人以本人身份信息完成同時(shí)在 PR 描述中聲明使用了 AI 工具。驗(yàn)證方式CI 會(huì)攔截哪些提交倉(cāng)庫(kù)內(nèi)置的 CI 流程是格式合規(guī)性的最終校驗(yàn)?zāi)憧梢栽?PR 上直接觀察結(jié)果格式攔截block-unconventional-commits 工作流在 PR 的opened、ready_for_review、reopened、synchronize事件時(shí)運(yùn)行 conventional commits 檢查不符合type(scope): short description結(jié)構(gòu)的 commit 會(huì)被攔截提交需要修正后重新推送。fixup 攔截fixup 工作流會(huì)阻止 fixup 和 squash 類(lèi)型的 commit 進(jìn)入非 draft 狀態(tài)的 PR不要依賴 fixup 提交來(lái)打補(bǔ)丁。AI 簽署攔截如上所述ai-policy 工作流在master/main分支的 PR 上失敗提示移除智能體簽署、改用Assisted-by。PR 模板自查項(xiàng)PR 模板 的 Checklist 中有 Sign-off message is added to all commits 一項(xiàng)要求所有 commit 都帶簽署若 PR 包含 AI 生成內(nèi)容還需勾選 AI (if applicable) 部分。提交前核對(duì)清單推送 PR 前對(duì)照以下各條逐項(xiàng)確認(rèn)每個(gè) commit 的標(biāo)題符合type(scope): short descriptiontype 在feat、fix、refactor、test、docs、chore、perf、build、ci之內(nèi)scope 與受影響的組件一致每個(gè) commit 都帶Signed-off-by: 真實(shí)姓名 真實(shí)郵箱且姓名郵箱與你配置的user.name/user.email一致AI 輔助內(nèi)容只出現(xiàn)在Assisted-bytrailer 中Signed-off-by里沒(méi)有智能體身份信息沒(méi)有fixup!或squash!前綴的 commitPR 描述中按 PR 模板 完成 Summary、Checklist并在適用時(shí)聲明 AI 工具使用情況。滿足以上條件后推送 PR上述工作流全部通過(guò)即為格式與簽署合規(guī)。如果某個(gè)組件的問(wèn)題不屬于 server 倉(cāng)庫(kù)本倉(cāng)庫(kù)覆蓋 Nextcloud server 核心及 files、encryption、external storage、sharing 等內(nèi)置 app應(yīng)到對(duì)應(yīng)組件的倉(cāng)庫(kù)提交。【免費(fèi)下載鏈接】server?? Nextcloud server, a safe home for all your data項(xiàng)目地址: https://gitcode.com/GitHub_Trending/se/server創(chuàng)作聲明:本文部分內(nèi)容由AI輔助生成(AIGC),僅供參考