sphinx.addnodesdocument)}( rawsourcechildren]( translations LanguagesNode)}(hhh](h pending_xref)}(hhh]docutils.nodesTextEnglish}parenthsba attributes}(ids]classes]names]dupnames]backrefs] refdomainstdreftypedoc reftarget/process/submitting-patchesmodnameN classnameN refexplicitutagnamehhh ubh)}(hhh]hChinese (Simplified)}hh2sbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget./translations/zh_CN/process/submitting-patchesmodnameN classnameN refexplicituh1hhh ubh)}(hhh]hItalian}hhFsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget./translations/it_IT/process/submitting-patchesmodnameN classnameN refexplicituh1hhh ubh)}(hhh]hJapanese}hhZsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget./translations/ja_JP/process/submitting-patchesmodnameN classnameN refexplicituh1hhh ubh)}(hhh]hKorean}hhnsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget./translations/ko_KR/process/submitting-patchesmodnameN classnameN refexplicituh1hhh ubh)}(hhh]hPortuguese (Brazilian)}hhsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget./translations/pt_BR/process/submitting-patchesmodnameN classnameN refexplicituh1hhh ubh)}(hhh]hSpanish}hhsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget./translations/sp_SP/process/submitting-patchesmodnameN classnameN refexplicituh1hhh ubeh}(h]h ]h"]h$]h&]current_languageChinese (Traditional)uh1h hh _documenthsourceNlineNubhcomment)}(h)SPDX-License-Identifier: GPL-2.0-or-laterh]h)SPDX-License-Identifier: GPL-2.0-or-later}hhsbah}(h]h ]h"]h$]h&] xml:spacepreserveuh1hhhhhh[/var/lib/git/docbuild/linux/Documentation/translations/zh_TW/process/submitting-patches.rsthKubhwarning)}(hX1此文件的目的是爲讓中文讀者更容易閱讀和理解,而不是作爲一個分支。因此, 如果您對此文件有任何意見或改動,請先嘗試更新原始英文文件。如果要更改或 修正某處翻譯文件,請將意見或補丁發送給維護者(聯繫方式見下)。h]h paragraph)}(hX1此文件的目的是爲讓中文讀者更容易閱讀和理解,而不是作爲一個分支。因此, 如果您對此文件有任何意見或改動,請先嘗試更新原始英文文件。如果要更改或 修正某處翻譯文件,請將意見或補丁發送給維護者(聯繫方式見下)。h]hX1此文件的目的是爲讓中文讀者更容易閱讀和理解,而不是作爲一個分支。因此, 如果您對此文件有任何意見或改動,請先嘗試更新原始英文文件。如果要更改或 修正某處翻譯文件,請將意見或補丁發送給維護者(聯繫方式見下)。}(hhhhhNhNubah}(h]h ]h"]h$]h&]uh1hh5Documentation/translations/zh_TW/disclaimer-zh_TW.rsthKhhubah}(h]h ]h"]h$]h&]uh1hhhhhhhhNubhnote)}(h如果您發現本文檔與原始文件有任何不同或者有翻譯問題,請聯繫該文件的譯者, 或者發送電子郵件給胡皓文以獲取幫助:<2023002089@link.tyut.edu.cn>。h]h)}(h如果您發現本文檔與原始文件有任何不同或者有翻譯問題,請聯繫該文件的譯者, 或者發送電子郵件給胡皓文以獲取幫助:<2023002089@link.tyut.edu.cn>。h](h如果您發現本文檔與原始文件有任何不同或者有翻譯問題,請聯繫該文件的譯者, 或者發送電子郵件給胡皓文以獲取幫助:<}(hhhhhNhNubh reference)}(h2023002089@link.tyut.edu.cnh]h2023002089@link.tyut.edu.cn}(hhhhhNhNubah}(h]h ]h"]h$]h&]refuri"mailto:2023002089@link.tyut.edu.cnuh1hhhubh>。}(hhhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhK hhubah}(h]h ]h"]h$]h&]uh1hhhhhhhhNubhtarget)}(h.. _tw_submittingpatches:h]h}(h]h ]h"]h$]h&]refidtw-submittingpatchesuh1jhKhhhhhhubh field_list)}(hhh](hfield)}(hhh](h field_name)}(hOriginalh]hOriginal}(hj/hhhNhNubah}(h]h ]h"]h$]h&]uh1j-hj*hhhKubh field_body)}(h-Documentation/process/submitting-patches.rst h]h)}(h,Documentation/process/submitting-patches.rsth]h,Documentation/process/submitting-patches.rst}(hjChhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj?ubah}(h]h ]h"]h$]h&]uh1j=hj*ubeh}(h]h ]h"]h$]h&]uh1j(hhhKhj%hhubj))}(hhh](j.)}(h譯者h]h譯者}(hj`hhhNhNubah}(h]h ]h"]h$]h&]uh1j-hj]hhhKubj>)}(h- 鍾宇 TripleX Chung - 時奎亮 Alex Shi - 吳想成 Wu XiangCheng h]h bullet_list)}(hhh](h list_item)}(h(鍾宇 TripleX Chung h]h)}(hj{h](h鍾宇 TripleX Chung <}(hj}hhhNhNubh)}(hxxx.phy@gmail.comh]hxxx.phy@gmail.com}(hjhhhNhNubah}(h]h ]h"]h$]h&]refurimailto:xxx.phy@gmail.comuh1hhj}ubh>}(hj}hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhK hjyubah}(h]h ]h"]h$]h&]uh1jwhjtubjx)}(h%時奎亮 Alex Shi h]h)}(hjh](h時奎亮 Alex Shi <}(hjhhhNhNubh)}(halexs@kernel.orgh]halexs@kernel.org}(hjhhhNhNubah}(h]h ]h"]h$]h&]refurimailto:alexs@kernel.orguh1hhjubh>}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhK hjubah}(h]h ]h"]h$]h&]uh1jwhjtubjx)}(h*吳想成 Wu XiangCheng h]h)}(h)吳想成 Wu XiangCheng h](h吳想成 Wu XiangCheng <}(hjhhhNhNubh)}(hbobwxc@email.cnh]hbobwxc@email.cn}(hjhhhNhNubah}(h]h ]h"]h$]h&]refurimailto:bobwxc@email.cnuh1hhjubh>}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhK hjubah}(h]h ]h"]h$]h&]uh1jwhjtubeh}(h]h ]h"]h$]h&]bullet-uh1jrhhhK hjnubah}(h]h ]h"]h$]h&]uh1j=hj]ubeh}(h]h ]h"]h$]h&]uh1j(hhhK hj%hhubj))}(hhh](j.)}(h校譯h]h校譯}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j-hjhhhKubj>)}(h- 李陽 Li Yang - 王聰 Wang Cong - 胡皓文 Hu Haowen <2023002089@link.tyut.edu.cn> h]js)}(hhh](jx)}(h#李陽 Li Yang h]h)}(hj)h](h李陽 Li Yang <}(hj+hhhNhNubh)}(hleoyang.li@nxp.comh]hleoyang.li@nxp.com}(hj2hhhNhNubah}(h]h ]h"]h$]h&]refurimailto:leoyang.li@nxp.comuh1hhj+ubh>}(hj+hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKhj'ubah}(h]h ]h"]h$]h&]uh1jwhj$ubjx)}(h+王聰 Wang Cong h]h)}(hjTh](h王聰 Wang Cong <}(hjVhhhNhNubh)}(hxiyou.wangcong@gmail.comh]hxiyou.wangcong@gmail.com}(hj]hhhNhNubah}(h]h ]h"]h$]h&]refurimailto:xiyou.wangcong@gmail.comuh1hhjVubh>}(hjVhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKhjRubah}(h]h ]h"]h$]h&]uh1jwhj$ubjx)}(h3胡皓文 Hu Haowen <2023002089@link.tyut.edu.cn> h]h)}(h1胡皓文 Hu Haowen <2023002089@link.tyut.edu.cn>h](h胡皓文 Hu Haowen <}(hjhhhNhNubh)}(h2023002089@link.tyut.edu.cnh]h2023002089@link.tyut.edu.cn}(hjhhhNhNubah}(h]h ]h"]h$]h&]refuri"mailto:2023002089@link.tyut.edu.cnuh1hhjubh>}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKhj}ubah}(h]h ]h"]h$]h&]uh1jwhj$ubeh}(h]h ]h"]h$]h&]jjuh1jrhhhKhj ubah}(h]h ]h"]h$]h&]uh1j=hjubeh}(h]h ]h"]h$]h&]uh1j(hhhKhj%hhubeh}(h]j"ah ]h"]tw_submittingpatchesah$]h&]uh1j#hhhhhhhKexpect_referenced_by_name}jjsexpect_referenced_by_id}j"jsubhsection)}(hhh](htitle)}(h0提交補丁:如何讓你的改動進入內核h]h0提交補丁:如何讓你的改動進入內核}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjhhhhhKubh)}(h對於想要將改動提交到 Linux 內核的個人或者公司來說,如果不熟悉“規矩”, 提交的流程會讓人畏懼。本文檔包含了一系列建議,可以大大提高你 的改動被接受的機會.h]h對於想要將改動提交到 Linux 內核的個人或者公司來說,如果不熟悉“規矩”, 提交的流程會讓人畏懼。本文檔包含了一系列建議,可以大大提高你 的改動被接受的機會.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjhhubh)}(hX本文檔以較爲簡潔的行文給出了大量建議。關於內核開發流程如何進行的詳細信息, 參見: Documentation/translations/zh_CN/process/development-process.rst 。 Documentation/translations/zh_CN/process/submit-checklist.rst 給出了一系列 提交補丁之前要檢查的事項。設備樹相關的補丁,請參閱 Documentation/devicetree/bindings/submitting-patches.rst 。h]hX本文檔以較爲簡潔的行文給出了大量建議。關於內核開發流程如何進行的詳細信息, 參見: Documentation/translations/zh_CN/process/development-process.rst 。 Documentation/translations/zh_CN/process/submit-checklist.rst 給出了一系列 提交補丁之前要檢查的事項。設備樹相關的補丁,請參閱 Documentation/devicetree/bindings/submitting-patches.rst 。}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjhhubh)}(h本文檔假設您正在使用 ``git`` 準備你的補丁。如果您不熟悉 ``git`` ,最好學習 如何使用它,這將使您作爲內核開發人員的生活變得更加輕鬆。h](h本文檔假設您正在使用 }(hjhhhNhNubhliteral)}(h``git``h]hgit}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh) 準備你的補丁。如果您不熟悉 }(hjhhhNhNubj)}(h``git``h]hgit}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubhe ,最好學習 如何使用它,這將使您作爲內核開發人員的生活變得更加輕鬆。}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhK!hjhhubh)}(h部分子系統和維護人員的樹有一些關於其工作流程和要求的額外信息,請參閱 Documentation/process/maintainer-handbooks.rst 。h]h部分子系統和維護人員的樹有一些關於其工作流程和要求的額外信息,請參閱 Documentation/process/maintainer-handbooks.rst 。}(hj+hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK$hjhhubj)}(hhh](j)}(h獲取當前源碼樹h]h獲取當前源碼樹}(hj<hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj9hhhhhK(ubh)}(h如果您手頭沒有當前內核源代碼的存儲庫,請使用 ``git`` 獲取一份。您需要先獲取 主線存儲庫,它可以通過以下命令拉取::h](hC如果您手頭沒有當前內核源代碼的存儲庫,請使用 }(hjJhhhNhNubj)}(h``git``h]hgit}(hjRhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjJubhW 獲取一份。您需要先獲取 主線存儲庫,它可以通過以下命令拉取:}(hjJhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhK*hj9hhubh literal_block)}(hJgit clone git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.gith]hJgit clone git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git}hjlsbah}(h]h ]h"]h$]h&]hhuh1jjhhhK-hj9hhubh)}(hX/但是,請注意,您可能不想直接針對主線樹進行開發。大多數子系統維護人員運 行自己的樹,並希望看到針對這些樹準備的補丁。請參見MAINTAINERS文件中子系 統的 **T:** 項以查找該樹,或者直接詢問維護者該樹是否未在其中列出。h](h但是,請注意,您可能不想直接針對主線樹進行開發。大多數子系統維護人員運 行自己的樹,並希望看到針對這些樹準備的補丁。請參見MAINTAINERS文件中子系 統的 }(hjzhhhNhNubhstrong)}(h**T:**h]hT:}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjzubhR 項以查找該樹,或者直接詢問維護者該樹是否未在其中列出。}(hjzhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhK/hj9hhubj)}(h.. _tw_describe_changes:h]h}(h]h ]h"]h$]h&]j!tw-describe-changesuh1jhKBhj9hhhhubeh}(h]id2ah ]h"]獲取當前源碼樹ah$]h&]uh1jhjhhhhhK(ubj)}(hhh](j)}(h描述你的改動h]h描述你的改動}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjhhhhhK6ubh)}(h描述你的問題。無論您的補丁是一行錯誤修復還是5000行新功能,都必須有一個潛在 的問題激勵您完成這項工作。說服審閱者相信有一個問題值得解決,讓他們讀完第一段 後就能明白這一點。h]h描述你的問題。無論您的補丁是一行錯誤修復還是5000行新功能,都必須有一個潛在 的問題激勵您完成這項工作。說服審閱者相信有一個問題值得解決,讓他們讀完第一段 後就能明白這一點。}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK8hjhhubh)}(hX(描述用戶可見的影響。直接崩潰和鎖定是相當有說服力的,但並不是所有的錯誤都那麼 明目張膽。即使在代碼審閱期間發現了這個問題,也要描述一下您認爲它可能對用戶產 生的影響。請記住,大多數Linux安裝運行的內核來自二級穩定樹或特定於供應商/產品 的樹,只從上游精選特定的補丁,因此請包含任何可以幫助您將更改定位到下游的內容: 觸發的場景、DMESG的摘錄、崩潰描述、性能迴歸、延遲尖峯、鎖定等。h]hX(描述用戶可見的影響。直接崩潰和鎖定是相當有說服力的,但並不是所有的錯誤都那麼 明目張膽。即使在代碼審閱期間發現了這個問題,也要描述一下您認爲它可能對用戶產 生的影響。請記住,大多數Linux安裝運行的內核來自二級穩定樹或特定於供應商/產品 的樹,只從上游精選特定的補丁,因此請包含任何可以幫助您將更改定位到下游的內容: 觸發的場景、DMESG的摘錄、崩潰描述、性能迴歸、延遲尖峯、鎖定等。}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKh]h@Signed-off-by: Random J Developer }hj0 sbah}(h]h ]h"]h$]h&]hhuh1jjhhhMEhj hhubh)}(h使用你的真名(抱歉,不能使用假名或者匿名。)如果使用 ``git commit -s`` 的話 將會自動完成。撤銷也應當包含“Signed-off-by”, ``git revert -s`` 會幫你搞定。h](hO使用你的真名(抱歉,不能使用假名或者匿名。)如果使用 }(hj> hhhNhNubj)}(h``git commit -s``h]h git commit -s}(hjF hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj> ubhI 的話 將會自動完成。撤銷也應當包含“Signed-off-by”, }(hj> hhhNhNubj)}(h``git revert -s``h]h git revert -s}(hjX hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj> ubh 會幫你搞定。}(hj> hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhMGhj hhubh)}(h有些人會在最後加上額外的標籤。現在這些東西會被忽略,但是你可以這樣做,來標記 公司內部的過程,或者只是指出關於簽署的一些特殊細節。h]h有些人會在最後加上額外的標籤。現在這些東西會被忽略,但是你可以這樣做,來標記 公司內部的過程,或者只是指出關於簽署的一些特殊細節。}(hjp hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMJhj hhubh)}(hX作者簽署之後的任何其他簽署(Signed-off-by:'s)均來自處理和傳遞補丁的人員,但 未參與其開發。簽署鏈應當反映補丁傳播到維護者並最終傳播到Linus所經過的 **真實** 路徑,首個簽署指明單個作者的主要作者身份。h](h作者簽署之後的任何其他簽署(Signed-off-by:’s)均來自處理和傳遞補丁的人員,但 未參與其開發。簽署鏈應當反映補丁傳播到維護者並最終傳播到Linus所經過的 }(hj~ hhhNhNubj)}(h **真實**h]h真實}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj~ ubh@ 路徑,首個簽署指明單個作者的主要作者身份。}(hj~ hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhMMhj hhubeh}(h]id10ah ]h"]開發者來源認證 1.1ah$]h&]uh1jhj[ hhhhhM0ubeh}(h]id9ah ]h"]-簽署你的作品——開發者來源認證ah$]h&]uh1jhjhhhhhM'ubj)}(hhh](j)}(h1何時使用Acked-by:,Cc:,和Co-developed-by:h]h1何時使用Acked-by:,Cc:,和Co-developed-by:}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj hhhhhMRubh)}(hjSigned-off-by: 標籤表示簽名者參與了補丁的開發,或者他/她在補丁的傳遞路徑中。h]hjSigned-off-by: 標籤表示簽名者參與了補丁的開發,或者他/她在補丁的傳遞路徑中。}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMThj hhubh)}(h如果一個人沒有直接參與補丁的準備或處理,但希望表示並記錄他們對補丁的批准/贊成, 那麼他們可以要求在補丁的變更日誌中添加一個Acked-by:。h]h如果一個人沒有直接參與補丁的準備或處理,但希望表示並記錄他們對補丁的批准/贊成, 那麼他們可以要求在補丁的變更日誌中添加一個Acked-by:。}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMVhj hhubh)}(hpAcked-by: 通常由受影響代碼的維護者使用,當該維護者既沒有貢獻也沒有轉發補丁時。h]hpAcked-by: 通常由受影響代碼的維護者使用,當該維護者既沒有貢獻也沒有轉發補丁時。}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMYhj hhubh)}(hX Acked-by: 不像簽署那樣正式。這是一個記錄,確認人至少審閱了補丁,並表示接受。 因此,補丁合併有時會手動將Acker的“Yep,looks good to me”轉換爲 Acked-By:(但 請注意,通常最好要求一個明確的Ack)。h]hX Acked-by: 不像簽署那樣正式。這是一個記錄,確認人至少審閱了補丁,並表示接受。 因此,補丁合併有時會手動將Acker的“Yep,looks good to me”轉換爲 Acked-By:(但 請注意,通常最好要求一個明確的Ack)。}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhM[hj hhubh)}(hX?Acked-by:不一定表示對整個補丁的確認。例如,如果一個補丁影響多個子系統,並且 有一個來自某個子系統維護者的Acked-By:,那麼這通常表示只確認影響維護者代碼的部 分。這裏應該仔細判斷。如有疑問,應參考郵件列表存檔中的原始討論。h]hX?Acked-by:不一定表示對整個補丁的確認。例如,如果一個補丁影響多個子系統,並且 有一個來自某個子系統維護者的Acked-By:,那麼這通常表示只確認影響維護者代碼的部 分。這裏應該仔細判斷。如有疑問,應參考郵件列表存檔中的原始討論。}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhM_hj hhubh)}(hX?如果某人本應有機會對補丁進行評論,但沒有提供此類評論,您可以選擇在補丁中添加 ``Cc:`` 這是唯一可以在沒有被該人明確同意的情況下添加的標籤——但它應該表明 這個人是在補丁上抄送的。此標籤記錄了討論中包含的潛在利益相關方。h](hs如果某人本應有機會對補丁進行評論,但沒有提供此類評論,您可以選擇在補丁中添加 }(hj hhhNhNubj)}(h``Cc:``h]hCc:}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubh 這是唯一可以在沒有被該人明確同意的情況下添加的標籤——但它應該表明 這個人是在補丁上抄送的。此標籤記錄了討論中包含的潛在利益相關方。}(hj hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhMchj hhubh)}(hX%Co-developed-by: 聲明補丁是由多個開發人員共同創建的;當幾個人在一個補丁上工 作時,它用於給出共同作者(除了From:所給出的作者之外)。因爲Co-developed-by: 表示作者身份,所以每個Co-developed-by:必須緊跟在相關合作作者的簽署之後。標準 簽署程序要求Signed-off-by:標籤的順序應儘可能反映補丁的時間歷史,無論作者是通 過From:還是Co-developed-by:表明。值得注意的是,最後一個Signed-off-by:必須是 提交補丁的開發人員。h]hX%Co-developed-by: 聲明補丁是由多個開發人員共同創建的;當幾個人在一個補丁上工 作時,它用於給出共同作者(除了From:所給出的作者之外)。因爲Co-developed-by: 表示作者身份,所以每個Co-developed-by:必須緊跟在相關合作作者的簽署之後。標準 簽署程序要求Signed-off-by:標籤的順序應儘可能反映補丁的時間歷史,無論作者是通 過From:還是Co-developed-by:表明。值得注意的是,最後一個Signed-off-by:必須是 提交補丁的開發人員。}(hj% hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMghj hhubh)}(hl注意,如果From:作者也是電子郵件標題的From:行中列出的人,則From:標籤是可選的。h]hl注意,如果From:作者也是電子郵件標題的From:行中列出的人,則From:標籤是可選的。}(hj3 hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMnhj hhubh)}(h%被From:作者提交的補丁示例::h]h$被From:作者提交的補丁示例:}(hjA hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMphj hhubjk)}(hX9 Co-developed-by: First Co-Author Signed-off-by: First Co-Author Co-developed-by: Second Co-Author Signed-off-by: Second Co-Author Signed-off-by: From Author h]hX9 Co-developed-by: First Co-Author Signed-off-by: First Co-Author Co-developed-by: Second Co-Author Signed-off-by: Second Co-Author Signed-off-by: From Author }hjO sbah}(h]h ]h"]h$]h&]hhuh1jjhhhMrhj hhubh)}(h)被合作開發者提交的補丁示例::h]h(被合作開發者提交的補丁示例:}(hj] hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMzhj hhubjk)}(hXlFrom: From Author Co-developed-by: Random Co-Author Signed-off-by: Random Co-Author Signed-off-by: From Author Co-developed-by: Submitting Co-Author Signed-off-by: Submitting Co-Author h]hXlFrom: From Author Co-developed-by: Random Co-Author Signed-off-by: Random Co-Author Signed-off-by: From Author Co-developed-by: Submitting Co-Author Signed-off-by: Submitting Co-Author }hjk sbah}(h]h ]h"]h$]h&]hhuh1jjhhhM|hj hhubeh}(h]acked-by-cc-co-developed-byah ]h"]1何時使用acked-by:,cc:,和co-developed-by:ah$]h&]uh1jhjhhhhhMRubj)}(hhh](j)}(hG使用Reported-by:、Tested-by:、Reviewed-by:、Suggested-by:和Fixes:h]hG使用Reported-by:、Tested-by:、Reviewed-by:、Suggested-by:和Fixes:}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj hhhhhMubh)}(hX.Reported-by: 給那些發現錯誤並報告錯誤的人致謝,它希望激勵他們在將來再次幫助 我們。請注意,如果bug是以私有方式報告的,那麼在使用Reported-by標籤之前,請 先請求許可。此標籤是爲Bug設計的;請不要將其用於感謝功能請求。h]hX.Reported-by: 給那些發現錯誤並報告錯誤的人致謝,它希望激勵他們在將來再次幫助 我們。請注意,如果bug是以私有方式報告的,那麼在使用Reported-by標籤之前,請 先請求許可。此標籤是爲Bug設計的;請不要將其用於感謝功能請求。}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhj hhubh)}(hTested-by: 標籤表示補丁已由指定的人(在某些環境中)成功測試。這個標籤通知 維護人員已經執行了一些測試,爲將來的補丁提供了一種定位測試人員的方法,並彰顯測試人員的功勞。h]hTested-by: 標籤表示補丁已由指定的人(在某些環境中)成功測試。這個標籤通知 維護人員已經執行了一些測試,爲將來的補丁提供了一種定位測試人員的方法,並彰顯測試人員的功勞。}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhj hhubh)}(hhReviewed-by:根據審閱者的監督聲明,表明該補丁已被審閱並被認爲是可接受的:h]hhReviewed-by:根據審閱者的監督聲明,表明該補丁已被審閱並被認爲是可接受的:}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhj hhubj)}(hhh](j)}(h審閱者的監督聲明h]h審閱者的監督聲明}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj hhhhhMubh)}(h3通過提供我的Reviewed-by:標籤,我聲明:h]h3通過提供我的Reviewed-by:標籤,我聲明:}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhj hhubj)}(hX(a) 我已經對這個補丁進行了一次技術審閱,以評估它是否適合被包含到 主線內核中。 (b) 與補丁相關的任何問題、顧慮或問題都已反饋給提交者。我對提交者對 我的評論的回應感到滿意。 (c) 雖然這一提交可能仍可被改進,但我相信,此時,(1)對內核 進行了有價值的修改,(2)沒有包含爭論中涉及的已知問題。 (d) 雖然我已經審閱了補丁並認爲它是健全的,但我不會(除非另有明確 說明)作出任何保證或擔保它會在任何給定情況下實現其規定的目的 或正常運行。 h]j )}(hhh](jx)}(hn我已經對這個補丁進行了一次技術審閱,以評估它是否適合被包含到 主線內核中。 h]h)}(hm我已經對這個補丁進行了一次技術審閱,以評估它是否適合被包含到 主線內核中。h]hm我已經對這個補丁進行了一次技術審閱,以評估它是否適合被包含到 主線內核中。}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhj ubah}(h]h ]h"]h$]h&]uh1jwhj ubjx)}(h與補丁相關的任何問題、顧慮或問題都已反饋給提交者。我對提交者對 我的評論的回應感到滿意。 h]h)}(h與補丁相關的任何問題、顧慮或問題都已反饋給提交者。我對提交者對 我的評論的回應感到滿意。h]h與補丁相關的任何問題、顧慮或問題都已反饋給提交者。我對提交者對 我的評論的回應感到滿意。}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhj ubah}(h]h ]h"]h$]h&]uh1jwhj ubjx)}(h雖然這一提交可能仍可被改進,但我相信,此時,(1)對內核 進行了有價值的修改,(2)沒有包含爭論中涉及的已知問題。 h]h)}(h雖然這一提交可能仍可被改進,但我相信,此時,(1)對內核 進行了有價值的修改,(2)沒有包含爭論中涉及的已知問題。h]h雖然這一提交可能仍可被改進,但我相信,此時,(1)對內核 進行了有價值的修改,(2)沒有包含爭論中涉及的已知問題。}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhj ubah}(h]h ]h"]h$]h&]uh1jwhj ubjx)}(h雖然我已經審閱了補丁並認爲它是健全的,但我不會(除非另有明確 說明)作出任何保證或擔保它會在任何給定情況下實現其規定的目的 或正常運行。 h]h)}(h雖然我已經審閱了補丁並認爲它是健全的,但我不會(除非另有明確 說明)作出任何保證或擔保它會在任何給定情況下實現其規定的目的 或正常運行。h]h雖然我已經審閱了補丁並認爲它是健全的,但我不會(除非另有明確 說明)作出任何保證或擔保它會在任何給定情況下實現其規定的目的 或正常運行。}(hj. hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhj* ubah}(h]h ]h"]h$]h&]uh1jwhj ubeh}(h]h ]h"]h$]h&]j j j j j j uh1j hj ubah}(h]h ]h"]h$]h&]uh1jhhhMhj hhubh)}(hXReviewed-by是一種觀點聲明,即補丁是對內核的適當修改,沒有任何遺留的嚴重技術 問題。任何感興趣的審閱者(完成工作的人)都可以爲一個補丁提供一個Reviewed-by 標籤。此標籤用於向審閱者提供致謝,並通知維護者補丁的審閱進度。 當Reviewed-by:標籤由已知了解主題區域並執行徹底檢查的審閱者提供時,通常會增加 補丁進入內核的可能性。h]hXReviewed-by是一種觀點聲明,即補丁是對內核的適當修改,沒有任何遺留的嚴重技術 問題。任何感興趣的審閱者(完成工作的人)都可以爲一個補丁提供一個Reviewed-by 標籤。此標籤用於向審閱者提供致謝,並通知維護者補丁的審閱進度。 當Reviewed-by:標籤由已知了解主題區域並執行徹底檢查的審閱者提供時,通常會增加 補丁進入內核的可能性。}(hjN hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhj hhubh)}(hX一旦從測試人員或審閱者的“Tested-by”和“Reviewed-by”標籤出現在郵件列表中, 作者應在發送下一個版本時將其添加到適用的補丁中。但是,如果補丁在以下版本中發 生了實質性更改,這些標籤可能不再適用,因此應該刪除。通常,在補丁更改日誌中 (在 ``---`` 分隔符之後)應該提到刪除某人的測試者或審閱者標籤。h](hXS一旦從測試人員或審閱者的“Tested-by”和“Reviewed-by”標籤出現在郵件列表中, 作者應在發送下一個版本時將其添加到適用的補丁中。但是,如果補丁在以下版本中發 生了實質性更改,這些標籤可能不再適用,因此應該刪除。通常,在補丁更改日誌中 (在 }(hj\ hhhNhNubj)}(h``---``h]h---}(hjd hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj\ ubhL 分隔符之後)應該提到刪除某人的測試者或審閱者標籤。}(hj\ hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhMhj hhubh)}(hXXSuggested-by: 表示補丁的想法是由指定的人提出的,並確保將此想法歸功於指定的 人。請注意,未經許可,不得添加此標籤,特別是如果該想法未在公共論壇上發佈。 也就是說,如果我們勤快地致謝創意提供者,他們將受到鼓舞,很有希望在未來再次 幫助我們。h]hXXSuggested-by: 表示補丁的想法是由指定的人提出的,並確保將此想法歸功於指定的 人。請注意,未經許可,不得添加此標籤,特別是如果該想法未在公共論壇上發佈。 也就是說,如果我們勤快地致謝創意提供者,他們將受到鼓舞,很有希望在未來再次 幫助我們。}(hj| hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhj hhubh)}(hXHFixes: 指示補丁修復了之前提交的一個問題。它可以便於確定錯誤的來源,這有助於 檢查錯誤修復。這個標籤還幫助穩定內核團隊確定應該接收修復的穩定內核版本。這是 指示補丁修復的錯誤的首選方法。請參閱 :ref:`zh_describe_changes` 瞭解更多信息。h](hXFixes: 指示補丁修復了之前提交的一個問題。它可以便於確定錯誤的來源,這有助於 檢查錯誤修復。這個標籤還幫助穩定內核團隊確定應該接收修復的穩定內核版本。這是 指示補丁修復的錯誤的首選方法。請參閱 }(hj hhhNhNubh)}(h:ref:`zh_describe_changes`h]j)}(hj h]hzh_describe_changes}(hj hhhNhNubah}(h]h ](j"stdstd-refeh"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]refdocj/ refdomainj reftyperef refexplicitrefwarnj5zh_describe_changesuh1hhhhMhj ubh 瞭解更多信息。}(hj hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhMhj hhubh)}(h附加Fixes:標籤不會改變穩定內核規則流程,也不改變所有穩定版補丁抄送 stable@vger.kernel.org的要求。有關更多信息,請閱讀 Documentation/translations/zh_CN/process/stable-kernel-rules.rst 。h]h)}(h附加Fixes:標籤不會改變穩定內核規則流程,也不改變所有穩定版補丁抄送 stable@vger.kernel.org的要求。有關更多信息,請閱讀 Documentation/translations/zh_CN/process/stable-kernel-rules.rst 。h](ha附加Fixes:標籤不會改變穩定內核規則流程,也不改變所有穩定版補丁抄送 }(hj hhhNhNubh)}(hstable@vger.kernelh]hstable@vger.kernel}(hj hhhNhNubah}(h]h ]h"]h$]h&]refurimailto:stable@vger.kerneluh1hhj ubhs.org的要求。有關更多信息,請閱讀 Documentation/translations/zh_CN/process/stable-kernel-rules.rst 。}(hj hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhMhj ubah}(h]h ]h"]h$]h&]uh1hhj hhhhhNubj)}(h".. _tw_the_canonical_patch_format:h]h}(h]h ]h"]h$]h&]j!tw-the-canonical-patch-formatuh1jhMhj hhhhubeh}(h]id11ah ]h"]審閱者的監督聲明ah$]h&]uh1jhj hhhhhMubeh}(h]4reported-by-tested-by-reviewed-by-suggested-by-fixesah ]h"]G使用reported-by:、tested-by:、reviewed-by:、suggested-by:和fixes:ah$]h&]uh1jhjhhhhhMubj)}(hhh](j)}(h標準補丁格式h]h標準補丁格式}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjhhhhhMubh)}(hX 本節描述如何格式化補丁本身。請注意,如果您的補丁存儲在 ``Git`` 存儲庫中,則 可以使用 ``git format-patch`` 進行正確的補丁格式化。但是,這些工具無法創建 必要的文本,因此請務必閱讀下面的說明。h](hR本節描述如何格式化補丁本身。請注意,如果您的補丁存儲在 }(hjhhhNhNubj)}(h``Git``h]hGit}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh! 存儲庫中,則 可以使用 }(hjhhhNhNubj)}(h``git format-patch``h]hgit format-patch}(hj.hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh} 進行正確的補丁格式化。但是,這些工具無法創建 必要的文本,因此請務必閱讀下面的說明。}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhMhjhhubh)}(h標準的補丁標題行是::h]h標準的補丁標題行是:}(hjFhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhjhhubjk)}(h2Subject: [PATCH 001/123] 子系統:一句話概述h]h2Subject: [PATCH 001/123] 子系統:一句話概述}hjTsbah}(h]h ]h"]h$]h&]hhuh1jjhhhMhjhhubh)}(h*標準補丁的信體包含如下部分:h]h*標準補丁的信體包含如下部分:}(hjbhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhjhhubj)}(hX- 一個 ``from`` 行指出補丁作者。後跟空行(僅當發送補丁的人不是作者時才需要)。 - 說明文字,每行最長75列,這將被複制到永久變更日誌來描述這個補丁。 - 一個空行 - 上述的 ``Signed-off-by:`` 行,也將出現在更改日誌中。 - 只包含 ``---`` 的標記線。 - 任何其他不適合放在變更日誌的註釋。 - 實際補丁( ``diff`` 輸出)。 h]js)}(hhh](jx)}(hn一個 ``from`` 行指出補丁作者。後跟空行(僅當發送補丁的人不是作者時才需要)。 h]h)}(hm一個 ``from`` 行指出補丁作者。後跟空行(僅當發送補丁的人不是作者時才需要)。h](h一個 }(hj{hhhNhNubj)}(h``from``h]hfrom}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj{ubh^ 行指出補丁作者。後跟空行(僅當發送補丁的人不是作者時才需要)。}(hj{hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhMhjwubah}(h]h ]h"]h$]h&]uh1jwhjtubjx)}(h`說明文字,每行最長75列,這將被複制到永久變更日誌來描述這個補丁。 h]h)}(h_說明文字,每行最長75列,這將被複制到永久變更日誌來描述這個補丁。h]h_說明文字,每行最長75列,這將被複制到永久變更日誌來描述這個補丁。}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhjubah}(h]h ]h"]h$]h&]uh1jwhjtubjx)}(h 一個空行 h]h)}(h 一個空行h]h 一個空行}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhjubah}(h]h ]h"]h$]h&]uh1jwhjtubjx)}(hE上述的 ``Signed-off-by:`` 行,也將出現在更改日誌中。 h]h)}(hD上述的 ``Signed-off-by:`` 行,也將出現在更改日誌中。h](h 上述的 }(hjhhhNhNubj)}(h``Signed-off-by:``h]hSigned-off-by:}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh( 行,也將出現在更改日誌中。}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhMhjubah}(h]h ]h"]h$]h&]uh1jwhjtubjx)}(h"只包含 ``---`` 的標記線。 h]h)}(h!只包含 ``---`` 的標記線。h](h 只包含 }(hjhhhNhNubj)}(h``---``h]h---}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh 的標記線。}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhMhjubah}(h]h ]h"]h$]h&]uh1jwhjtubjx)}(h4任何其他不適合放在變更日誌的註釋。 h]h)}(h3任何其他不適合放在變更日誌的註釋。h]h3任何其他不適合放在變更日誌的註釋。}(hj)hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhj%ubah}(h]h ]h"]h$]h&]uh1jwhjtubjx)}(h&實際補丁( ``diff`` 輸出)。 h]h)}(h%實際補丁( ``diff`` 輸出)。h](h實際補丁( }(hjAhhhNhNubj)}(h``diff``h]hdiff}(hjIhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjAubh 輸出)。}(hjAhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhMhj=ubah}(h]h ]h"]h$]h&]uh1jwhjtubeh}(h]h ]h"]h$]h&]jjuh1jrhhhMhjpubah}(h]h ]h"]h$]h&]uh1jhhhMhjhhubh)}(h標題行的格式,使得對標題行按字母序排序非常的容易——很多郵件客戶端都 可以支持——因爲序列號是用零填充的,所以按數字排序和按字母排序是一樣的。h]h標題行的格式,使得對標題行按字母序排序非常的容易——很多郵件客戶端都 可以支持——因爲序列號是用零填充的,所以按數字排序和按字母排序是一樣的。}(hjshhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhjhhubh)}(hN郵件標題中的“子系統”標識哪個內核子系統將被打補丁。h]hN郵件標題中的“子系統”標識哪個內核子系統將被打補丁。}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhjhhubh)}(hX郵件標題中的“一句話概述”扼要的描述郵件中的補丁。“一句話概述” 不應該是一個文件名。對於一個補丁系列(“補丁系列”指一系列的多個相關補 丁),不要對每個補丁都使用同樣的“一句話概述”。h]hX郵件標題中的“一句話概述”扼要的描述郵件中的補丁。“一句話概述” 不應該是一個文件名。對於一個補丁系列(“補丁系列”指一系列的多個相關補 丁),不要對每個補丁都使用同樣的“一句話概述”。}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhjhhubh)}(hX記住郵件的“一句話概述”會成爲該補丁的全局唯一標識。它會進入 ``git`` 的改動記錄裏。然後“一句話概述”會被用在開發者的討論裏,用來指代這個補 丁。用戶將希望通過搜索引擎搜索“一句話概述”來找到那些討論這個補丁的文 章。當人們在兩三個月後使用諸如 ``gitk`` 或 ``git log --oneline`` 之類 的工具查看數千個補丁時,也會很快看到它。h](h[記住郵件的“一句話概述”會成爲該補丁的全局唯一標識。它會進入 }(hjhhhNhNubj)}(h``git``h]hgit}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubhX 的改動記錄裏。然後“一句話概述”會被用在開發者的討論裏,用來指代這個補 丁。用戶將希望通過搜索引擎搜索“一句話概述”來找到那些討論這個補丁的文 章。當人們在兩三個月後使用諸如 }(hjhhhNhNubj)}(h``gitk``h]hgitk}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh 或 }(hjhhhNhNubj)}(h``git log --oneline``h]hgit log --oneline}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubhD 之類 的工具查看數千個補丁時,也會很快看到它。}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhMhjhhubh)}(h出於這些原因,概述必須不超過70-75個字符,並且必須描述補丁的更改以及爲 什麼需要補丁。既要簡潔又要描述性很有挑戰性,但寫得好的概述應該這樣。h]h出於這些原因,概述必須不超過70-75個字符,並且必須描述補丁的更改以及爲 什麼需要補丁。既要簡潔又要描述性很有挑戰性,但寫得好的概述應該這樣。}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhjhhubh)}(hX%概述的前綴可以用方括號括起來:“Subject: [PATCH ...] <概述>”。標記 不被視爲概述的一部分,而是描述應該如何處理補丁。如果補丁的多個版本已發 送出來以響應評審(即“v1,v2,v3”)則必須包含版本號,或包含“RFC”以指示 評審請求。如果一個補丁系列中有四個補丁,那麼各個補丁可以這樣編號:1/4、2/4、 3/4、4/4。這可以確保開發人員瞭解補丁應用的順序,且 已經查看或應用了補丁系列中的所有補丁。h]hX%概述的前綴可以用方括號括起來:“Subject: [PATCH ...] <概述>”。標記 不被視爲概述的一部分,而是描述應該如何處理補丁。如果補丁的多個版本已發 送出來以響應評審(即“v1,v2,v3”)則必須包含版本號,或包含“RFC”以指示 評審請求。如果一個補丁系列中有四個補丁,那麼各個補丁可以這樣編號:1/4、2/4、 3/4、4/4。這可以確保開發人員瞭解補丁應用的順序,且 已經查看或應用了補丁系列中的所有補丁。}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhjhhubh)}(h一些標題的例子::h]h一些標題的例子:}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhjhhubjk)}(hvSubject: [patch 2/5] ext2: improve scalability of bitmap searching Subject: [PATCHv2 001/207] x86: fix eflags trackingh]hvSubject: [patch 2/5] ext2: improve scalability of bitmap searching Subject: [PATCHv2 001/207] x86: fix eflags tracking}hj sbah}(h]h ]h"]h$]h&]hhuh1jjhhhMhjhhubh)}(hA``From`` 行是信體裏的最上面一行,具有如下格式::h](j)}(h``From``h]hFrom}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh8 行是信體裏的最上面一行,具有如下格式:}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhMhjhhubjk)}(h'From: Patch Author h]h'From: Patch Author }hj5sbah}(h]h ]h"]h$]h&]hhuh1jjhhhMhjhhubh)}(h``From`` 行指明在永久改動日誌裏,誰會被確認爲作者。如果沒有 ``From`` 行,那 麼郵件頭裏的 ``From:`` 行會被用來決定改動日誌中的作者。h](j)}(h``From``h]hFrom}(hjGhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjCubhM 行指明在永久改動日誌裏,誰會被確認爲作者。如果沒有 }(hjChhhNhNubj)}(h``From``h]hFrom}(hjYhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjCubh 行,那 麼郵件頭裏的 }(hjChhhNhNubj)}(h ``From:``h]hFrom:}(hjkhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjCubh1 行會被用來決定改動日誌中的作者。}(hjChhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhMhjhhubh)}(hX說明文字將會被提交到永久的源代碼改動日誌裏,因此應針對那些早已經不記得和這 個補丁相關的討論細節的讀者。包括補丁處理的故障症狀(內核日誌消息、oops消息 等),這對於可能正在搜索提交日誌以查找適用補丁的人特別有用。文本應該寫得如 此詳細,以便在數週、數月甚至數年後閱讀時,能夠爲讀者提供所需的細節信息,以 掌握創建補丁的 **原因** 。h](hX說明文字將會被提交到永久的源代碼改動日誌裏,因此應針對那些早已經不記得和這 個補丁相關的討論細節的讀者。包括補丁處理的故障症狀(內核日誌消息、oops消息 等),這對於可能正在搜索提交日誌以查找適用補丁的人特別有用。文本應該寫得如 此詳細,以便在數週、數月甚至數年後閱讀時,能夠爲讀者提供所需的細節信息,以 掌握創建補丁的 }(hjhhhNhNubj)}(h **原因**h]h原因}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh 。}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhMhjhhubh)}(h如果一個補丁修復了一個編譯失敗,那麼可能不需要包含 *所有* 編譯失敗; 只要足夠讓搜索補丁的人能夠找到它就行了。與概述一樣,既要簡潔又要描述性。h](hL如果一個補丁修復了一個編譯失敗,那麼可能不需要包含 }(hjhhhNhNubj)}(h*所有*h]h所有}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh} 編譯失敗; 只要足夠讓搜索補丁的人能夠找到它就行了。與概述一樣,既要簡潔又要描述性。}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhMhjhhubh)}(ho``---`` 標記行對於補丁處理工具要找到哪裏是改動日誌信息的結束,是不可缺少 的。h](j)}(h``---``h]h---}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubhh 標記行對於補丁處理工具要找到哪裏是改動日誌信息的結束,是不可缺少 的。}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhM hjhhubh)}(hX對於 ``---`` 標記之後的額外註解,一個好的用途就是用來寫 ``diffstat`` ,用來顯 示修改了什麼文件和每個文件都增加和刪除了多少行。 ``diffstat`` 對於比較大的補 丁特別有用。 使用 ``diffstat`` 的選項 ``-p 1 -w 70`` 這樣文件名就會從內核源代碼樹的目錄開始 ,不會佔用太寬的空間(很容易適合80列的寬度,也許會有一些縮進。) ( ``git`` 默認會生成合適的diffstat。)h](h對於 }(hjhhhNhNubj)}(h``---``h]h---}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubhA 標記之後的額外註解,一個好的用途就是用來寫 }(hjhhhNhNubj)}(h ``diffstat``h]hdiffstat}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubhW ,用來顯 示修改了什麼文件和每個文件都增加和刪除了多少行。 }(hjhhhNhNubj)}(h ``diffstat``h]hdiffstat}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh1 對於比較大的補 丁特別有用。 使用 }(hjhhhNhNubj)}(h ``diffstat``h]hdiffstat}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh 的選項 }(hjhhhNhNubj)}(h``-p 1 -w 70``h]h -p 1 -w 70}(hj/hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh 這樣文件名就會從內核源代碼樹的目錄開始 ,不會佔用太寬的空間(很容易適合80列的寬度,也許會有一些縮進。) ( }(hjhhhNhNubj)}(h``git``h]hgit}(hjAhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh' 默認會生成合適的diffstat。)}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhMhjhhubh)}(h其餘那些只適用於當時或者與維護者相關的註解,不合適放到永久的改動日誌裏的,也 應該放這裏。較好的例子就是 ``補丁更改記錄`` ,記錄了v1和v2版本補丁之間的差異。h](h其餘那些只適用於當時或者與維護者相關的註解,不合適放到永久的改動日誌裏的,也 應該放這裏。較好的例子就是 }(hjYhhhNhNubj)}(h``補丁更改記錄``h]h補丁更改記錄}(hjahhhNhNubah}(h]h ]h"]h$]h&]uh1jhjYubh2 ,記錄了v1和v2版本補丁之間的差異。}(hjYhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhMhjhhubh)}(hXm請將此信息放在將變更日誌與補丁的其餘部分分隔開的 ``---`` 行 **之後** 。版本 信息不是提交到git樹的變更日誌的一部分。只是供審閱人員使用的附加信息。如果將 其放置在提交標記上方,則需要手動交互才能將其刪除。如果它位於分隔線以下,則在 應用補丁時會自動剝離::h](hI請將此信息放在將變更日誌與補丁的其餘部分分隔開的 }(hjyhhhNhNubj)}(h``---``h]h---}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjyubh 行 }(hjyhhhNhNubj)}(h **之後**h]h之後}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjyubhX  。版本 信息不是提交到git樹的變更日誌的一部分。只是供審閱人員使用的附加信息。如果將 其放置在提交標記上方,則需要手動交互才能將其刪除。如果它位於分隔線以下,則在 應用補丁時會自動剝離:}(hjyhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhMhjhhubjk)}(h ... Signed-off-by: Author --- V2 -> V3: Removed redundant helper function V1 -> V2: Cleaned up coding style and addressed review comments path/to/file | 5+++-- ...h]h ... Signed-off-by: Author --- V2 -> V3: Removed redundant helper function V1 -> V2: Cleaned up coding style and addressed review comments path/to/file | 5+++-- ...}hjsbah}(h]h ]h"]h$]h&]hhuh1jjhhhMhjhhubh)}(hH在後面的參考資料中能看到正確補丁格式的更多細節。h]hH在後面的參考資料中能看到正確補丁格式的更多細節。}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhM'hjhhubj)}(h.. _tw_backtraces:h]h}(h]h ]h"]h$]h&]j! tw-backtracesuh1jhM8hjhhhhubj)}(hhh](j)}(h(提交消息中的回溯(Backtraces)h]h(提交消息中的回溯(Backtraces)}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjhhhhhM,ubh)}(hX回溯有助於記錄導致問題的調用鏈。然而,並非所有回溯都有幫助。例如,早期引導調 用鏈是獨特而明顯的。而逐字複製完整的dmesg輸出則會增加時間戳、模塊列表、寄存 器和堆棧轉儲等分散注意力的信息。h]hX回溯有助於記錄導致問題的調用鏈。然而,並非所有回溯都有幫助。例如,早期引導調 用鏈是獨特而明顯的。而逐字複製完整的dmesg輸出則會增加時間戳、模塊列表、寄存 器和堆棧轉儲等分散注意力的信息。}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhM.hjhhubh)}(h因此,最有用的回溯應該從轉儲中提取相關信息,以更容易集中在真實問題上。下面是 一個剪裁良好的回溯示例::h]h因此,最有用的回溯應該從轉儲中提取相關信息,以更容易集中在真實問題上。下面是 一個剪裁良好的回溯示例:}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhM2hjhhubjk)}(hunchecked MSR access error: WRMSR to 0xd51 (tried to write 0x0000000000000064) at rIP: 0xffffffffae059994 (native_write_msr+0x4/0x20) Call Trace: mba_wrmsr update_domains rdtgroup_mkdirh]hunchecked MSR access error: WRMSR to 0xd51 (tried to write 0x0000000000000064) at rIP: 0xffffffffae059994 (native_write_msr+0x4/0x20) Call Trace: mba_wrmsr update_domains rdtgroup_mkdir}hjsbah}(h]h ]h"]h$]h&]hhuh1jjhhhM5hjhhubj)}(h.. _tw_explicit_in_reply_to:h]h}(h]h ]h"]h$]h&]j!tw-explicit-in-reply-touh1jhMKhjhhhhubeh}(h]( backtracesjeh ]h"]((提交消息中的回溯(backtraces) tw_backtraceseh$]h&]uh1jhjhhhhhM,j}jjsj}jjsubeh}(h](j id12eh ]h"](標準補丁格式tw_the_canonical_patch_formateh$]h&]uh1jhjhhhhhMj}j)j sj}j j subj)}(hhh](j)}(h&明確回覆郵件頭(In-Reply-To)h]h&明確回覆郵件頭(In-Reply-To)}(hj1hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj.hhhhhM?ubh)}(hX@手動添加回復補丁的的郵件頭(In-Reply_To:)是有用的(例如,使用 ``git send-email`` ), 可以將補丁與以前的相關討論關聯起來,例如,將bug補丁鏈接到電子郵件和bug報告。 但是,對於多補丁系列,最好避免在回覆時使用鏈接到該系列的舊版本。這樣, 補丁的多個版本就不會成爲電子郵件客戶端中無法管理的引用樹。如果鏈接有用, 可以使用 https://lore.kernel.org/ 重定向器(例如,在封面電子郵件文本中) 鏈接到補丁系列的早期版本。h](hX手動添加回復補丁的的郵件頭(In-Reply_To:)是有用的(例如,使用 }(hj?hhhNhNubj)}(h``git send-email``h]hgit send-email}(hjGhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj?ubhX\ ), 可以將補丁與以前的相關討論關聯起來,例如,將bug補丁鏈接到電子郵件和bug報告。 但是,對於多補丁系列,最好避免在回覆時使用鏈接到該系列的舊版本。這樣, 補丁的多個版本就不會成爲電子郵件客戶端中無法管理的引用樹。如果鏈接有用, 可以使用 }(hj?hhhNhNubh)}(hhttps://lore.kernel.org/h]hhttps://lore.kernel.org/}(hjYhhhNhNubah}(h]h ]h"]h$]h&]refurij[uh1hhj?ubhb 重定向器(例如,在封面電子郵件文本中) 鏈接到補丁系列的早期版本。}(hj?hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhMAhj.hhubeh}(h]( in-reply-tojeh ]h"](&明確回覆郵件頭(in-reply-to)tw_explicit_in_reply_toeh$]h&]uh1jhjhhhhhM?j}jxj sj}jj subj)}(hhh](j)}(h給出基礎樹信息h]h給出基礎樹信息}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj}hhhhhMIubh)}(hX?當其他開發人員收到您的補丁並開始審閱時,知道應該將您的工作放到代碼樹歷史記錄 中的什麼位置通常很有用。這對於自動化持續集成流水(CI)特別有用,這些流水線試 圖運行一系列測試,以便在維護人員開始審閱之前確定提交的質量。h]hX?當其他開發人員收到您的補丁並開始審閱時,知道應該將您的工作放到代碼樹歷史記錄 中的什麼位置通常很有用。這對於自動化持續集成流水(CI)特別有用,這些流水線試 圖運行一系列測試,以便在維護人員開始審閱之前確定提交的質量。}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMKhj}hhubh)}(h如果您使用 ``git format-patch`` 生成補丁,則可以通過 ``--base`` 標誌在提交中 自動包含基礎樹信息。使用此選項最簡單、最方便的方法是配合主題分支::h](h如果您使用 }(hjhhhNhNubj)}(h``git format-patch``h]hgit format-patch}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh 生成補丁,則可以通過 }(hjhhhNhNubj)}(h ``--base``h]h--base}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubhu 標誌在提交中 自動包含基礎樹信息。使用此選項最簡單、最方便的方法是配合主題分支:}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhMOhj}hhubjk)}(hXP$ git checkout -t -b my-topical-branch master Branch 'my-topical-branch' set up to track local branch 'master'. Switched to a new branch 'my-topical-branch' [perform your edits and commits] $ git format-patch --base=auto --cover-letter -o outgoing/ master outgoing/0000-cover-letter.patch outgoing/0001-First-Commit.patch outgoing/...h]hXP$ git checkout -t -b my-topical-branch master Branch 'my-topical-branch' set up to track local branch 'master'. Switched to a new branch 'my-topical-branch' [perform your edits and commits] $ git format-patch --base=auto --cover-letter -o outgoing/ master outgoing/0000-cover-letter.patch outgoing/0001-First-Commit.patch outgoing/...}hjsbah}(h]h ]h"]h$]h&]hhuh1jjhhhMRhj}hhubh)}(h當你編輯 ``outgoing/0000-cover-letter.patch`` 時,您會注意到在它的最底部有一 行 ``base-commit:`` 尾註,它爲審閱者和CI工具提供了足夠的信息以正確執行 ``git am`` 而不必擔心衝突::h](h 當你編輯 }(hjhhhNhNubj)}(h$``outgoing/0000-cover-letter.patch``h]h outgoing/0000-cover-letter.patch}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh3 時,您會注意到在它的最底部有一 行 }(hjhhhNhNubj)}(h``base-commit:``h]h base-commit:}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubhL 尾註,它爲審閱者和CI工具提供了足夠的信息以正確執行 }(hjhhhNhNubj)}(h ``git am``h]hgit am}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh 而不必擔心衝突:}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhM]hj}hhubjk)}(h$ git checkout -b patch-review [base-commit-id] Switched to a new branch 'patch-review' $ git am patches.mbox Applying: First Commit Applying: ...h]h$ git checkout -b patch-review [base-commit-id] Switched to a new branch 'patch-review' $ git am patches.mbox Applying: First Commit Applying: ...}hj sbah}(h]h ]h"]h$]h&]hhuh1jjhhhMahj}hhubh)}(hG有關此選項的更多信息,請參閱 ``man git-format-patch`` 。h](h+有關此選項的更多信息,請參閱 }(hj.hhhNhNubj)}(h``man git-format-patch``h]hman git-format-patch}(hj6hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj.ubh 。}(hj.hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhMghj}hhubh)}(h1``--base`` 功能是在2.9.0版git中引入的。h]h)}(hjPh](j)}(h ``--base``h]h--base}(hjUhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjRubh' 功能是在2.9.0版git中引入的。}(hjRhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhMkhjNubah}(h]h ]h"]h$]h&]uh1hhj}hhhhhNubh)}(hXB如果您不使用git格式化補丁,仍然可以包含相同的 ``base-commit`` 尾註,以指示您 的工作所基於的樹的提交哈希。你應該在封面郵件或系列的第一個補丁中添加它,它應 該放在 ``---`` 行的下面或所有其他內容之後,即只在你的電子郵件簽名之前。h](hC如果您不使用git格式化補丁,仍然可以包含相同的 }(hjshhhNhNubj)}(h``base-commit``h]h base-commit}(hj{hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjsubh 尾註,以指示您 的工作所基於的樹的提交哈希。你應該在封面郵件或系列的第一個補丁中添加它,它應 該放在 }(hjshhhNhNubj)}(h``---``h]h---}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjsubhU 行的下面或所有其他內容之後,即只在你的電子郵件簽名之前。}(hjshhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhMmhj}hhubeh}(h]id13ah ]h"]給出基礎樹信息ah$]h&]uh1jhjhhhhhMIubj)}(hhh](j)}(h 參考文獻h]h 參考文獻}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjhhhhhMrubhdefinition_list)}(hhh](hdefinition_list_item)}(h\Andrew Morton,“完美的補丁”(tpp) h](hterm)}(h.Andrew Morton,“完美的補丁”(tpp)h]h.Andrew Morton,“完美的補丁”(tpp)}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhhhMuhjubh definition)}(hhh]h)}(h,h](h<}(hjhhhNhNubh)}(h*https://www.ozlabs.org/~akpm/stuff/tpp.txth]h*https://www.ozlabs.org/~akpm/stuff/tpp.txt}(hjhhhNhNubah}(h]h ]h"]h$]h&]refurijuh1hhjubh>}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhMuhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhhhMuhjubj)}(hJeff Garzik,“Linux內核補丁提交格式” h](j)}(h1Jeff Garzik,“Linux內核補丁提交格式”h]h1Jeff Garzik,“Linux內核補丁提交格式”}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhhhMxhj ubj)}(hhh]h)}(hRh](h<}(hj hhhNhNubh)}(hPhttps://web.archive.org/web/20180829112450/http://linux.yyz.us/patch-format.htmlh]hPhttps://web.archive.org/web/20180829112450/http://linux.yyz.us/patch-format.html}(hj(hhhNhNubah}(h]h ]h"]h$]h&]refurij*uh1hhj ubh>}(hj hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhMxhjubah}(h]h ]h"]h$]h&]uh1jhj ubeh}(h]h ]h"]h$]h&]uh1jhhhMxhjhhubj)}(hX}Greg Kroah-Hartman,“如何惹惱內核子系統維護人員” h](j)}(hBGreg Kroah-Hartman,“如何惹惱內核子系統維護人員”h]hBGreg Kroah-Hartman,“如何惹惱內核子系統維護人員”}(hjQhhhNhNubah}(h]h ]h"]h$]h&]uh1jhhhMhjMubj)}(hhh](h)}(h0h](h<}(hjbhhhNhNubh)}(h.http://www.kroah.com/log/linux/maintainer.htmlh]h.http://www.kroah.com/log/linux/maintainer.html}(hjjhhhNhNubah}(h]h ]h"]h$]h&]refurijluh1hhjbubh>}(hjbhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhM{hj_ubh)}(h3h](h<}(hjhhhNhNubh)}(h1http://www.kroah.com/log/linux/maintainer-02.htmlh]h1http://www.kroah.com/log/linux/maintainer-02.html}(hjhhhNhNubah}(h]h ]h"]h$]h&]refurijuh1hhjubh>}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhM}hj_ubh)}(h3h](h<}(hjhhhNhNubh)}(h1http://www.kroah.com/log/linux/maintainer-03.htmlh]h1http://www.kroah.com/log/linux/maintainer-03.html}(hjhhhNhNubah}(h]h ]h"]h$]h&]refurijuh1hhjubh>}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhMhj_ubh)}(h3h](h<}(hjhhhNhNubh)}(h1http://www.kroah.com/log/linux/maintainer-04.htmlh]h1http://www.kroah.com/log/linux/maintainer-04.html}(hjhhhNhNubah}(h]h ]h"]h$]h&]refurijuh1hhjubh>}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhMhj_ubh)}(h3h](h<}(hjhhhNhNubh)}(h1http://www.kroah.com/log/linux/maintainer-05.htmlh]h1http://www.kroah.com/log/linux/maintainer-05.html}(hjhhhNhNubah}(h]h ]h"]h$]h&]refurijuh1hhjubh>}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhMhj_ubh)}(h3h](h<}(hjhhhNhNubh)}(h1http://www.kroah.com/log/linux/maintainer-06.htmlh]h1http://www.kroah.com/log/linux/maintainer-06.html}(hjhhhNhNubah}(h]h ]h"]h$]h&]refurijuh1hhjubh>}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhMhj_ubeh}(h]h ]h"]h$]h&]uh1jhjMubeh}(h]h ]h"]h$]h&]uh1jhhhMhjhhubj)}(h不!!!別再發巨型補丁炸彈給linux-kernel@vger.kernel.org的人們了! h](j)}(hU不!!!別再發巨型補丁炸彈給linux-kernel@vger.kernel.org的人們了!h](h0不!!!別再發巨型補丁炸彈給linux-}(hj8hhhNhNubh)}(hkernel@vger.kernelh]hkernel@vger.kernel}(hj@hhhNhNubah}(h]h ]h"]h$]h&]refurimailto:kernel@vger.kerneluh1hhj8ubh.org的人們了!}(hj8hhhNhNubeh}(h]h ]h"]h$]h&]uh1jhhhMhj4ubj)}(hhh]h)}(hHh](h<}(hj]hhhNhNubh)}(hFhttps://lore.kernel.org/r/20050711.125305.08322243.davem@davemloft.neth]hFhttps://lore.kernel.org/r/20050711.125305.08322243.davem@davemloft.net}(hjehhhNhNubah}(h]h ]h"]h$]h&]refurijguh1hhj]ubh>}(hj]hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhMhjZubah}(h]h ]h"]h$]h&]uh1jhj4ubeh}(h]h ]h"]h$]h&]uh1jhhhMhjhhubeh}(h]h ]h"]h$]h&]uh1jhjhhhhhNubh)}(h@內核 Documentation/translations/zh_CN/process/coding-style.rsth]h@內核 Documentation/translations/zh_CN/process/coding-style.rst}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhjhhubj)}(hhh](j)}(h~Linus Torvalds關於標準補丁格式的郵件 h](j)}(h/Linus Torvalds關於標準補丁格式的郵件h]h/Linus Torvalds關於標準補丁格式的郵件}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhhhMhjubj)}(hhh]h)}(hMh](h<}(hjhhhNhNubh)}(hKhttps://lore.kernel.org/r/Pine.LNX.4.58.0504071023190.28951@ppc970.osdl.orgh]hKhttps://lore.kernel.org/r/Pine.LNX.4.58.0504071023190.28951@ppc970.osdl.org}(hjhhhNhNubah}(h]h ]h"]h$]h&]refurijuh1hhjubh>}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhMhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhhhMhjubj)}(hAndi Kleen,“提交補丁之路” 一些幫助合入困難或有爭議的變更的策略。 http://halobates.de/on-submitting-patches.pdf h](j)}(h%Andi Kleen,“提交補丁之路”h]h%Andi Kleen,“提交補丁之路”}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhhhMhjubj)}(hhh](h)}(h9一些幫助合入困難或有爭議的變更的策略。h]h9一些幫助合入困難或有爭議的變更的策略。}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhjubh)}(h-http://halobates.de/on-submitting-patches.pdfh]h)}(hjh]h-http://halobates.de/on-submitting-patches.pdf}(hj hhhNhNubah}(h]h ]h"]h$]h&]refurijuh1hhjubah}(h]h ]h"]h$]h&]uh1hhhhMhjubeh}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhhhMhjhhubeh}(h]h ]h"]h$]h&]uh1jhjhhhhhNubeh}(h]id14ah ]h"] 參考文獻ah$]h&]uh1jhjhhhhhMrubeh}(h]id1ah ]h"]0提交補丁:如何讓你的改動進入內核ah$]h&]uh1jhhhhhhhKubeh}(h]h ]h"]h$]h&]sourcehuh1hcurrent_sourceN current_lineNsettingsdocutils.frontendValues)}(jN generatorN datestampN source_linkN source_urlN toc_backlinksentryfootnote_backlinksK sectnum_xformKstrip_commentsNstrip_elements_with_classesN strip_classesN report_levelK halt_levelKexit_status_levelKdebugNwarning_streamN tracebackinput_encoding utf-8-siginput_encoding_error_handlerstrictoutput_encodingutf-8output_encoding_error_handlerjcerror_encodingutf-8error_encoding_error_handlerbackslashreplace language_codeenrecord_dependenciesNconfigN id_prefixhauto_id_prefixid dump_settingsNdump_internalsNdump_transformsNdump_pseudo_xmlNexpose_internalsNstrict_visitorN_disable_configN_sourcehnj _destinationN _config_files]7/var/lib/git/docbuild/linux/Documentation/docutils.confafile_insertion_enabled raw_enabledKline_length_limitM'pep_referencesN pep_base_urlhttps://peps.python.org/pep_file_url_templatepep-%04drfc_referencesN rfc_base_url&https://datatracker.ietf.org/doc/html/ tab_widthKtrim_footnote_reference_spacesyntax_highlightlong smart_quotessmartquotes_locales]character_level_inline_markupdoctitle_xform docinfo_xformKsectsubtitle_xform image_loadinglinkembed_stylesheetcloak_email_addressessection_self_linkenvNubreporterNindirect_targets]substitution_defs}substitution_names}refnames}refids}(j"]jaj]jaj]jaj ]j aj ]j aj]jaj]j aunameids}(jj"j=j:jjjjjjjjjjjBj?jpjmj= j: j j j j j j jX jU j j j j j~ j{ jj j j j)j j(j%jjjjjxjjwjtjjj5j2u nametypes}(jj=jjjjjjBjpj= j j j jX j j j~ jj j)j(jjjxjwjj5uh}(j"j%j:jjj9jjjjjjjjj?jjmjEj: jsj j@ j j j j jU j j j[ j j j{ j j j j j j jj%jjjjjjj.jtj.jj}j2ju footnote_refs} citation_refs} autofootnotes]autofootnote_refs]symbol_footnotes]symbol_footnote_refs] footnotes] citations]autofootnote_startKsymbol_footnote_startK id_counter collectionsCounter}jqKsRparse_messages]transform_messages](hsystem_message)}(hhh]h)}(hhh]h:Hyperlink target "tw-submittingpatches" is not referenced.}hjsbah}(h]h ]h"]h$]h&]uh1hhjubah}(h]h ]h"]h$]h&]levelKtypeINFOsourcehnjlineKuh1jubj)}(hhh]h)}(hhh]h9Hyperlink target "tw-describe-changes" is not referenced.}hjsbah}(h]h ]h"]h$]h&]uh1hhjubah}(h]h ]h"]h$]h&]levelKtypejsourcehnjlineKBuh1jubj)}(hhh]h)}(hhh]h6Hyperlink target "tw-split-changes" is not referenced.}hjsbah}(h]h ]h"]h$]h&]uh1hhjubah}(h]h ]h"]h$]h&]levelKtypejsourcehnjlineKuh1jubj)}(hhh]h)}(hhh]h9Hyperlink target "tw-resend-reminders" is not referenced.}hj"sbah}(h]h ]h"]h$]h&]uh1hhjubah}(h]h ]h"]h$]h&]levelKtypejsourcehnjlineMuh1jubj)}(hhh]h)}(hhh]hCHyperlink target "tw-the-canonical-patch-format" is not referenced.}hj<sbah}(h]h ]h"]h$]h&]uh1hhj9ubah}(h]h ]h"]h$]h&]levelKtypejsourcehnjlineMuh1jubj)}(hhh]h)}(hhh]h3Hyperlink target "tw-backtraces" is not referenced.}hjVsbah}(h]h ]h"]h$]h&]uh1hhjSubah}(h]h ]h"]h$]h&]levelKtypejsourcehnjlineM8uh1jubj)}(hhh]h)}(hhh]h=Hyperlink target "tw-explicit-in-reply-to" is not referenced.}hjpsbah}(h]h ]h"]h$]h&]uh1hhjmubah}(h]h ]h"]h$]h&]levelKtypejsourcehnjlineMKuh1jube transformerN include_log]?Documentation/translations/zh_TW/process/submitting-patches.rst(NNNNta decorationNhhub.