+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]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}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjhhhKubh field_body)}(h-Documentation/process/submitting-patches.rst h]h)}(h,Documentation/process/submitting-patches.rsth]h,Documentation/process/submitting-patches.rst}(hj/hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj+ubah}(h]h ]h"]h$]h&]uh1j)hjubeh}(h]h ]h"]h$]h&]uh1jhhhKhjhhubj)}(hhh](j)}(h譯者h]h譯者}(hjLhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjIhhhKubj*)}(h- 鍾宇 TripleX Chung - 時奎亮 Alex Shi - 吳想成 Wu XiangCheng h]h bullet_list)}(hhh](h list_item)}(h(鍾宇 TripleX Chung h]h)}(hjgh](h鍾宇 TripleX Chung <}(hjihhhNhNubh)}(hxxx.phy@gmail.comh]hxxx.phy@gmail.com}(hjphhhNhNubah}(h]h ]h"]h$]h&]refurimailto:xxx.phy@gmail.comuh1hhjiubh>}(hjihhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhK hjeubah}(h]h ]h"]h$]h&]uh1jchj`ubjd)}(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&]uh1jchj`ubjd)}(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&]uh1jchj`ubeh}(h]h ]h"]h$]h&]bullet-uh1j^hhhK hjZubah}(h]h ]h"]h$]h&]uh1j)hjIubeh}(h]h ]h"]h$]h&]uh1jhhhK hjhhubj)}(hhh](j)}(h校譯h]h校譯}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjhhhKubj*)}(h- 李陽 Li Yang - 王聰 Wang Cong - 胡皓文 Hu Haowen <2023002089@link.tyut.edu.cn> h]j_)}(hhh](jd)}(h#李陽 Li Yang h]h)}(hjh](h李陽 Li Yang <}(hjhhhNhNubh)}(hleoyang.li@nxp.comh]hleoyang.li@nxp.com}(hjhhhNhNubah}(h]h ]h"]h$]h&]refurimailto:leoyang.li@nxp.comuh1hhjubh>}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1jchjubjd)}(h+王聰 Wang Cong h]h)}(hj@h](h王聰 Wang Cong <}(hjBhhhNhNubh)}(hxiyou.wangcong@gmail.comh]hxiyou.wangcong@gmail.com}(hjIhhhNhNubah}(h]h ]h"]h$]h&]refurimailto:xiyou.wangcong@gmail.comuh1hhjBubh>}(hjBhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKhj>ubah}(h]h ]h"]h$]h&]uh1jchjubjd)}(h3胡皓文 Hu Haowen <2023002089@link.tyut.edu.cn> h]h)}(h1胡皓文 Hu Haowen <2023002089@link.tyut.edu.cn>h](h胡皓文 Hu Haowen <}(hjmhhhNhNubh)}(h2023002089@link.tyut.edu.cnh]h2023002089@link.tyut.edu.cn}(hjuhhhNhNubah}(h]h ]h"]h$]h&]refuri"mailto:2023002089@link.tyut.edu.cnuh1hhjmubh>}(hjmhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKhjiubah}(h]h ]h"]h$]h&]uh1jchjubeh}(h]h ]h"]h$]h&]jjuh1j^hhhKhj ubah}(h]h ]h"]h$]h&]uh1j)hjubeh}(h]h ]h"]h$]h&]uh1jhhhKhjhhubeh}(h]jah ]h"]tw_submittingpatchesah$]h&]uh1jhhhhhhhKexpect_referenced_by_name}jjsexpect_referenced_by_id}jjsubhsection)}(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 。}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK$hjhhubj)}(hhh](j)}(h獲取當前源碼樹h]h獲取當前源碼樹}(hj(hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj%hhhhhK(ubh)}(h如果您手頭沒有當前內核源代碼的存儲庫,請使用 ``git`` 獲取一份。您需要先獲取 主線存儲庫,它可以通過以下命令拉取::h](hC如果您手頭沒有當前內核源代碼的存儲庫,請使用 }(hj6hhhNhNubj)}(h``git``h]hgit}(hj>hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj6ubhW 獲取一份。您需要先獲取 主線存儲庫,它可以通過以下命令拉取:}(hj6hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhK*hj%hhubh 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}hjXsbah}(h]h ]h"]h$]h&]hhuh1jVhhhK-hj%hhubh)}(hX/但是,請注意,您可能不想直接針對主線樹進行開發。大多數子系統維護人員運 行自己的樹,並希望看到針對這些樹準備的補丁。請參見MAINTAINERS文件中子系 統的 **T:** 項以查找該樹,或者直接詢問維護者該樹是否未在其中列出。h](h但是,請注意,您可能不想直接針對主線樹進行開發。大多數子系統維護人員運 行自己的樹,並希望看到針對這些樹準備的補丁。請參見MAINTAINERS文件中子系 統的 }(hjfhhhNhNubhstrong)}(h**T:**h]hT:}(hjphhhNhNubah}(h]h ]h"]h$]h&]uh1jnhjfubhR 項以查找該樹,或者直接詢問維護者該樹是否未在其中列出。}(hjfhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhK/hj%hhubj)}(h.. _tw_describe_changes:h]h}(h]h ]h"]h$]h&]j tw-describe-changesuh1jhKBhj%hhhhubeh}(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&]uh1hhhhKhhhNhNubj)}(h``git bisect``h]h git bisect}(hjFhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj>ubh 來追蹤問題的開發者可能會在任何地方分 割你的補丁系列;如果你在中間引入錯誤,他們不會感謝你。}(hj>hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKhjhhubh)}(hx如果你不能將補丁系列濃縮得更小,那麼每次大約發送出15個補丁,然後等待審閱 和集成。h]hx如果你不能將補丁系列濃縮得更小,那麼每次大約發送出15個補丁,然後等待審閱 和集成。}(hj^hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjhhubeh}(h](jid4eh ]h"](拆分你的改動tw_split_changeseh$]h&]uh1jhjhhhhhKj}jrjsj}jjsubj)}(hhh](j)}(h檢查你的更改風格h]h檢查你的更改風格}(hjzhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjwhhhhhKubh)}(hX 檢查您的補丁是否違反了基本樣式規定,詳細信息參見 Documentation/translations/zh_CN/process/coding-style.rst 中找到。如果不這樣做,只會浪費審閱者的時間,並且會導致你的補丁被拒絕,甚至 可能沒有被閱讀。h]hX 檢查您的補丁是否違反了基本樣式規定,詳細信息參見 Documentation/translations/zh_CN/process/coding-style.rst 中找到。如果不這樣做,只會浪費審閱者的時間,並且會導致你的補丁被拒絕,甚至 可能沒有被閱讀。}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjwhhubh)}(hXL一個重要的例外是在將代碼從一個文件移動到另一個文件時——在這種情況下,您不應 該在移動代碼的同一個補丁中修改移動的代碼。這清楚地描述了移動代碼和您的更改 的行爲。這大大有助於審閱實際差異,並允許工具更好地跟蹤代碼本身的歷史。h]hXL一個重要的例外是在將代碼從一個文件移動到另一個文件時——在這種情況下,您不應 該在移動代碼的同一個補丁中修改移動的代碼。這清楚地描述了移動代碼和您的更改 的行爲。這大大有助於審閱實際差異,並允許工具更好地跟蹤代碼本身的歷史。}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjwhhubh)}(hX在提交之前,使用補丁樣式檢查程序檢查補丁(scripts/check patch.pl)。不過, 請注意,樣式檢查程序應該被視爲一個指南,而不是作爲人類判斷的替代品。如果您 的代碼看起來更好,但有違規行爲,那麼最好別管它。h]hX在提交之前,使用補丁樣式檢查程序檢查補丁(scripts/check patch.pl)。不過, 請注意,樣式檢查程序應該被視爲一個指南,而不是作爲人類判斷的替代品。如果您 的代碼看起來更好,但有違規行爲,那麼最好別管它。}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjwhhubh)}(h檢查者報告三個級別:h]h檢查者報告三個級別:}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjwhhubh block_quote)}(hk- ERROR:很可能出錯的事情 - WARNING:需要仔細審閱的事項 - CHECK:需要思考的事情 h]j_)}(hhh](jd)}(h ERROR:很可能出錯的事情h]h)}(hjh]h ERROR:很可能出錯的事情}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1jchjubjd)}(h%WARNING:需要仔細審閱的事項h]h)}(hjh]h%WARNING:需要仔細審閱的事項}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1jchjubjd)}(hCHECK:需要思考的事情 h]h)}(hCHECK:需要思考的事情h]hCHECK:需要思考的事情}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1jchjubeh}(h]h ]h"]h$]h&]jjuh1j^hhhKhjubah}(h]h ]h"]h$]h&]uh1jhhhKhjwhhubh)}(hB您應該能夠判斷您的補丁中存在的所有違規行爲。h]hB您應該能夠判斷您的補丁中存在的所有違規行爲。}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjwhhubeh}(h]id5ah ]h"]檢查你的更改風格ah$]h&]uh1jhjhhhhhKubj)}(hhh](j)}(h選擇補丁收件人h]h選擇補丁收件人}(hj4hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj1hhhhhKubh)}(hXx您應該總是知會任何補丁相應代碼的子系統維護人員;查看 維護人員文件和源代碼修訂歷史記錄,以瞭解這些維護人員是誰。腳本 scripts/get_maintainer.pl在這個步驟中非常有用。如果您找不到正在工作的子系統 的維護人員,那麼Andrew Morton(akpm@linux-foundation.org)將充當最後的維護 人員。h](hX:您應該總是知會任何補丁相應代碼的子系統維護人員;查看 維護人員文件和源代碼修訂歷史記錄,以瞭解這些維護人員是誰。腳本 scripts/get_maintainer.pl在這個步驟中非常有用。如果您找不到正在工作的子系統 的維護人員,那麼Andrew Morton(}(hjBhhhNhNubh)}(hakpm@linux-foundation.orgh]hakpm@linux-foundation.org}(hjJhhhNhNubah}(h]h ]h"]h$]h&]refuri mailto:akpm@linux-foundation.orguh1hhjBubh%)將充當最後的維護 人員。}(hjBhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKhj1hhubh)}(hX您通常還應該選擇至少一個郵件列表來接收補丁集的副本。linux-kernel@vger.kernel.org 是所有補丁的默認列表,但是這個列表的流量已經導致了許多開發人員不再看它。 在MAINTAINERS文件中查找子系統特定的列表;您的補丁可能會在那裏得到更多的關注。 不過,請不要發送垃圾郵件到無關的列表。h](hN您通常還應該選擇至少一個郵件列表來接收補丁集的副本。}(hjdhhhNhNubh)}(hlinux-kernel@vger.kernel.orgh]hlinux-kernel@vger.kernel.org}(hjlhhhNhNubah}(h]h ]h"]h$]h&]refuri#mailto:linux-kernel@vger.kernel.orguh1hhjdubhX 是所有補丁的默認列表,但是這個列表的流量已經導致了許多開發人員不再看它。 在MAINTAINERS文件中查找子系統特定的列表;您的補丁可能會在那裏得到更多的關注。 不過,請不要發送垃圾郵件到無關的列表。}(hjdhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKhj1hhubh)}(h許多與內核相關的列表託管在vger.kernel.org上;您可以在 http://vger.kernel.org/vger-lists.html 上找到它們的列表。不過,也有與內核相關 的列表託管在其他地方。h](hI許多與內核相關的列表託管在vger.kernel.org上;您可以在 }(hjhhhNhNubh)}(h&http://vger.kernel.org/vger-lists.htmlh]h&http://vger.kernel.org/vger-lists.html}(hjhhhNhNubah}(h]h ]h"]h$]h&]refurijuh1hhjubh\ 上找到它們的列表。不過,也有與內核相關 的列表託管在其他地方。}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKhj1hhubh)}(hB不要一次發送超過15個補丁到vger郵件列表!!!!h]hB不要一次發送超過15個補丁到vger郵件列表!!!!}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj1hhubh)}(hLinus Torvalds是決定改動能否進入 Linux 內核的最終裁決者。他的郵件地址是 torvalds@linux-foundation.org 。他收到的郵件很多,所以一般來說最好 **別** 給他發郵件。h](haLinus Torvalds是決定改動能否進入 Linux 內核的最終裁決者。他的郵件地址是 }(hjhhhNhNubh)}(htorvalds@linux-foundation.orgh]htorvalds@linux-foundation.org}(hjhhhNhNubah}(h]h ]h"]h$]h&]refuri$mailto:torvalds@linux-foundation.orguh1hhjubh8 。他收到的郵件很多,所以一般來說最好 }(hjhhhNhNubjo)}(h**別**h]h別}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhjubh 給他發郵件。}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKhj1hhubh)}(hXY如果您有修復可利用安全漏洞的補丁,請將該補丁發送到 security@kernel.org 。對於 嚴重的bug,可以考慮短期禁令以允許分銷商(有時間)向用戶發佈補丁;在這種情況下, 顯然不應將補丁發送到任何公共列表。 參見 Documentation/translations/zh_CN/process/security-bugs.rst 。h](hL如果您有修復可利用安全漏洞的補丁,請將該補丁發送到 }(hjhhhNhNubh)}(hsecurity@kernel.orgh]hsecurity@kernel.org}(hjhhhNhNubah}(h]h ]h"]h$]h&]refurimailto:security@kernel.orguh1hhjubh 。對於 嚴重的bug,可以考慮短期禁令以允許分銷商(有時間)向用戶發佈補丁;在這種情況下, 顯然不應將補丁發送到任何公共列表。 參見 Documentation/translations/zh_CN/process/security-bugs.rst 。}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKhj1hhubh)}(h修復已發佈內核中嚴重錯誤的補丁程序應該抄送給穩定版維護人員,方法是把以下列行 放進補丁的籤準區(注意,不是電子郵件收件人)::h]h修復已發佈內核中嚴重錯誤的補丁程序應該抄送給穩定版維護人員,方法是把以下列行 放進補丁的籤準區(注意,不是電子郵件收件人):}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj1hhubjW)}(hCc: stable@vger.kernel.orgh]hCc: stable@vger.kernel.org}hjsbah}(h]h ]h"]h$]h&]hhuh1jVhhhKhj1hhubh)}(ho除了本文件之外,您還應該閱讀 Documentation/translations/zh_CN/process/stable-kernel-rules.rst 。h]ho除了本文件之外,您還應該閱讀 Documentation/translations/zh_CN/process/stable-kernel-rules.rst 。}(hj'hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj1hhubh)}(hX 如果更改影響到用戶側內核接口,請向手冊頁維護人員(如維護人員文件中所列)發送 手冊頁補丁,或至少發送更改通知,以便一些信息進入手冊頁。還應將用戶空間API 更改抄送到 linux-api@vger.kernel.org 。h](h如果更改影響到用戶側內核接口,請向手冊頁維護人員(如維護人員文件中所列)發送 手冊頁補丁,或至少發送更改通知,以便一些信息進入手冊頁。還應將用戶空間API 更改抄送到 }(hj5hhhNhNubh)}(hlinux-api@vger.kernel.orgh]hlinux-api@vger.kernel.org}(hj=hhhNhNubah}(h]h ]h"]h$]h&]refuri mailto:linux-api@vger.kernel.orguh1hhj5ubh 。}(hj5hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKhj1hhubeh}(h]id6ah ]h"]選擇補丁收件人ah$]h&]uh1jhjhhhhhKubj)}(hhh](j)}(hO不要MIME編碼,不要鏈接,不要壓縮,不要附件,只要純文本h]hO不要MIME編碼,不要鏈接,不要壓縮,不要附件,只要純文本}(hjbhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj_hhhhhKubh)}(hLinus 和其他的內核開發者需要閱讀和評論你提交的改動。對於內核開發者來說 ,可以“引用”你的改動很重要,使用一般的郵件工具,他們就可以在你的 代碼的任何位置添加評論。h]hLinus 和其他的內核開發者需要閱讀和評論你提交的改動。對於內核開發者來說 ,可以“引用”你的改動很重要,使用一般的郵件工具,他們就可以在你的 代碼的任何位置添加評論。}(hjphhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj_hhubh)}(h因爲這個原因,所有的提交的補丁都是郵件中“內嵌”的。最簡單(和推薦)的方法就 是使用 ``git send-email`` 。https://git-send-email.io 有 ``git send-email`` 的交互式教程。h](h}因爲這個原因,所有的提交的補丁都是郵件中“內嵌”的。最簡單(和推薦)的方法就 是使用 }(hj~hhhNhNubj)}(h``git send-email``h]hgit send-email}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj~ubh 。}(hj~hhhNhNubh)}(hhttps://git-send-email.ioh]hhttps://git-send-email.io}(hjhhhNhNubah}(h]h ]h"]h$]h&]refurijuh1hhj~ubh 有 }(hj~hhhNhNubj)}(h``git send-email``h]hgit send-email}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj~ubh 的交互式教程。}(hj~hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKhj_hhubh)}(h,如果你選擇不用 ``git send-email`` :h](h如果你選擇不用 }(hjhhhNhNubj)}(h``git send-email``h]hgit send-email}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh :}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKhj_hhubh)}(hg如果你使用剪切-粘貼你的補丁,小心你的編輯器的自動換行功能破壞你的補丁h]h)}(hjh]hg如果你使用剪切-粘貼你的補丁,小心你的編輯器的自動換行功能破壞你的補丁}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1hhj_hhhhhNubh)}(hXR不要將補丁作爲MIME編碼的附件,不管是否壓縮。很多流行的郵件軟件不 是任何時候都將MIME編碼的附件當作純文本發送的,這會使得別人無法在你的 代碼中加評論。另外,MIME編碼的附件會讓Linus多花一點時間來處理,這就 降低了你的改動被接受的可能性。h]hXR不要將補丁作爲MIME編碼的附件,不管是否壓縮。很多流行的郵件軟件不 是任何時候都將MIME編碼的附件當作純文本發送的,這會使得別人無法在你的 代碼中加評論。另外,MIME編碼的附件會讓Linus多花一點時間來處理,這就 降低了你的改動被接受的可能性。}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj_hhubh)}(hj例外:如果你的郵路損壞了補丁,那麼有人可能會要求你使用MIME重新發送補丁。h]hj例外:如果你的郵路損壞了補丁,那麼有人可能會要求你使用MIME重新發送補丁。}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj_hhubh)}(h請參閱 Documentation/translations/zh_CN/process/email-clients.rst 以獲取有關配置電子郵件客戶端以使其不受影響地發送補丁的提示。h]h請參閱 Documentation/translations/zh_CN/process/email-clients.rst 以獲取有關配置電子郵件客戶端以使其不受影響地發送補丁的提示。}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj_hhubeh}(h]mimeah ]h"]O不要mime編碼,不要鏈接,不要壓縮,不要附件,只要純文本ah$]h&]uh1jhjhhhhhKubj)}(hhh](j)}(h回覆審閱意見h]h回覆審閱意見}(hj/ hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj, hhhhhKubh)}(hX你的補丁幾乎肯定會得到審閱者對補丁改進方法的評論(以回覆郵件的形式)。您必須 對這些評論作出回應;讓補丁被忽略的一個好辦法就是忽略審閱者的意見。直接回復郵 件來回應意見即可。不會導致代碼更改的意見或問題幾乎肯定會帶來註釋或變更日誌的 改變,以便下一個審閱者更好地瞭解正在發生的事情。h]hX你的補丁幾乎肯定會得到審閱者對補丁改進方法的評論(以回覆郵件的形式)。您必須 對這些評論作出回應;讓補丁被忽略的一個好辦法就是忽略審閱者的意見。直接回復郵 件來回應意見即可。不會導致代碼更改的意見或問題幾乎肯定會帶來註釋或變更日誌的 改變,以便下一個審閱者更好地瞭解正在發生的事情。}(hj= hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhj, hhubh)}(hX一定要告訴審閱者你在做什麼改變,並感謝他們的時間。代碼審閱是一個累人且耗時的 過程,審閱者有時會變得暴躁。即使在這種情況下,也要禮貌地回應並解決他們指出的 問題。當發送下一版時,在封面郵件或獨立補丁里加上 ``patch changelog`` 說明與 前一版本的不同之處(參見 :ref:`zh_the_canonical_patch_format` )。h](hX/一定要告訴審閱者你在做什麼改變,並感謝他們的時間。代碼審閱是一個累人且耗時的 過程,審閱者有時會變得暴躁。即使在這種情況下,也要禮貌地回應並解決他們指出的 問題。當發送下一版時,在封面郵件或獨立補丁里加上 }(hjK hhhNhNubj)}(h``patch changelog``h]hpatch changelog}(hjS hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjK ubh0 說明與 前一版本的不同之處(參見 }(hjK hhhNhNubh)}(h$:ref:`zh_the_canonical_patch_format`h]j)}(hjg h]hzh_the_canonical_patch_format}(hji hhhNhNubah}(h]h ](jstdstd-refeh"]h$]h&]uh1jhje ubah}(h]h ]h"]h$]h&]refdocj refdomainjs reftyperef refexplicitrefwarnj!zh_the_canonical_patch_formatuh1hhhhMhjK ubh )。}(hjK hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhMhj, hhubj)}(h.. _tw_resend_reminders:h]h}(h]h ]h"]h$]h&]j tw-resend-remindersuh1jhMhj, hhhhubeh}(h]id7ah ]h"]回覆審閱意見ah$]h&]uh1jhjhhhhhKubj)}(hhh](j)}(h不要泄氣或不耐煩h]h不要泄氣或不耐煩}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj hhhhhMubh)}(hc提交更改後,請耐心等待。審閱者是大忙人,可能無法立即審閱您的補丁。h]hc提交更改後,請耐心等待。審閱者是大忙人,可能無法立即審閱您的補丁。}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhj hhubh)}(hXt曾幾何時,補丁曾在沒收到評論的情況下消失在虛空中,但現在開發過程應該更加順利了。 您應該在一週左右的時間內收到評論;如果沒有收到評論,請確保您已將補丁發送 到正確的位置。在重新提交或聯繫審閱者之前至少等待一週——在諸如合併窗口之類的 繁忙時間可能更長。h]hXt曾幾何時,補丁曾在沒收到評論的情況下消失在虛空中,但現在開發過程應該更加順利了。 您應該在一週左右的時間內收到評論;如果沒有收到評論,請確保您已將補丁發送 到正確的位置。在重新提交或聯繫審閱者之前至少等待一週——在諸如合併窗口之類的 繁忙時間可能更長。}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhj hhubh)}(hM在等了幾個星期後,用帶RESEND的主題重發補丁也是可以的::h]hL在等了幾個星期後,用帶RESEND的主題重發補丁也是可以的:}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhj hhubjW)}(h2[PATCH Vx RESEND] sub/sys: Condensed patch summaryh]h2[PATCH Vx RESEND] sub/sys: Condensed patch summary}hj sbah}(h]h ]h"]h$]h&]hhuh1jVhhhMhj hhubh)}(h當你發佈補丁(系列)修改版的時候,不要加上“RESEND”——“RESEND”只適用於重 新提交之前未經修改的補丁(系列)。h]h當你發佈補丁(系列)修改版的時候,不要加上“RESEND”——“RESEND”只適用於重 新提交之前未經修改的補丁(系列)。}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhj hhubeh}(h](j id8eh ]h"](不要泄氣或不耐煩tw_resend_reminderseh$]h&]uh1jhjhhhhhMj}j j sj}j j subj)}(hhh](j)}(h主題中包含 PATCHh]h主題中包含 PATCH}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj hhhhhMubh)}(h由於到Linus和linux-kernel的電子郵件流量很高,通常會在主題行前面加上[PATCH] 前綴。這使Linus和其他內核開發人員更容易將補丁與其他電子郵件討論區分開。h]h由於到Linus和linux-kernel的電子郵件流量很高,通常會在主題行前面加上[PATCH] 前綴。這使Linus和其他內核開發人員更容易將補丁與其他電子郵件討論區分開。}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhM!hj hhubh)}(h+``git send-email`` 會自動爲你加上。h](j)}(h``git send-email``h]hgit send-email}(hj' hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj# ubh 會自動爲你加上。}(hj# hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhM$hj hhubeh}(h]patchah ]h"]主題中包含 patchah$]h&]uh1jhjhhhhhMubj)}(hhh](j)}(h-簽署你的作品——開發者來源認證h]h-簽署你的作品——開發者來源認證}(hjJ hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjG hhhhhM'ubh)}(h爲了加強對誰做了何事的追蹤,尤其是對那些透過好幾層維護者才最終到達的補丁,我 們在通過郵件發送的補丁上引入了“簽署(sign-off)”流程。h]h爲了加強對誰做了何事的追蹤,尤其是對那些透過好幾層維護者才最終到達的補丁,我 們在通過郵件發送的補丁上引入了“簽署(sign-off)”流程。}(hjX hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhM)hjG hhubh)}(h“簽署”是在補丁註釋最後的一行簡單文字,認證你編寫了它或者其他 人有權力將它作爲開放源代碼的補丁傳遞。規則很簡單:如果你能認證如下信息:h]h“簽署”是在補丁註釋最後的一行簡單文字,認證你編寫了它或者其他 人有權力將它作爲開放源代碼的補丁傳遞。規則很簡單:如果你能認證如下信息:}(hjf hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhM,hjG hhubj)}(hhh](j)}(h開發者來源認證 1.1h]h開發者來源認證 1.1}(hjw hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjt hhhhhM0ubh)}(h3對於本項目的貢獻,我認證如下信息:h]h3對於本項目的貢獻,我認證如下信息:}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhM2hjt hhubj)}(hX](a) 這些貢獻是完全或者部分的由我創建,我有權利以文件中指出 的開放源代碼許可證提交它;或者 (b) 這些貢獻基於以前的工作,據我所知,這些以前的工作受恰當的開放 源代碼許可證保護,而且,根據文件中指出的許可證,我有權提交修改後的貢獻, 無論是完全還是部分由我創造,這些貢獻都使用同一個開放源代碼許可證 (除非我被允許用其它的許可證);或者 (c) 這些貢獻由認證(a),(b)或者(c)的人直接提供給我,而 且我沒有修改它。 (d) 我理解並同意這個項目和貢獻是公開的,貢獻的記錄(包括我 一起提交的個人記錄,包括sign-off)被永久維護並且可以和這個項目 或者開放源代碼的許可證同步地再發行。 h]henumerated_list)}(hhh](jd)}(h這些貢獻是完全或者部分的由我創建,我有權利以文件中指出 的開放源代碼許可證提交它;或者 h]h)}(h這些貢獻是完全或者部分的由我創建,我有權利以文件中指出 的開放源代碼許可證提交它;或者h]h這些貢獻是完全或者部分的由我創建,我有權利以文件中指出 的開放源代碼許可證提交它;或者}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhM4hj ubah}(h]h ]h"]h$]h&]uh1jchj ubjd)}(hX`這些貢獻基於以前的工作,據我所知,這些以前的工作受恰當的開放 源代碼許可證保護,而且,根據文件中指出的許可證,我有權提交修改後的貢獻, 無論是完全還是部分由我創造,這些貢獻都使用同一個開放源代碼許可證 (除非我被允許用其它的許可證);或者 h]h)}(hX_這些貢獻基於以前的工作,據我所知,這些以前的工作受恰當的開放 源代碼許可證保護,而且,根據文件中指出的許可證,我有權提交修改後的貢獻, 無論是完全還是部分由我創造,這些貢獻都使用同一個開放源代碼許可證 (除非我被允許用其它的許可證);或者h]hX_這些貢獻基於以前的工作,據我所知,這些以前的工作受恰當的開放 源代碼許可證保護,而且,根據文件中指出的許可證,我有權提交修改後的貢獻, 無論是完全還是部分由我創造,這些貢獻都使用同一個開放源代碼許可證 (除非我被允許用其它的許可證);或者}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhM7hj ubah}(h]h ]h"]h$]h&]uh1jchj ubjd)}(hk這些貢獻由認證(a),(b)或者(c)的人直接提供給我,而 且我沒有修改它。 h]h)}(hj這些貢獻由認證(a),(b)或者(c)的人直接提供給我,而 且我沒有修改它。h]hj這些貢獻由認證(a),(b)或者(c)的人直接提供給我,而 且我沒有修改它。}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhM<hj ubah}(h]h ]h"]h$]h&]uh1jchj ubjd)}(h我理解並同意這個項目和貢獻是公開的,貢獻的記錄(包括我 一起提交的個人記錄,包括sign-off)被永久維護並且可以和這個項目 或者開放源代碼的許可證同步地再發行。 h]h)}(h我理解並同意這個項目和貢獻是公開的,貢獻的記錄(包括我 一起提交的個人記錄,包括sign-off)被永久維護並且可以和這個項目 或者開放源代碼的許可證同步地再發行。h]h我理解並同意這個項目和貢獻是公開的,貢獻的記錄(包括我 一起提交的個人記錄,包括sign-off)被永久維護並且可以和這個項目 或者開放源代碼的許可證同步地再發行。}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhM?hj ubah}(h]h ]h"]h$]h&]uh1jchj ubeh}(h]h ]h"]h$]h&]enumtype loweralphaprefix(suffix)uh1j hj ubah}(h]h ]h"]h$]h&]uh1jhhhM4hjt hhubh)}(h那麼加入這樣一行::h]h那麼加入這樣一行:}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMChjt hhubjW)}(h@Signed-off-by: Random J Developer h]h@Signed-off-by: Random J Developer }hj sbah}(h]h ]h"]h$]h&]hhuh1jVhhhMEhjt hhubh)}(h使用你的真名(抱歉,不能使用假名或者匿名。)如果使用 ``git commit -s`` 的話 將會自動完成。撤銷也應當包含“Signed-off-by”, ``git revert -s`` 會幫你搞定。h](hO使用你的真名(抱歉,不能使用假名或者匿名。)如果使用 }(hj* hhhNhNubj)}(h``git commit -s``h]h git commit -s}(hj2 hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj* ubhI 的話 將會自動完成。撤銷也應當包含“Signed-off-by”, }(hj* hhhNhNubj)}(h``git revert -s``h]h git revert -s}(hjD hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj* ubh 會幫你搞定。}(hj* hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhMGhjt hhubh)}(h有些人會在最後加上額外的標籤。現在這些東西會被忽略,但是你可以這樣做,來標記 公司內部的過程,或者只是指出關於簽署的一些特殊細節。h]h有些人會在最後加上額外的標籤。現在這些東西會被忽略,但是你可以這樣做,來標記 公司內部的過程,或者只是指出關於簽署的一些特殊細節。}(hj\ hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMJhjt hhubh)}(hX作者簽署之後的任何其他簽署(Signed-off-by:'s)均來自處理和傳遞補丁的人員,但 未參與其開發。簽署鏈應當反映補丁傳播到維護者並最終傳播到Linus所經過的 **真實** 路徑,首個簽署指明單個作者的主要作者身份。h](h作者簽署之後的任何其他簽署(Signed-off-by:’s)均來自處理和傳遞補丁的人員,但 未參與其開發。簽署鏈應當反映補丁傳播到維護者並最終傳播到Linus所經過的 }(hjj hhhNhNubjo)}(h **真實**h]h真實}(hjr hhhNhNubah}(h]h ]h"]h$]h&]uh1jnhjj ubh@ 路徑,首個簽署指明單個作者的主要作者身份。}(hjj hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhMMhjt hhubeh}(h]id10ah ]h"]開發者來源認證 1.1ah$]h&]uh1jhjG 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:標籤是可選的。}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMnhj hhubh)}(h%被From:作者提交的補丁示例::h]h$被From:作者提交的補丁示例:}(hj- hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMphj hhubjW)}(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 }hj; sbah}(h]h ]h"]h$]h&]hhuh1jVhhhMrhj hhubh)}(h)被合作開發者提交的補丁示例::h]h(被合作開發者提交的補丁示例:}(hjI hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMzhj hhubjW)}(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 }hjW sbah}(h]h ]h"]h$]h&]hhuh1jVhhhM|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:}(hjp hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjm hhhhhMubh)}(hX.Reported-by: 給那些發現錯誤並報告錯誤的人致謝,它希望激勵他們在將來再次幫助 我們。請注意,如果bug是以私有方式報告的,那麼在使用Reported-by標籤之前,請 先請求許可。此標籤是爲Bug設計的;請不要將其用於感謝功能請求。h]hX.Reported-by: 給那些發現錯誤並報告錯誤的人致謝,它希望激勵他們在將來再次幫助 我們。請注意,如果bug是以私有方式報告的,那麼在使用Reported-by標籤之前,請 先請求許可。此標籤是爲Bug設計的;請不要將其用於感謝功能請求。}(hj~ hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhjm hhubh)}(hTested-by: 標籤表示補丁已由指定的人(在某些環境中)成功測試。這個標籤通知 維護人員已經執行了一些測試,爲將來的補丁提供了一種定位測試人員的方法,並彰顯測試人員的功勞。h]hTested-by: 標籤表示補丁已由指定的人(在某些環境中)成功測試。這個標籤通知 維護人員已經執行了一些測試,爲將來的補丁提供了一種定位測試人員的方法,並彰顯測試人員的功勞。}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhjm hhubh)}(hhReviewed-by:根據審閱者的監督聲明,表明該補丁已被審閱並被認爲是可接受的:h]hhReviewed-by:根據審閱者的監督聲明,表明該補丁已被審閱並被認爲是可接受的:}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhjm 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](jd)}(hn我已經對這個補丁進行了一次技術審閱,以評估它是否適合被包含到 主線內核中。 h]h)}(hm我已經對這個補丁進行了一次技術審閱,以評估它是否適合被包含到 主線內核中。h]hm我已經對這個補丁進行了一次技術審閱,以評估它是否適合被包含到 主線內核中。}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhj ubah}(h]h ]h"]h$]h&]uh1jchj ubjd)}(h與補丁相關的任何問題、顧慮或問題都已反饋給提交者。我對提交者對 我的評論的回應感到滿意。 h]h)}(h與補丁相關的任何問題、顧慮或問題都已反饋給提交者。我對提交者對 我的評論的回應感到滿意。h]h與補丁相關的任何問題、顧慮或問題都已反饋給提交者。我對提交者對 我的評論的回應感到滿意。}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhj ubah}(h]h ]h"]h$]h&]uh1jchj ubjd)}(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&]uh1jchj ubjd)}(h雖然我已經審閱了補丁並認爲它是健全的,但我不會(除非另有明確 說明)作出任何保證或擔保它會在任何給定情況下實現其規定的目的 或正常運行。 h]h)}(h雖然我已經審閱了補丁並認爲它是健全的,但我不會(除非另有明確 說明)作出任何保證或擔保它會在任何給定情況下實現其規定的目的 或正常運行。h]h雖然我已經審閱了補丁並認爲它是健全的,但我不會(除非另有明確 說明)作出任何保證或擔保它會在任何給定情況下實現其規定的目的 或正常運行。}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhj ubah}(h]h ]h"]h$]h&]uh1jchj 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:標籤由已知了解主題區域並執行徹底檢查的審閱者提供時,通常會增加 補丁進入內核的可能性。}(hj: hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhj hhubh)}(hX一旦從測試人員或審閱者的“Tested-by”和“Reviewed-by”標籤出現在郵件列表中, 作者應在發送下一個版本時將其添加到適用的補丁中。但是,如果補丁在以下版本中發 生了實質性更改,這些標籤可能不再適用,因此應該刪除。通常,在補丁更改日誌中 (在 ``---`` 分隔符之後)應該提到刪除某人的測試者或審閱者標籤。h](hXS一旦從測試人員或審閱者的“Tested-by”和“Reviewed-by”標籤出現在郵件列表中, 作者應在發送下一個版本時將其添加到適用的補丁中。但是,如果補丁在以下版本中發 生了實質性更改,這些標籤可能不再適用,因此應該刪除。通常,在補丁更改日誌中 (在 }(hjH hhhNhNubj)}(h``---``h]h---}(hjP hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjH ubhL 分隔符之後)應該提到刪除某人的測試者或審閱者標籤。}(hjH hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhMhj hhubh)}(hXXSuggested-by: 表示補丁的想法是由指定的人提出的,並確保將此想法歸功於指定的 人。請注意,未經許可,不得添加此標籤,特別是如果該想法未在公共論壇上發佈。 也就是說,如果我們勤快地致謝創意提供者,他們將受到鼓舞,很有希望在未來再次 幫助我們。h]hXXSuggested-by: 表示補丁的想法是由指定的人提出的,並確保將此想法歸功於指定的 人。請注意,未經許可,不得添加此標籤,特別是如果該想法未在公共論壇上發佈。 也就是說,如果我們勤快地致謝創意提供者,他們將受到鼓舞,很有希望在未來再次 幫助我們。}(hjh hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhj hhubh)}(hXHFixes: 指示補丁修復了之前提交的一個問題。它可以便於確定錯誤的來源,這有助於 檢查錯誤修復。這個標籤還幫助穩定內核團隊確定應該接收修復的穩定內核版本。這是 指示補丁修復的錯誤的首選方法。請參閱 :ref:`zh_describe_changes` 瞭解更多信息。h](hXFixes: 指示補丁修復了之前提交的一個問題。它可以便於確定錯誤的來源,這有助於 檢查錯誤修復。這個標籤還幫助穩定內核團隊確定應該接收修復的穩定內核版本。這是 指示補丁修復的錯誤的首選方法。請參閱 }(hjv hhhNhNubh)}(h:ref:`zh_describe_changes`h]j)}(hj h]hzh_describe_changes}(hj hhhNhNubah}(h]h ](jstdstd-refeh"]h$]h&]uh1jhj~ ubah}(h]h ]h"]h$]h&]refdocj refdomainj reftyperef refexplicitrefwarnj!zh_describe_changesuh1hhhhMhjv ubh 瞭解更多信息。}(hjv 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&]uh1jhjm 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標準補丁格式}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj hhhhhMubh)}(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}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh} 進行正確的補丁格式化。但是,這些工具無法創建 必要的文本,因此請務必閱讀下面的說明。}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhMhj hhubh)}(h標準的補丁標題行是::h]h標準的補丁標題行是:}(hj2hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhj hhubjW)}(h2Subject: [PATCH 001/123] 子系統:一句話概述h]h2Subject: [PATCH 001/123] 子系統:一句話概述}hj@sbah}(h]h ]h"]h$]h&]hhuh1jVhhhMhj hhubh)}(h*標準補丁的信體包含如下部分:h]h*標準補丁的信體包含如下部分:}(hjNhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhj hhubj)}(hX- 一個 ``from`` 行指出補丁作者。後跟空行(僅當發送補丁的人不是作者時才需要)。 - 說明文字,每行最長75列,這將被複制到永久變更日誌來描述這個補丁。 - 一個空行 - 上述的 ``Signed-off-by:`` 行,也將出現在更改日誌中。 - 只包含 ``---`` 的標記線。 - 任何其他不適合放在變更日誌的註釋。 - 實際補丁( ``diff`` 輸出)。 h]j_)}(hhh](jd)}(hn一個 ``from`` 行指出補丁作者。後跟空行(僅當發送補丁的人不是作者時才需要)。 h]h)}(hm一個 ``from`` 行指出補丁作者。後跟空行(僅當發送補丁的人不是作者時才需要)。h](h一個 }(hjghhhNhNubj)}(h``from``h]hfrom}(hjohhhNhNubah}(h]h ]h"]h$]h&]uh1jhjgubh^ 行指出補丁作者。後跟空行(僅當發送補丁的人不是作者時才需要)。}(hjghhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhMhjcubah}(h]h ]h"]h$]h&]uh1jchj`ubjd)}(h`說明文字,每行最長75列,這將被複制到永久變更日誌來描述這個補丁。 h]h)}(h_說明文字,每行最長75列,這將被複制到永久變更日誌來描述這個補丁。h]h_說明文字,每行最長75列,這將被複制到永久變更日誌來描述這個補丁。}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhjubah}(h]h ]h"]h$]h&]uh1jchj`ubjd)}(h 一個空行 h]h)}(h 一個空行h]h 一個空行}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhjubah}(h]h ]h"]h$]h&]uh1jchj`ubjd)}(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&]uh1jchj`ubjd)}(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&]uh1jchj`ubjd)}(h4任何其他不適合放在變更日誌的註釋。 h]h)}(h3任何其他不適合放在變更日誌的註釋。h]h3任何其他不適合放在變更日誌的註釋。}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhjubah}(h]h ]h"]h$]h&]uh1jchj`ubjd)}(h&實際補丁( ``diff`` 輸出)。 h]h)}(h%實際補丁( ``diff`` 輸出)。h](h實際補丁( }(hj-hhhNhNubj)}(h``diff``h]hdiff}(hj5hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj-ubh 輸出)。}(hj-hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhMhj)ubah}(h]h ]h"]h$]h&]uh1jchj`ubeh}(h]h ]h"]h$]h&]jjuh1j^hhhMhj\ubah}(h]h ]h"]h$]h&]uh1jhhhMhj hhubh)}(h標題行的格式,使得對標題行按字母序排序非常的容易——很多郵件客戶端都 可以支持——因爲序列號是用零填充的,所以按數字排序和按字母排序是一樣的。h]h標題行的格式,使得對標題行按字母序排序非常的容易——很多郵件客戶端都 可以支持——因爲序列號是用零填充的,所以按數字排序和按字母排序是一樣的。}(hj_hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhj hhubh)}(hN郵件標題中的“子系統”標識哪個內核子系統將被打補丁。h]hN郵件標題中的“子系統”標識哪個內核子系統將被打補丁。}(hjmhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhj hhubh)}(hX郵件標題中的“一句話概述”扼要的描述郵件中的補丁。“一句話概述” 不應該是一個文件名。對於一個補丁系列(“補丁系列”指一系列的多個相關補 丁),不要對每個補丁都使用同樣的“一句話概述”。h]hX郵件標題中的“一句話概述”扼要的描述郵件中的補丁。“一句話概述” 不應該是一個文件名。對於一個補丁系列(“補丁系列”指一系列的多個相關補 丁),不要對每個補丁都使用同樣的“一句話概述”。}(hj{hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhj hhubh)}(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&]uh1hhhhMhj hhubh)}(h出於這些原因,概述必須不超過70-75個字符,並且必須描述補丁的更改以及爲 什麼需要補丁。既要簡潔又要描述性很有挑戰性,但寫得好的概述應該這樣。h]h出於這些原因,概述必須不超過70-75個字符,並且必須描述補丁的更改以及爲 什麼需要補丁。既要簡潔又要描述性很有挑戰性,但寫得好的概述應該這樣。}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhj hhubh)}(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&]uh1hhhhMhj hhubh)}(h一些標題的例子::h]h一些標題的例子:}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhj hhubjW)}(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}hjsbah}(h]h ]h"]h$]h&]hhuh1jVhhhMhj hhubh)}(hA``From`` 行是信體裏的最上面一行,具有如下格式::h](j)}(h``From``h]hFrom}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh8 行是信體裏的最上面一行,具有如下格式:}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhMhj hhubjW)}(h'From: Patch Author h]h'From: Patch Author }hj!sbah}(h]h ]h"]h$]h&]hhuh1jVhhhMhj hhubh)}(h``From`` 行指明在永久改動日誌裏,誰會被確認爲作者。如果沒有 ``From`` 行,那 麼郵件頭裏的 ``From:`` 行會被用來決定改動日誌中的作者。h](j)}(h``From``h]hFrom}(hj3hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj/ubhM 行指明在永久改動日誌裏,誰會被確認爲作者。如果沒有 }(hj/hhhNhNubj)}(h``From``h]hFrom}(hjEhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj/ubh 行,那 麼郵件頭裏的 }(hj/hhhNhNubj)}(h ``From:``h]hFrom:}(hjWhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj/ubh1 行會被用來決定改動日誌中的作者。}(hj/hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhMhj hhubh)}(hX說明文字將會被提交到永久的源代碼改動日誌裏,因此應針對那些早已經不記得和這 個補丁相關的討論細節的讀者。包括補丁處理的故障症狀(內核日誌消息、oops消息 等),這對於可能正在搜索提交日誌以查找適用補丁的人特別有用。文本應該寫得如 此詳細,以便在數週、數月甚至數年後閱讀時,能夠爲讀者提供所需的細節信息,以 掌握創建補丁的 **原因** 。h](hX說明文字將會被提交到永久的源代碼改動日誌裏,因此應針對那些早已經不記得和這 個補丁相關的討論細節的讀者。包括補丁處理的故障症狀(內核日誌消息、oops消息 等),這對於可能正在搜索提交日誌以查找適用補丁的人特別有用。文本應該寫得如 此詳細,以便在數週、數月甚至數年後閱讀時,能夠爲讀者提供所需的細節信息,以 掌握創建補丁的 }(hjohhhNhNubjo)}(h **原因**h]h原因}(hjwhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhjoubh 。}(hjohhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhMhj hhubh)}(h如果一個補丁修復了一個編譯失敗,那麼可能不需要包含 *所有* 編譯失敗; 只要足夠讓搜索補丁的人能夠找到它就行了。與概述一樣,既要簡潔又要描述性。h](hL如果一個補丁修復了一個編譯失敗,那麼可能不需要包含 }(hjhhhNhNubj)}(h*所有*h]h所有}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh} 編譯失敗; 只要足夠讓搜索補丁的人能夠找到它就行了。與概述一樣,既要簡潔又要描述性。}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhMhj hhubh)}(ho``---`` 標記行對於補丁處理工具要找到哪裏是改動日誌信息的結束,是不可缺少 的。h](j)}(h``---``h]h---}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubhh 標記行對於補丁處理工具要找到哪裏是改動日誌信息的結束,是不可缺少 的。}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhM hj hhubh)}(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}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh1 對於比較大的補 丁特別有用。 使用 }(hjhhhNhNubj)}(h ``diffstat``h]hdiffstat}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh 的選項 }(hjhhhNhNubj)}(h``-p 1 -w 70``h]h -p 1 -w 70}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh 這樣文件名就會從內核源代碼樹的目錄開始 ,不會佔用太寬的空間(很容易適合80列的寬度,也許會有一些縮進。) ( }(hjhhhNhNubj)}(h``git``h]hgit}(hj-hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh' 默認會生成合適的diffstat。)}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhMhj hhubh)}(h其餘那些只適用於當時或者與維護者相關的註解,不合適放到永久的改動日誌裏的,也 應該放這裏。較好的例子就是 ``補丁更改記錄`` ,記錄了v1和v2版本補丁之間的差異。h](h其餘那些只適用於當時或者與維護者相關的註解,不合適放到永久的改動日誌裏的,也 應該放這裏。較好的例子就是 }(hjEhhhNhNubj)}(h``補丁更改記錄``h]h補丁更改記錄}(hjMhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjEubh2 ,記錄了v1和v2版本補丁之間的差異。}(hjEhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhMhj hhubh)}(hXm請將此信息放在將變更日誌與補丁的其餘部分分隔開的 ``---`` 行 **之後** 。版本 信息不是提交到git樹的變更日誌的一部分。只是供審閱人員使用的附加信息。如果將 其放置在提交標記上方,則需要手動交互才能將其刪除。如果它位於分隔線以下,則在 應用補丁時會自動剝離::h](hI請將此信息放在將變更日誌與補丁的其餘部分分隔開的 }(hjehhhNhNubj)}(h``---``h]h---}(hjmhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjeubh 行 }(hjehhhNhNubjo)}(h **之後**h]h之後}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jnhjeubhX  。版本 信息不是提交到git樹的變更日誌的一部分。只是供審閱人員使用的附加信息。如果將 其放置在提交標記上方,則需要手動交互才能將其刪除。如果它位於分隔線以下,則在 應用補丁時會自動剝離:}(hjehhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhMhj hhubjW)}(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&]hhuh1jVhhhMhj hhubh)}(hH在後面的參考資料中能看到正確補丁格式的更多細節。h]hH在後面的參考資料中能看到正確補丁格式的更多細節。}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhM'hj hhubj)}(h.. _tw_backtraces:h]h}(h]h ]h"]h$]h&]j  tw-backtracesuh1jhM8hj hhhhubj)}(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&]uh1hhhhM2hjhhubjW)}(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&]hhuh1jVhhhM5hjhhubj)}(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&]uh1jhj hhhhhM,j}j jsj}jjsubeh}(h](j id12eh ]h"](標準補丁格式tw_the_canonical_patch_formateh$]h&]uh1jhjhhhhhMj}jj sj}j j subj)}(hhh](j)}(h&明確回覆郵件頭(In-Reply-To)h]h&明確回覆郵件頭(In-Reply-To)}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjhhhhhM?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}(hj3hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj+ubhX\ ), 可以將補丁與以前的相關討論關聯起來,例如,將bug補丁鏈接到電子郵件和bug報告。 但是,對於多補丁系列,最好避免在回覆時使用鏈接到該系列的舊版本。這樣, 補丁的多個版本就不會成爲電子郵件客戶端中無法管理的引用樹。如果鏈接有用, 可以使用 }(hj+hhhNhNubh)}(hhttps://lore.kernel.org/h]hhttps://lore.kernel.org/}(hjEhhhNhNubah}(h]h ]h"]h$]h&]refurijGuh1hhj+ubhb 重定向器(例如,在封面電子郵件文本中) 鏈接到補丁系列的早期版本。}(hj+hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhMAhjhhubeh}(h]( in-reply-tojeh ]h"](&明確回覆郵件頭(in-reply-to)tw_explicit_in_reply_toeh$]h&]uh1jhjhhhhhM?j}jdjsj}jjsubj)}(hhh](j)}(h給出基礎樹信息h]h給出基礎樹信息}(hjlhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjihhhhhMIubh)}(hX?當其他開發人員收到您的補丁並開始審閱時,知道應該將您的工作放到代碼樹歷史記錄 中的什麼位置通常很有用。這對於自動化持續集成流水(CI)特別有用,這些流水線試 圖運行一系列測試,以便在維護人員開始審閱之前確定提交的質量。h]hX?當其他開發人員收到您的補丁並開始審閱時,知道應該將您的工作放到代碼樹歷史記錄 中的什麼位置通常很有用。這對於自動化持續集成流水(CI)特別有用,這些流水線試 圖運行一系列測試,以便在維護人員開始審閱之前確定提交的質量。}(hjzhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMKhjihhubh)}(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&]uh1hhhhMOhjihhubjW)}(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&]hhuh1jVhhhMRhjihhubh)}(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]hjihhubjW)}(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&]hhuh1jVhhhMahjihhubh)}(hG有關此選項的更多信息,請參閱 ``man git-format-patch`` 。h](h+有關此選項的更多信息,請參閱 }(hjhhhNhNubj)}(h``man git-format-patch``h]hman git-format-patch}(hj"hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh 。}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhMghjihhubh)}(h1``--base`` 功能是在2.9.0版git中引入的。h]h)}(hj<h](j)}(h ``--base``h]h--base}(hjAhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj>ubh' 功能是在2.9.0版git中引入的。}(hj>hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhMkhj:ubah}(h]h ]h"]h$]h&]uh1hhjihhhhhNubh)}(hXB如果您不使用git格式化補丁,仍然可以包含相同的 ``base-commit`` 尾註,以指示您 的工作所基於的樹的提交哈希。你應該在封面郵件或系列的第一個補丁中添加它,它應 該放在 ``---`` 行的下面或所有其他內容之後,即只在你的電子郵件簽名之前。h](hC如果您不使用git格式化補丁,仍然可以包含相同的 }(hj_hhhNhNubj)}(h``base-commit``h]h base-commit}(hjghhhNhNubah}(h]h ]h"]h$]h&]uh1jhj_ubh 尾註,以指示您 的工作所基於的樹的提交哈希。你應該在封面郵件或系列的第一個補丁中添加它,它應 該放在 }(hj_hhhNhNubj)}(h``---``h]h---}(hjyhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj_ubhU 行的下面或所有其他內容之後,即只在你的電子郵件簽名之前。}(hj_hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhMmhjihhubeh}(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&]uh1jhhhMxhjubj)}(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}(hjhhhNhNubah}(h]h ]h"]h$]h&]refurijuh1hhj ubh>}(hj hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhMxhj ubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhhhMxhjhhubj)}(hX}Greg Kroah-Hartman,“如何惹惱內核子系統維護人員” h](j)}(hBGreg Kroah-Hartman,“如何惹惱內核子系統維護人員”h]hBGreg Kroah-Hartman,“如何惹惱內核子系統維護人員”}(hj=hhhNhNubah}(h]h ]h"]h$]h&]uh1jhhhMhj9ubj)}(hhh](h)}(h0h](h<}(hjNhhhNhNubh)}(h.http://www.kroah.com/log/linux/maintainer.htmlh]h.http://www.kroah.com/log/linux/maintainer.html}(hjVhhhNhNubah}(h]h ]h"]h$]h&]refurijXuh1hhjNubh>}(hjNhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhM{hjKubh)}(h3h](h<}(hjohhhNhNubh)}(h1http://www.kroah.com/log/linux/maintainer-02.htmlh]h1http://www.kroah.com/log/linux/maintainer-02.html}(hjwhhhNhNubah}(h]h ]h"]h$]h&]refurijyuh1hhjoubh>}(hjohhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhM}hjKubh)}(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&]uh1hhhhMhjKubh)}(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&]uh1hhhhMhjKubh)}(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&]uh1hhhhMhjKubh)}(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&]uh1hhhhMhjKubeh}(h]h ]h"]h$]h&]uh1jhj9ubeh}(h]h ]h"]h$]h&]uh1jhhhMhjhhubj)}(h不!!!別再發巨型補丁炸彈給linux-kernel@vger.kernel.org的人們了! h](j)}(hU不!!!別再發巨型補丁炸彈給linux-kernel@vger.kernel.org的人們了!h](h0不!!!別再發巨型補丁炸彈給linux-}(hj$hhhNhNubh)}(hkernel@vger.kernelh]hkernel@vger.kernel}(hj,hhhNhNubah}(h]h ]h"]h$]h&]refurimailto:kernel@vger.kerneluh1hhj$ubh.org的人們了!}(hj$hhhNhNubeh}(h]h ]h"]h$]h&]uh1jhhhMhj ubj)}(hhh]h)}(hHh](h<}(hjIhhhNhNubh)}(hFhttps://lore.kernel.org/r/20050711.125305.08322243.davem@davemloft.neth]hFhttps://lore.kernel.org/r/20050711.125305.08322243.davem@davemloft.net}(hjQhhhNhNubah}(h]h ]h"]h$]h&]refurijSuh1hhjIubh>}(hjIhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhMhjFubah}(h]h ]h"]h$]h&]uh1jhj ubeh}(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}(hj|hhhNhNubah}(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}(hjhhhNhNubah}(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_handlerjOerror_encodingutf-8error_encoding_error_handlerbackslashreplace language_codeenrecord_dependenciesNconfigN id_prefixhauto_id_prefixid dump_settingsNdump_internalsNdump_transformsNdump_pseudo_xmlNexpose_internalsNstrict_visitorN_disable_configN_sourceh _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]jaunameids}(jjj)j&jjjjjjjrjjqjnj.j+j\jYj) j& j j j j j j jD jA j j j j jj jg j j j j jj jjj jj jjdjjcj`jjj!ju nametypes}(jj)jjjjrjqj.j\j) j j j jD j j jj j j jjj j jdjcjj!uh}(jjj&jjj%jjjjjjjnjj+jwjYj1j& j_j j, j j j j jA j j jG j jt jg j j jm j j j j jj jjjjjjj`jjjijju footnote_refs} citation_refs} autofootnotes]autofootnote_refs]symbol_footnotes]symbol_footnote_refs] footnotes] citations]autofootnote_startKsymbol_footnote_startK id_counter collectionsCounter}j]KsRparse_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&]levelKtypeINFOsourcehlineKuh1jubj)}(hhh]h)}(hhh]h9Hyperlink target "tw-describe-changes" is not referenced.}hjsbah}(h]h ]h"]h$]h&]uh1hhjubah}(h]h ]h"]h$]h&]levelKtypejsourcehlineKBuh1jubj)}(hhh]h)}(hhh]h6Hyperlink target "tw-split-changes" is not referenced.}hjsbah}(h]h ]h"]h$]h&]uh1hhjubah}(h]h ]h"]h$]h&]levelKtypejsourcehlineKuh1jubj)}(hhh]h)}(hhh]h9Hyperlink target "tw-resend-reminders" is not referenced.}hjsbah}(h]h ]h"]h$]h&]uh1hhj ubah}(h]h ]h"]h$]h&]levelKtypejsourcehlineMuh1jubj)}(hhh]h)}(hhh]hCHyperlink target "tw-the-canonical-patch-format" is not referenced.}hj(sbah}(h]h ]h"]h$]h&]uh1hhj%ubah}(h]h ]h"]h$]h&]levelKtypejsourcehlineMuh1jubj)}(hhh]h)}(hhh]h3Hyperlink target "tw-backtraces" is not referenced.}hjBsbah}(h]h ]h"]h$]h&]uh1hhj?ubah}(h]h ]h"]h$]h&]levelKtypejsourcehlineM8uh1jubj)}(hhh]h)}(hhh]h=Hyperlink target "tw-explicit-in-reply-to" is not referenced.}hj\sbah}(h]h ]h"]h$]h&]uh1hhjYubah}(h]h ]h"]h$]h&]levelKtypejsourcehlineMKuh1jube transformerN include_log]?Documentation/translations/zh_TW/process/submitting-patches.rst(NNNNta decorationNhhub.