.. SPDX-License-Identifier: GPL-2.0-or-later .. include:: ../disclaimer-zh_TW.rst .. _tw_submittingpatches: :Original: Documentation/process/submitting-patches.rst :è¯è€…: - é¾å®‡ TripleX Chung <xxx.phy@gmail.com> - 時奎亮 Alex Shi <alexs@kernel.org> - å³æƒ³æˆ Wu XiangCheng <bobwxc@email.cn> :æ ¡è¯: - æŽé™½ Li Yang <leoyang.li@nxp.com> - çŽ‹è° Wang Cong <xiyou.wangcong@gmail.com> - 胡皓文 Hu Haowen <2023002089@link.tyut.edu.cn> æ交補ä¸ï¼šå¦‚ä½•è®“ä½ çš„æ”¹å‹•é€²å…¥å…§æ ¸ ================================ å°æ–¼æƒ³è¦å°‡æ”¹å‹•æ交到 Linux å…§æ ¸çš„å€‹äººæˆ–è€…å…¬å¸ä¾†èªªï¼Œå¦‚æžœä¸ç†Ÿæ‚‰â€œè¦çŸ©â€ï¼Œ æ交的æµç¨‹æœƒè®“人ç•æ‡¼ã€‚本文檔包å«äº†ä¸€ç³»åˆ—建è°ï¼Œå¯ä»¥å¤§å¤§æé«˜ä½ çš„æ”¹å‹•è¢«æŽ¥å—的機會. 本文檔以較爲簡潔的行文給出了大é‡å»ºè°ã€‚é—œæ–¼å…§æ ¸é–‹ç™¼æµç¨‹å¦‚何進行的詳細信æ¯ï¼Œ åƒè¦‹ï¼š Documentation/translations/zh_CN/process/development-process.rst 。 Documentation/translations/zh_CN/process/submit-checklist.rst 給出了一系列 æ交補ä¸ä¹‹å‰è¦æª¢æŸ¥çš„äº‹é …ã€‚è¨å‚™æ¨¹ç›¸é—œçš„補ä¸ï¼Œè«‹åƒé–± Documentation/devicetree/bindings/submitting-patches.rst 。 本文檔å‡è¨æ‚¨æ£åœ¨ä½¿ç”¨ ``git`` æº–å‚™ä½ çš„è£œä¸ã€‚如果您ä¸ç†Ÿæ‚‰ ``git`` ,最好å¸ç¿’ å¦‚ä½•ä½¿ç”¨å®ƒï¼Œé€™å°‡ä½¿æ‚¨ä½œçˆ²å…§æ ¸é–‹ç™¼äººå“¡çš„ç”Ÿæ´»è®Šå¾—æ›´åŠ è¼•é¬†ã€‚ 部分å系統和ç¶è·äººå“¡çš„樹有一些關於其工作æµç¨‹å’Œè¦æ±‚çš„é¡å¤–ä¿¡æ¯ï¼Œè«‹åƒé–± Documentation/process/maintainer-handbooks.rst 。 ç²å–當å‰æºç¢¼æ¨¹ -------------- 如果您手é 沒有當å‰å…§æ ¸æºä»£ç¢¼çš„å˜å„²åº«ï¼Œè«‹ä½¿ç”¨ ``git`` ç²å–一份。您需è¦å…ˆç²å– 主線å˜å„²åº«ï¼Œå®ƒå¯ä»¥é€šéŽä»¥ä¸‹å‘½ä»¤æ‹‰å–:: git clone git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git 但是,請注æ„,您å¯èƒ½ä¸æƒ³ç›´æŽ¥é‡å°ä¸»ç·šæ¨¹é€²è¡Œé–‹ç™¼ã€‚大多數å系統ç¶è·äººå“¡é‹ 行自己的樹,並希望看到é‡å°é€™äº›æ¨¹æº–備的補ä¸ã€‚è«‹åƒè¦‹MAINTAINERS文件ä¸åç³» 統的 **T:** é …ä»¥æŸ¥æ‰¾è©²æ¨¹ï¼Œæˆ–è€…ç›´æŽ¥è©¢å•ç¶è·è€…該樹是å¦æœªåœ¨å…¶ä¸åˆ—出。 .. _tw_describe_changes: æè¿°ä½ çš„æ”¹å‹• ------------ æè¿°ä½ çš„å•é¡Œã€‚無論您的補ä¸æ˜¯ä¸€è¡ŒéŒ¯èª¤ä¿®å¾©é‚„是5000è¡Œæ–°åŠŸèƒ½ï¼Œéƒ½å¿…é ˆæœ‰ä¸€å€‹æ½›åœ¨ çš„å•é¡Œæ¿€å‹µæ‚¨å®Œæˆé€™é …工作。說æœå¯©é–±è€…相信有一個å•é¡Œå€¼å¾—解決,讓他們讀完第一段 後就能明白這一點。 æ述用戶å¯è¦‹çš„影響。直接崩潰和鎖定是相當有說æœåŠ›çš„,但並ä¸æ˜¯æ‰€æœ‰çš„錯誤都那麼 明目張膽。å³ä½¿åœ¨ä»£ç¢¼å¯©é–±æœŸé–“發ç¾äº†é€™å€‹å•é¡Œï¼Œä¹Ÿè¦æ述一下您èªçˆ²å®ƒå¯èƒ½å°ç”¨æˆ¶ç”¢ 生的影響。請記ä½ï¼Œå¤§å¤šæ•¸Linux安è£é‹è¡Œçš„å…§æ ¸ä¾†è‡ªäºŒç´šç©©å®šæ¨¹æˆ–ç‰¹å®šæ–¼ä¾›æ‡‰å•†/ç”¢å“ çš„æ¨¹ï¼Œåªå¾žä¸Šæ¸¸ç²¾é¸ç‰¹å®šçš„補ä¸ï¼Œå› æ¤è«‹åŒ…å«ä»»ä½•å¯ä»¥å¹«åŠ©æ‚¨å°‡æ›´æ”¹å®šä½åˆ°ä¸‹æ¸¸çš„內容: è§¸ç™¼çš„å ´æ™¯ã€DMESG的摘錄ã€å´©æ½°æè¿°ã€æ€§èƒ½è¿´æ¸ã€å»¶é²å°–峯ã€éŽ–定ç‰ã€‚ 質é‡å„ªåŒ–和權衡。如果您è²ç¨±åœ¨æ€§èƒ½ã€å…§å˜æ¶ˆè€—ã€å †æ£§ä½”用空間或二進制大å°æ–¹é¢æœ‰æ‰€ 改進,請包括支æŒå®ƒå€‘的數據。但也è¦æè¿°ä¸æ˜Žé¡¯çš„æˆæœ¬ã€‚優化通常ä¸æ˜¯é›¶æˆæœ¬çš„,而是 在CPUã€å…§å˜å’Œå¯è®€æ€§ä¹‹é–“進行權衡;或者,åšæŽ¢ç´¢æ€§çš„工作,在ä¸åŒçš„å·¥ä½œè² è¼‰ä¹‹é–“é€² 行權衡。請æ述優化的é 期缺點,以便審閱者å¯ä»¥æ¬Šè¡¡æˆæœ¬å’Œæ”¶ç›Šã€‚ æ出å•é¡Œä¹‹å¾Œï¼Œå°±è¦è©³ç´°åœ°æ述一下您實際在åšçš„技術細節。å°æ–¼å¯©é–±è€…來說,用簡練的 英語æ述代碼的變化是很é‡è¦çš„,以驗è‰ä»£ç¢¼çš„行爲是å¦ç¬¦åˆæ‚¨çš„æ„圖。 如果您將補ä¸æ述寫æˆâ€œæ¨™æº–æ ¼å¼â€ï¼Œå¯ä»¥å¾ˆå®¹æ˜“地作爲“æ交日誌â€æ”¾å…¥Linuxçš„æºä»£ 碼管ç†ç³»çµ± ``git`` ä¸ï¼Œé‚£éº¼ç¶è·äººå“¡å°‡éžå¸¸æ„Ÿè¬æ‚¨ã€‚ åƒè¦‹ :ref:`zh_the_canonical_patch_format` 。 æ¯å€‹è£œä¸åªè§£æ±ºä¸€å€‹å•é¡Œã€‚å¦‚æžœä½ çš„æè¿°é–‹å§‹è®Šé•·ï¼Œé€™å°±è¡¨æ˜Žä½ å¯èƒ½éœ€è¦æ‹†åˆ†ä½ 的補ä¸ã€‚ 請見 :ref:`zh_split_changes` 。 æ交或é‡æ–°æ交補ä¸æˆ–補ä¸ç³»åˆ—時,請包括完整的補ä¸èªªæ˜Žå’Œç†ç”±ã€‚ä¸è¦ åªèªªé€™æ˜¯è£œä¸ï¼ˆç³»åˆ—)的第幾版。ä¸è¦æœŸæœ›å系統ç¶è·äººå“¡å¼•ç”¨æ›´æ—©çš„補ä¸ç‰ˆæœ¬æˆ–引用 URL來查找補ä¸æ述並將其放入補ä¸ä¸ã€‚也就是說,補ä¸ï¼ˆç³»åˆ—)åŠå…¶æ述應該是ç¨ç«‹çš„。 這å°ç¶è·äººå“¡å’Œå¯©é–±è€…都有好處。一些審閱者å¯èƒ½ç”šè‡³æ²’有收到補ä¸çš„早期版本。 用祈使å¥æè¿°ä½ çš„è®Šæ›´ï¼Œä¾‹å¦‚â€œmake xyzzy do frotzâ€è€Œä¸æ˜¯â€œ[This patch]make xyzzy do frotzâ€æˆ–“[I]changed xyzzy to do frotzâ€ï¼Œå°±å¥½åƒä½ 在命令代碼庫改變 它的行爲一樣。 如果您想è¦å¼•ç”¨ä¸€å€‹ç‰¹å®šçš„æ交,ä¸è¦åªå¼•ç”¨æ交的SHA-1 ID。還請包括æ交的一行 摘è¦ï¼Œä»¥ä¾¿æ–¼å¯©é–±è€…çžè§£å®ƒæ˜¯é—œæ–¼ä»€éº¼çš„。例如:: Commit e21d2170f36602ae2708 ("video: remove unnecessary platform_set_drvdata()") removed the unnecessary platform_set_drvdata(), but left the variable "dev" unused, delete it. 您還應該確ä¿è‡³å°‘使用å‰12ä½SHA-1 IDã€‚å…§æ ¸å˜å„²åº«åŒ…å« *許多* å°è±¡ï¼Œä½¿è¼ƒçŸçš„ID 發生è¡çªçš„å¯èƒ½æ€§å¾ˆå¤§ã€‚記ä½ï¼Œå³ä½¿ç¾åœ¨ä¸æœƒèˆ‡æ‚¨çš„å…個å—符ID發生è¡çªï¼Œé€™ç¨®æƒ…æ³ ä¹Ÿå¯èƒ½åœ¨äº”年後改變。 如果該變更的相關討論或背景信æ¯å¯ä»¥åœ¨ç¶²ä¸ŠæŸ¥é–±ï¼Œè«‹åŠ 上“Link:â€æ¨™ç±¤æŒ‡å‘它。例如 ä½ çš„è£œä¸ä¿®å¾©äº†ä¸€å€‹ç¼ºé™·ï¼Œéœ€è¦æ·»åŠ 一個帶有URL的標籤指å‘郵件列表å˜æª”或缺陷跟蹤器 çš„ç›¸é—œå ±å‘Šï¼›å¦‚æžœè©²è£œä¸æ˜¯ç”±ä¸€äº›æ—©å…ˆéƒµä»¶åˆ—表討論或網絡上的記錄引起的,請指å‘它。 當éˆæŽ¥åˆ°éƒµä»¶åˆ—表å˜æª”時,請首é¸lore.kernel.org郵件å˜æª”æœå‹™ã€‚用郵件ä¸çš„ ``Message-ID`` é (去掉尖括號)å¯ä»¥å‰µå»ºéˆæŽ¥URL。例如:: Link: https://lore.kernel.org/r/30th.anniversary.repost@klaava.Helsinki.FI/ 請檢查該éˆæŽ¥ä»¥ç¢ºä¿å¯ç”¨ä¸”指å‘æ£ç¢ºçš„郵件。 ä¸éŽï¼Œåœ¨æ²’有外部資æºçš„情æ³ä¸‹ï¼Œä¹Ÿè¦å„˜é‡è®“ä½ çš„è§£é‡‹å¯ç†è§£ã€‚除了æ供郵件列表å˜æª”或 缺陷的URL之外,還è¦éœ€è¦ç¸½çµè©²è£œä¸çš„相關討論è¦é»žã€‚ 如果補ä¸ä¿®å¾©äº†ç‰¹å®šæ交ä¸çš„錯誤,例如使用 ``git bisct`` 發ç¾äº†ä¸€å€‹å•é¡Œï¼Œè«‹ä½¿ç”¨ 帶有å‰12個å—符SHA-1 ID的“Fixes:â€æ¨™ç±¤å’Œå–®è¡Œæ‘˜è¦ã€‚爲了簡化解æžè…³æœ¬ï¼Œä¸è¦å°‡è©² 標籤拆分爲多行,標籤ä¸å—“75列æ›è¡Œâ€è¦å‰‡çš„é™åˆ¶ã€‚例如:: Fixes: 54a4f0239f2e ("KVM: MMU: make kvm_mmu_zap_page() return the number of pages it actually freed") 下列 ``git config`` è¨ç½®å¯ä»¥è®“ ``git log``, ``git show`` å¢žåŠ ä¸Šè¿°é¢¨æ ¼çš„é¡¯ç¤ºæ ¼å¼:: [core] abbrev = 12 [pretty] fixes = Fixes: %h (\"%s\") 使用示例:: $ git log -1 --pretty=fixes 54a4f0239f2e Fixes: 54a4f0239f2e ("KVM: MMU: make kvm_mmu_zap_page() return the number of pages it actually freed") .. _tw_split_changes: æ‹†åˆ†ä½ çš„æ”¹å‹• ------------ å°‡æ¯å€‹ **é‚輯更改** 拆分æˆä¸€å€‹å–®ç¨çš„補ä¸ã€‚ ä¾‹å¦‚ï¼Œå¦‚æžœä½ çš„æ”¹å‹•è£åŒæ™‚有bugä¿®æ£å’Œæ€§èƒ½å„ªåŒ–,那麼把這些改動拆分到兩個或 者更多的補ä¸æ–‡ä»¶ä¸ã€‚å¦‚æžœä½ çš„æ”¹å‹•åŒ…å«å°APIçš„ä¿®æ”¹ï¼Œä¸¦ä¸”å¢žåŠ äº†ä¸€å€‹ä½¿ç”¨è©²æ–°API 的驅動,那麼把這些修改分æˆå…©å€‹è£œä¸ã€‚ å¦ä¸€æ–¹é¢ï¼Œå¦‚æžœä½ å°‡ä¸€å€‹å–®ç¨çš„改動åšæˆå¤šå€‹è£œä¸æ–‡ä»¶ï¼Œé‚£éº¼å°‡å®ƒå€‘åˆä½µæˆä¸€å€‹ å–®ç¨çš„補ä¸æ–‡ä»¶ã€‚這樣一個é‚輯上單ç¨çš„改動åªè¢«åŒ…å«åœ¨ä¸€å€‹è£œä¸æ–‡ä»¶è£ã€‚ 需è¦è¨˜ä½çš„一點是,æ¯å€‹è£œä¸çš„更改都應易於ç†è§£ï¼Œä»¥ä¾¿å¯©é–±è€…é©—è‰ã€‚æ¯å€‹è£œä¸éƒ½æ‡‰è©² å°å…¶åƒ¹å€¼é€²è¡Œé—¡è¿°ã€‚ 如果有一個補ä¸ä¾è³´å¦å¤–一個補ä¸ä¾†å®Œæˆå®ƒçš„改動,那沒å•é¡Œã€‚ç›´æŽ¥åœ¨ä½ çš„è£œ ä¸æè¿°è£æŒ‡å‡º **“這個補ä¸ä¾è³´æŸè£œä¸â€** 就好了。 在將您的更改劃分爲一系列補ä¸æ™‚,è¦ç‰¹åˆ¥æ³¨æ„確ä¿å…§æ ¸åœ¨æ‡‰ç”¨ç³»åˆ—ä¸çš„æ¯å€‹è£œä¸ä¹‹å¾Œ 都能æ£å¸¸æ§‹å»ºå’Œé‹è¡Œã€‚使用 ``git bisect`` 來追蹤å•é¡Œçš„開發者å¯èƒ½æœƒåœ¨ä»»ä½•åœ°æ–¹åˆ† å‰²ä½ çš„è£œä¸ç³»åˆ—ï¼›å¦‚æžœä½ åœ¨ä¸é–“引入錯誤,他們ä¸æœƒæ„Ÿè¬ä½ 。 å¦‚æžœä½ ä¸èƒ½å°‡è£œä¸ç³»åˆ—濃縮得更å°ï¼Œé‚£éº¼æ¯æ¬¡å¤§ç´„發é€å‡º15個補ä¸ï¼Œç„¶å¾Œç‰å¾…審閱 和集æˆã€‚ æª¢æŸ¥ä½ çš„æ›´æ”¹é¢¨æ ¼ ---------------- 檢查您的補ä¸æ˜¯å¦é•å了基本樣å¼è¦å®šï¼Œè©³ç´°ä¿¡æ¯åƒè¦‹ Documentation/translations/zh_CN/process/coding-style.rst ä¸æ‰¾åˆ°ã€‚如果ä¸é€™æ¨£åšï¼Œåªæœƒæµªè²»å¯©é–±è€…çš„æ™‚é–“ï¼Œä¸¦ä¸”æœƒå°Žè‡´ä½ çš„è£œä¸è¢«æ‹’絕,甚至 å¯èƒ½æ²’有被閱讀。 一個é‡è¦çš„例外是在將代碼從一個文件移動到å¦ä¸€å€‹æ–‡ä»¶æ™‚——在這種情æ³ä¸‹ï¼Œæ‚¨ä¸æ‡‰ 該在移動代碼的åŒä¸€å€‹è£œä¸ä¸ä¿®æ”¹ç§»å‹•çš„代碼。這清楚地æ述了移動代碼和您的更改 的行爲。這大大有助於審閱實際差異,並å…許工具更好地跟蹤代碼本身的æ·å²ã€‚ 在æ交之å‰ï¼Œä½¿ç”¨è£œä¸æ¨£å¼æª¢æŸ¥ç¨‹åºæª¢æŸ¥è£œä¸ï¼ˆscripts/check patch.pl)。ä¸éŽï¼Œ 請注æ„,樣å¼æª¢æŸ¥ç¨‹åºæ‡‰è©²è¢«è¦–爲一個指å—,而ä¸æ˜¯ä½œçˆ²äººé¡žåˆ¤æ–·çš„替代å“。如果您 的代碼看起來更好,但有é•è¦è¡Œçˆ²ï¼Œé‚£éº¼æœ€å¥½åˆ¥ç®¡å®ƒã€‚ æª¢æŸ¥è€…å ±å‘Šä¸‰å€‹ç´šåˆ¥ï¼š - ERROR:很å¯èƒ½å‡ºéŒ¯çš„事情 - WARNING:需è¦ä»”ç´°å¯©é–±çš„äº‹é … - CHECK:需è¦æ€è€ƒçš„事情 æ‚¨æ‡‰è©²èƒ½å¤ åˆ¤æ–·æ‚¨çš„è£œä¸ä¸å˜åœ¨çš„所有é•è¦è¡Œçˆ²ã€‚ é¸æ“‡è£œä¸æ”¶ä»¶äºº -------------- 您應該總是知會任何補ä¸ç›¸æ‡‰ä»£ç¢¼çš„å系統ç¶è·äººå“¡ï¼›æŸ¥çœ‹ ç¶è·äººå“¡æ–‡ä»¶å’Œæºä»£ç¢¼ä¿®è¨‚æ·å²è¨˜éŒ„,以çžè§£é€™äº›ç¶è·äººå“¡æ˜¯èª°ã€‚腳本 scripts/get_maintainer.pl在這個æ¥é©Ÿä¸éžå¸¸æœ‰ç”¨ã€‚如果您找ä¸åˆ°æ£åœ¨å·¥ä½œçš„å系統 çš„ç¶è·äººå“¡ï¼Œé‚£éº¼Andrew Morton(akpm@linux-foundation.org)將充當最後的ç¶è· 人員。 您通常還應該é¸æ“‡è‡³å°‘一個郵件列表來接收補ä¸é›†çš„副本。linux-kernel@vger.kernel.org 是所有補ä¸çš„默èªåˆ—表,但是這個列表的æµé‡å·²ç¶“導致了許多開發人員ä¸å†çœ‹å®ƒã€‚ 在MAINTAINERS文件ä¸æŸ¥æ‰¾å系統特定的列表;您的補ä¸å¯èƒ½æœƒåœ¨é‚£è£å¾—到更多的關注。 ä¸éŽï¼Œè«‹ä¸è¦ç™¼é€åžƒåœ¾éƒµä»¶åˆ°ç„¡é—œçš„列表。 è¨±å¤šèˆ‡å…§æ ¸ç›¸é—œçš„åˆ—è¡¨è¨—ç®¡åœ¨vger.kernel.org上;您å¯ä»¥åœ¨ http://vger.kernel.org/vger-lists.html 上找到它們的列表。ä¸éŽï¼Œä¹Ÿæœ‰èˆ‡å…§æ ¸ç›¸é—œ 的列表託管在其他地方。 ä¸è¦ä¸€æ¬¡ç™¼é€è¶…éŽ15個補ä¸åˆ°vger郵件列表ï¼ï¼ï¼ï¼ Linus Torvalds是決定改動能å¦é€²å…¥ Linux å…§æ ¸çš„æœ€çµ‚è£æ±ºè€…。他的郵件地å€æ˜¯ torvalds@linux-foundation.org 。他收到的郵件很多,所以一般來說最好 **別** 給他發郵件。 如果您有修復å¯åˆ©ç”¨å®‰å…¨æ¼æ´žçš„補ä¸ï¼Œè«‹å°‡è©²è£œä¸ç™¼é€åˆ° security@kernel.org 。å°æ–¼ åš´é‡çš„bug,å¯ä»¥è€ƒæ…®çŸæœŸç¦ä»¤ä»¥å…許分銷商(有時間)å‘用戶發佈補ä¸ï¼›åœ¨é€™ç¨®æƒ…æ³ä¸‹ï¼Œ 顯然ä¸æ‡‰å°‡è£œä¸ç™¼é€åˆ°ä»»ä½•å…¬å…±åˆ—表。 åƒè¦‹ Documentation/translations/zh_CN/process/security-bugs.rst 。 ä¿®å¾©å·²ç™¼ä½ˆå…§æ ¸ä¸åš´é‡éŒ¯èª¤çš„補ä¸ç¨‹åºæ‡‰è©²æŠ„é€çµ¦ç©©å®šç‰ˆç¶è·äººå“¡ï¼Œæ–¹æ³•æ˜¯æŠŠä»¥ä¸‹åˆ—è¡Œ 放進補ä¸çš„籤準å€ï¼ˆæ³¨æ„,ä¸æ˜¯é›»å郵件收件人):: Cc: stable@vger.kernel.org 除了本文件之外,您還應該閱讀 Documentation/translations/zh_CN/process/stable-kernel-rules.rst 。 如果更改影響到用戶å´å…§æ ¸æŽ¥å£ï¼Œè«‹å‘手冊é ç¶è·äººå“¡ï¼ˆå¦‚ç¶è·äººå“¡æ–‡ä»¶ä¸æ‰€åˆ—ï¼‰ç™¼é€ æ‰‹å†Šé 補ä¸ï¼Œæˆ–至少發é€æ›´æ”¹é€šçŸ¥ï¼Œä»¥ä¾¿ä¸€äº›ä¿¡æ¯é€²å…¥æ‰‹å†Šé 。還應將用戶空間API 更改抄é€åˆ° linux-api@vger.kernel.org 。 ä¸è¦MIME編碼,ä¸è¦éˆæŽ¥ï¼Œä¸è¦å£“縮,ä¸è¦é™„件,åªè¦ç´”文本 ------------------------------------------------------ Linus å’Œå…¶ä»–çš„å…§æ ¸é–‹ç™¼è€…éœ€è¦é–±è®€å’Œè©•è«–ä½ æ交的改動。å°æ–¼å…§æ ¸é–‹ç™¼è€…來說 ,å¯ä»¥â€œå¼•ç”¨â€ä½ 的改動很é‡è¦ï¼Œä½¿ç”¨ä¸€èˆ¬çš„郵件工具,他們就å¯ä»¥åœ¨ä½ çš„ 代碼的任何ä½ç½®æ·»åŠ 評論。 å› çˆ²é€™å€‹åŽŸå› ï¼Œæ‰€æœ‰çš„æ交的補ä¸éƒ½æ˜¯éƒµä»¶ä¸â€œå…§åµŒâ€çš„。最簡單(和推薦)的方法就 是使用 ``git send-email`` 。https://git-send-email.io 有 ``git send-email`` 的交互å¼æ•™ç¨‹ã€‚ å¦‚æžœä½ é¸æ“‡ä¸ç”¨ ``git send-email`` : .. warning:: å¦‚æžœä½ ä½¿ç”¨å‰ªåˆ‡-ç²˜è²¼ä½ çš„è£œä¸ï¼Œå°å¿ƒä½ 的編輯器的自動æ›è¡ŒåŠŸèƒ½ç ´å£žä½ çš„è£œä¸ ä¸è¦å°‡è£œä¸ä½œçˆ²MIME編碼的附件,ä¸ç®¡æ˜¯å¦å£“縮。很多æµè¡Œçš„éƒµä»¶è»Ÿä»¶ä¸ æ˜¯ä»»ä½•æ™‚å€™éƒ½å°‡MIME編碼的附件當作純文本發é€çš„ï¼Œé€™æœƒä½¿å¾—åˆ¥äººç„¡æ³•åœ¨ä½ çš„ 代碼ä¸åŠ 評論。å¦å¤–,MIME編碼的附件會讓Linus多花一點時間來處ç†ï¼Œé€™å°± é™ä½Žäº†ä½ 的改動被接å—çš„å¯èƒ½æ€§ã€‚ ä¾‹å¤–ï¼šå¦‚æžœä½ çš„éƒµè·¯æ壞了補ä¸ï¼Œé‚£éº¼æœ‰äººå¯èƒ½æœƒè¦æ±‚ä½ ä½¿ç”¨MIMEé‡æ–°ç™¼é€è£œä¸ã€‚ è«‹åƒé–± Documentation/translations/zh_CN/process/email-clients.rst 以ç²å–有關é…置電å郵件客戶端以使其ä¸å—影響地發é€è£œä¸çš„æ示。 回覆審閱æ„見 ------------ ä½ çš„è£œä¸å¹¾ä¹Žè‚¯å®šæœƒå¾—到審閱者å°è£œä¸æ”¹é€²æ–¹æ³•çš„評論(以回覆郵件的形å¼ï¼‰ã€‚æ‚¨å¿…é ˆ å°é€™äº›è©•è«–作出回應;讓補ä¸è¢«å¿½ç•¥çš„一個好辦法就是忽略審閱者的æ„見。直接回復郵 件來回應æ„見å³å¯ã€‚ä¸æœƒå°Žè‡´ä»£ç¢¼æ›´æ”¹çš„æ„見或å•é¡Œå¹¾ä¹Žè‚¯å®šæœƒå¸¶ä¾†è¨»é‡‹æˆ–變更日誌的 改變,以便下一個審閱者更好地çžè§£æ£åœ¨ç™¼ç”Ÿçš„事情。 一定è¦å‘Šè¨´å¯©é–±è€…ä½ åœ¨åšä»€éº¼æ”¹è®Šï¼Œä¸¦æ„Ÿè¬ä»–們的時間。代碼審閱是一個累人且耗時的 éŽç¨‹ï¼Œå¯©é–±è€…有時會變得暴èºã€‚å³ä½¿åœ¨é€™ç¨®æƒ…æ³ä¸‹ï¼Œä¹Ÿè¦ç¦®è²Œåœ°å›žæ‡‰ä¸¦è§£æ±ºä»–們指出的 å•é¡Œã€‚當發é€ä¸‹ä¸€ç‰ˆæ™‚,在å°é¢éƒµä»¶æˆ–ç¨ç«‹è£œä¸é‡ŒåŠ 上 ``patch changelog`` 說明與 å‰ä¸€ç‰ˆæœ¬çš„ä¸åŒä¹‹è™•ï¼ˆåƒè¦‹ :ref:`zh_the_canonical_patch_format` )。 .. _tw_resend_reminders: ä¸è¦æ³„氣或ä¸è€ç…© ---------------- æ交更改後,請è€å¿ƒç‰å¾…。審閱者是大忙人,å¯èƒ½ç„¡æ³•ç«‹å³å¯©é–±æ‚¨çš„補ä¸ã€‚ 曾幾何時,補ä¸æ›¾åœ¨æ²’收到評論的情æ³ä¸‹æ¶ˆå¤±åœ¨è™›ç©ºä¸ï¼Œä½†ç¾åœ¨é–‹ç™¼éŽç¨‹æ‡‰è©²æ›´åŠ é †åˆ©äº†ã€‚ 您應該在一週左å³çš„時間內收到評論;如果沒有收到評論,請確ä¿æ‚¨å·²å°‡è£œä¸ç™¼é€ 到æ£ç¢ºçš„ä½ç½®ã€‚在é‡æ–°æ交或è¯ç¹«å¯©é–±è€…之å‰è‡³å°‘ç‰å¾…一週——在諸如åˆä½µçª—å£ä¹‹é¡žçš„ ç¹å¿™æ™‚é–“å¯èƒ½æ›´é•·ã€‚ 在ç‰äº†å¹¾å€‹æ˜ŸæœŸå¾Œï¼Œç”¨å¸¶RESEND的主題é‡ç™¼è£œä¸ä¹Ÿæ˜¯å¯ä»¥çš„:: [PATCH Vx RESEND] sub/sys: Condensed patch summary ç•¶ä½ ç™¼ä½ˆè£œä¸ï¼ˆç³»åˆ—)修改版的時候,ä¸è¦åŠ 上“RESENDâ€â€”—“RESENDâ€åªé©ç”¨æ–¼é‡ æ–°æ交之å‰æœªç¶“修改的補ä¸ï¼ˆç³»åˆ—)。 主題ä¸åŒ…å« PATCH ---------------- 由於到Linuså’Œlinux-kernelçš„é›»å郵件æµé‡å¾ˆé«˜ï¼Œé€šå¸¸æœƒåœ¨ä¸»é¡Œè¡Œå‰é¢åŠ 上[PATCH] å‰ç¶´ã€‚這使Linuså’Œå…¶ä»–å…§æ ¸é–‹ç™¼äººå“¡æ›´å®¹æ˜“å°‡è£œä¸èˆ‡å…¶ä»–é›»å郵件討論å€åˆ†é–‹ã€‚ ``git send-email`` æœƒè‡ªå‹•çˆ²ä½ åŠ ä¸Šã€‚ ç°½ç½²ä½ çš„ä½œå“——開發者來æºèªè‰ ------------------------------ çˆ²äº†åŠ å¼·å°èª°åšäº†ä½•äº‹çš„追蹤,尤其是å°é‚£äº›é€éŽå¥½å¹¾å±¤ç¶è·è€…æ‰æœ€çµ‚到é”的補ä¸ï¼Œæˆ‘ 們在通éŽéƒµä»¶ç™¼é€çš„補ä¸ä¸Šå¼•å…¥äº†â€œç°½ç½²ï¼ˆsign-off)â€æµç¨‹ã€‚ “簽署â€æ˜¯åœ¨è£œä¸è¨»é‡‹æœ€å¾Œçš„一行簡單文å—,èªè‰ä½ 編寫了它或者其他 人有權力將它作爲開放æºä»£ç¢¼çš„補ä¸å‚³éžã€‚è¦å‰‡å¾ˆç°¡å–®ï¼šå¦‚æžœä½ èƒ½èªè‰å¦‚下信æ¯: 開發者來æºèªè‰ 1.1 ^^^^^^^^^^^^^^^^^^ å°æ–¼æœ¬é …目的貢ç»ï¼Œæˆ‘èªè‰å¦‚下信æ¯ï¼š (a) 這些貢ç»æ˜¯å®Œå…¨æˆ–者部分的由我創建,我有權利以文件ä¸æŒ‡å‡º 的開放æºä»£ç¢¼è¨±å¯è‰æ交它;或者 (b) 這些貢ç»åŸºæ–¼ä»¥å‰çš„工作,據我所知,這些以å‰çš„工作å—æ°ç•¶çš„開放 æºä»£ç¢¼è¨±å¯è‰ä¿è·ï¼Œè€Œä¸”ï¼Œæ ¹æ“šæ–‡ä»¶ä¸æŒ‡å‡ºçš„許å¯è‰ï¼Œæˆ‘有權æ交修改後的貢ç»ï¼Œ ç„¡è«–æ˜¯å®Œå…¨é‚„æ˜¯éƒ¨åˆ†ç”±æˆ‘å‰µé€ ï¼Œé€™äº›è²¢ç»éƒ½ä½¿ç”¨åŒä¸€å€‹é–‹æ”¾æºä»£ç¢¼è¨±å¯è‰ (除éžæˆ‘被å…許用其它的許å¯è‰ï¼‰ï¼›æˆ–者 (c) 這些貢ç»ç”±èªè‰ï¼ˆa),(b)或者(c)的人直接æ供給我,而 且我沒有修改它。 (d) 我ç†è§£ä¸¦åŒæ„é€™å€‹é …ç›®å’Œè²¢ç»æ˜¯å…¬é–‹çš„,貢ç»çš„記錄(包括我 一起æ交的個人記錄,包括sign-off)被永久ç¶è·ä¸¦ä¸”å¯ä»¥å’Œé€™å€‹é …ç›® 或者開放æºä»£ç¢¼çš„許å¯è‰åŒæ¥åœ°å†ç™¼è¡Œã€‚ é‚£éº¼åŠ å…¥é€™æ¨£ä¸€è¡Œ:: Signed-off-by: Random J Developer <random@developer.example.org> ä½¿ç”¨ä½ çš„çœŸå(抱æ‰ï¼Œä¸èƒ½ä½¿ç”¨å‡å或者匿å。)如果使用 ``git commit -s`` 的話 將會自動完æˆã€‚撤銷也應當包å«â€œSigned-off-byâ€ï¼Œ ``git revert -s`` æœƒå¹«ä½ æžå®šã€‚ æœ‰äº›äººæœƒåœ¨æœ€å¾ŒåŠ ä¸Šé¡å¤–的標籤。ç¾åœ¨é€™äº›æ±è¥¿æœƒè¢«å¿½ç•¥ï¼Œä½†æ˜¯ä½ å¯ä»¥é€™æ¨£åšï¼Œä¾†æ¨™è¨˜ å…¬å¸å…§éƒ¨çš„éŽç¨‹ï¼Œæˆ–者åªæ˜¯æŒ‡å‡ºé—œæ–¼ç°½ç½²çš„一些特殊細節。 作者簽署之後的任何其他簽署(Signed-off-by:'s)å‡ä¾†è‡ªè™•ç†å’Œå‚³éžè£œä¸çš„人員,但 未åƒèˆ‡å…¶é–‹ç™¼ã€‚簽署éˆæ‡‰ç•¶åæ˜ è£œä¸å‚³æ’到ç¶è·è€…並最終傳æ’到Linus所經éŽçš„ **真實** 路徑,首個簽署指明單個作者的主è¦ä½œè€…身份。 何時使用Acked-by:,Cc:,和Co-developed-by: ------------------------------------------ Signed-off-by: 標籤表示簽å者åƒèˆ‡äº†è£œä¸çš„開發,或者他/她在補ä¸çš„傳éžè·¯å¾‘ä¸ã€‚ 如果一個人沒有直接åƒèˆ‡è£œä¸çš„準備或處ç†ï¼Œä½†å¸Œæœ›è¡¨ç¤ºä¸¦è¨˜éŒ„他們å°è£œä¸çš„批准/è´Šæˆï¼Œ 那麼他們å¯ä»¥è¦æ±‚在補ä¸çš„變更日誌ä¸æ·»åŠ 一個Acked-by:。 Acked-by: 通常由å—影響代碼的ç¶è·è€…使用,當該ç¶è·è€…既沒有貢ç»ä¹Ÿæ²’有轉發補ä¸æ™‚。 Acked-by: ä¸åƒç°½ç½²é‚£æ¨£æ£å¼ã€‚這是一個記錄,確èªäººè‡³å°‘審閱了補ä¸ï¼Œä¸¦è¡¨ç¤ºæŽ¥å—。 å› æ¤ï¼Œè£œä¸åˆä½µæœ‰æ™‚會手動將Acker的“Yep,looks good to meâ€è½‰æ›çˆ² Acked-By:(但 請注æ„,通常最好è¦æ±‚一個明確的Ack)。 Acked-by:ä¸ä¸€å®šè¡¨ç¤ºå°æ•´å€‹è£œä¸çš„確èªã€‚例如,如果一個補ä¸å½±éŸ¿å¤šå€‹å系統,並且 有一個來自æŸå€‹å系統ç¶è·è€…çš„Acked-By:,那麼這通常表示åªç¢ºèªå½±éŸ¿ç¶è·è€…代碼的部 分。這è£æ‡‰è©²ä»”細判斷。如有疑å•ï¼Œæ‡‰åƒè€ƒéƒµä»¶åˆ—表å˜æª”ä¸çš„原始討論。 如果æŸäººæœ¬æ‡‰æœ‰æ©Ÿæœƒå°è£œä¸é€²è¡Œè©•è«–,但沒有æä¾›æ¤é¡žè©•è«–,您å¯ä»¥é¸æ“‡åœ¨è£œä¸ä¸æ·»åŠ ``Cc:`` 這是唯一å¯ä»¥åœ¨æ²’有被該人明確åŒæ„的情æ³ä¸‹æ·»åŠ 的標籤——但它應該表明 這個人是在補ä¸ä¸ŠæŠ„é€çš„。æ¤æ¨™ç±¤è¨˜éŒ„了討論ä¸åŒ…å«çš„潛在利益相關方。 Co-developed-by: è²æ˜Žè£œä¸æ˜¯ç”±å¤šå€‹é–‹ç™¼äººå“¡å…±åŒå‰µå»ºçš„;當幾個人在一個補ä¸ä¸Šå·¥ 作時,它用於給出共åŒä½œè€…(除了From:æ‰€çµ¦å‡ºçš„ä½œè€…ä¹‹å¤–ï¼‰ã€‚å› çˆ²Co-developed-by: 表示作者身份,所以æ¯å€‹Co-developed-by:å¿…é ˆç·Šè·Ÿåœ¨ç›¸é—œåˆä½œä½œè€…的簽署之後。標準 簽署程åºè¦æ±‚Signed-off-by:æ¨™ç±¤çš„é †åºæ‡‰å„˜å¯èƒ½åæ˜ è£œä¸çš„時間æ·å²ï¼Œç„¡è«–作者是通 éŽFrom:還是Co-developed-by:表明。值得注æ„的是,最後一個Signed-off-by:å¿…é ˆæ˜¯ æ交補ä¸çš„開發人員。 注æ„,如果From:作者也是電å郵件標題的From:è¡Œä¸åˆ—出的人,則From:標籤是å¯é¸çš„。 被From:作者æ交的補ä¸ç¤ºä¾‹:: <changelog> Co-developed-by: First Co-Author <first@coauthor.example.org> Signed-off-by: First Co-Author <first@coauthor.example.org> Co-developed-by: Second Co-Author <second@coauthor.example.org> Signed-off-by: Second Co-Author <second@coauthor.example.org> Signed-off-by: From Author <from@author.example.org> 被åˆä½œé–‹ç™¼è€…æ交的補ä¸ç¤ºä¾‹:: From: From Author <from@author.example.org> <changelog> Co-developed-by: Random Co-Author <random@coauthor.example.org> Signed-off-by: Random Co-Author <random@coauthor.example.org> Signed-off-by: From Author <from@author.example.org> Co-developed-by: Submitting Co-Author <sub@coauthor.example.org> Signed-off-by: Submitting Co-Author <sub@coauthor.example.org> 使用Reported-by:ã€Tested-by:ã€Reviewed-by:ã€Suggested-by:å’ŒFixes: ----------------------------------------------------------------- Reported-by: 給那些發ç¾éŒ¯èª¤ä¸¦å ±å‘ŠéŒ¯èª¤çš„人致è¬ï¼Œå®ƒå¸Œæœ›æ¿€å‹µä»–們在將來å†æ¬¡å¹«åŠ© 我們。請注æ„,如果bug是以ç§æœ‰æ–¹å¼å ±å‘Šçš„,那麼在使用Reported-by標籤之å‰ï¼Œè«‹ 先請求許å¯ã€‚æ¤æ¨™ç±¤æ˜¯çˆ²Bugè¨è¨ˆçš„;請ä¸è¦å°‡å…¶ç”¨æ–¼æ„Ÿè¬åŠŸèƒ½è«‹æ±‚。 Tested-by: 標籤表示補ä¸å·²ç”±æŒ‡å®šçš„人(在æŸäº›ç’°å¢ƒä¸ï¼‰æˆåŠŸæ¸¬è©¦ã€‚這個標籤通知 ç¶è·äººå“¡å·²ç¶“執行了一些測試,爲將來的補ä¸æ供了一種定ä½æ¸¬è©¦äººå“¡çš„方法,並彰顯測試人員的功勞。 Reviewed-byï¼šæ ¹æ“šå¯©é–±è€…çš„ç›£ç£è²æ˜Žï¼Œè¡¨æ˜Žè©²è£œä¸å·²è¢«å¯©é–±ä¸¦è¢«èªçˆ²æ˜¯å¯æŽ¥å—的: 審閱者的監ç£è²æ˜Ž ^^^^^^^^^^^^^^^^ 通éŽæ供我的Reviewed-by:標籤,我è²æ˜Žï¼š (a) 我已經å°é€™å€‹è£œä¸é€²è¡Œäº†ä¸€æ¬¡æŠ€è¡“審閱,以評估它是å¦é©åˆè¢«åŒ…å«åˆ° ä¸»ç·šå…§æ ¸ä¸ã€‚ (b) 與補ä¸ç›¸é—œçš„任何å•é¡Œã€é¡§æ…®æˆ–å•é¡Œéƒ½å·²å饋給æ交者。我å°æäº¤è€…å° æˆ‘çš„è©•è«–çš„å›žæ‡‰æ„Ÿåˆ°æ»¿æ„。 (c) 雖然這一æ交å¯èƒ½ä»å¯è¢«æ”¹é€²ï¼Œä½†æˆ‘相信,æ¤æ™‚,(1)å°å…§æ ¸ 進行了有價值的修改,(2)沒有包å«çˆè«–ä¸æ¶‰åŠçš„已知å•é¡Œã€‚ (d) 雖然我已經審閱了補ä¸ä¸¦èªçˆ²å®ƒæ˜¯å¥å…¨çš„,但我ä¸æœƒï¼ˆé™¤éžå¦æœ‰æ˜Žç¢º 說明)作出任何ä¿è‰æˆ–æ“”ä¿å®ƒæœƒåœ¨ä»»ä½•çµ¦å®šæƒ…æ³ä¸‹å¯¦ç¾å…¶è¦å®šçš„目的 或æ£å¸¸é‹è¡Œã€‚ Reviewed-by是一種觀點è²æ˜Žï¼Œå³è£œä¸æ˜¯å°å…§æ ¸çš„é©ç•¶ä¿®æ”¹ï¼Œæ²’有任何éºç•™çš„åš´é‡æŠ€è¡“ å•é¡Œã€‚任何感興趣的審閱者(完æˆå·¥ä½œçš„人)都å¯ä»¥çˆ²ä¸€å€‹è£œä¸æ供一個Reviewed-by 標籤。æ¤æ¨™ç±¤ç”¨æ–¼å‘審閱者æ供致è¬ï¼Œä¸¦é€šçŸ¥ç¶è·è€…補ä¸çš„審閱進度。 當Reviewed-by:標籤由已知了解主題å€åŸŸä¸¦åŸ·è¡Œå¾¹åº•æª¢æŸ¥çš„審閱者æä¾›æ™‚ï¼Œé€šå¸¸æœƒå¢žåŠ è£œä¸é€²å…¥å…§æ ¸çš„å¯èƒ½æ€§ã€‚ 一旦從測試人員或審閱者的“Tested-byâ€å’Œâ€œReviewed-byâ€æ¨™ç±¤å‡ºç¾åœ¨éƒµä»¶åˆ—表ä¸ï¼Œ 作者應在發é€ä¸‹ä¸€å€‹ç‰ˆæœ¬æ™‚å°‡å…¶æ·»åŠ åˆ°é©ç”¨çš„補ä¸ä¸ã€‚但是,如果補ä¸åœ¨ä»¥ä¸‹ç‰ˆæœ¬ä¸ç™¼ 生了實質性更改,這些標籤å¯èƒ½ä¸å†é©ç”¨ï¼Œå› æ¤æ‡‰è©²åˆªé™¤ã€‚通常,在補ä¸æ›´æ”¹æ—¥èªŒä¸ (在 ``---`` 分隔符之後)應該æ到刪除æŸäººçš„測試者或審閱者標籤。 Suggested-by: 表示補ä¸çš„想法是由指定的人æ出的,並確ä¿å°‡æ¤æƒ³æ³•æ¸åŠŸæ–¼æŒ‡å®šçš„ 人。請注æ„,未經許å¯ï¼Œä¸å¾—æ·»åŠ æ¤æ¨™ç±¤ï¼Œç‰¹åˆ¥æ˜¯å¦‚果該想法未在公共論壇上發佈。 也就是說,如果我們勤快地致è¬å‰µæ„æ供者,他們將å—到鼓舞,很有希望在未來å†æ¬¡ 幫助我們。 Fixes: 指示補ä¸ä¿®å¾©äº†ä¹‹å‰æ交的一個å•é¡Œã€‚它å¯ä»¥ä¾¿æ–¼ç¢ºå®šéŒ¯èª¤çš„來æºï¼Œé€™æœ‰åŠ©æ–¼ æª¢æŸ¥éŒ¯èª¤ä¿®å¾©ã€‚é€™å€‹æ¨™ç±¤é‚„å¹«åŠ©ç©©å®šå…§æ ¸åœ˜éšŠç¢ºå®šæ‡‰è©²æŽ¥æ”¶ä¿®å¾©çš„ç©©å®šå…§æ ¸ç‰ˆæœ¬ã€‚é€™æ˜¯ 指示補ä¸ä¿®å¾©çš„錯誤的首é¸æ–¹æ³•ã€‚è«‹åƒé–± :ref:`zh_describe_changes` çžè§£æ›´å¤šä¿¡æ¯ã€‚ .. note:: é™„åŠ Fixes:標籤ä¸æœƒæ”¹è®Šç©©å®šå…§æ ¸è¦å‰‡æµç¨‹ï¼Œä¹Ÿä¸æ”¹è®Šæ‰€æœ‰ç©©å®šç‰ˆè£œä¸æŠ„é€ stable@vger.kernel.orgçš„è¦æ±‚。有關更多信æ¯ï¼Œè«‹é–±è®€ Documentation/translations/zh_CN/process/stable-kernel-rules.rst 。 .. _tw_the_canonical_patch_format: 標準補ä¸æ ¼å¼ ------------ 本節æè¿°å¦‚ä½•æ ¼å¼åŒ–補ä¸æœ¬èº«ã€‚請注æ„,如果您的補ä¸å˜å„²åœ¨ ``Git`` å˜å„²åº«ä¸ï¼Œå‰‡ å¯ä»¥ä½¿ç”¨ ``git format-patch`` 進行æ£ç¢ºçš„補ä¸æ ¼å¼åŒ–。但是,這些工具無法創建 å¿…è¦çš„æ–‡æœ¬ï¼Œå› æ¤è«‹å‹™å¿…閱讀下é¢çš„說明。 標準的補ä¸æ¨™é¡Œè¡Œæ˜¯:: Subject: [PATCH 001/123] å系統:一å¥è©±æ¦‚è¿° 標準補ä¸çš„信體包å«å¦‚下部分: - 一個 ``from`` 行指出補ä¸ä½œè€…。後跟空行(僅當發é€è£œä¸çš„人ä¸æ˜¯ä½œè€…時æ‰éœ€è¦ï¼‰ã€‚ - 說明文å—,æ¯è¡Œæœ€é•·75列,這將被複制到永久變更日誌來æ述這個補ä¸ã€‚ - 一個空行 - 上述的 ``Signed-off-by:`` 行,也將出ç¾åœ¨æ›´æ”¹æ—¥èªŒä¸ã€‚ - åªåŒ…å« ``---`` 的標記線。 - 任何其他ä¸é©åˆæ”¾åœ¨è®Šæ›´æ—¥èªŒçš„註釋。 - 實際補ä¸ï¼ˆ ``diff`` 輸出)。 æ¨™é¡Œè¡Œçš„æ ¼å¼ï¼Œä½¿å¾—å°æ¨™é¡Œè¡ŒæŒ‰å—æ¯åºæŽ’åºéžå¸¸çš„容易——很多郵件客戶端都 å¯ä»¥æ”¯æŒâ€”â€”å› çˆ²åºåˆ—號是用零填充的,所以按數å—排åºå’ŒæŒ‰å—æ¯æŽ’åºæ˜¯ä¸€æ¨£çš„。 郵件標題ä¸çš„“å系統â€æ¨™è˜å“ªå€‹å…§æ ¸å系統將被打補ä¸ã€‚ 郵件標題ä¸çš„“一å¥è©±æ¦‚è¿°â€æ‰¼è¦çš„æ述郵件ä¸çš„補ä¸ã€‚“一å¥è©±æ¦‚述†ä¸æ‡‰è©²æ˜¯ä¸€å€‹æ–‡ä»¶å。å°æ–¼ä¸€å€‹è£œä¸ç³»åˆ—(“補ä¸ç³»åˆ—â€æŒ‡ä¸€ç³»åˆ—的多個相關補 ä¸ï¼‰ï¼Œä¸è¦å°æ¯å€‹è£œä¸éƒ½ä½¿ç”¨åŒæ¨£çš„“一å¥è©±æ¦‚è¿°â€ã€‚ 記ä½éƒµä»¶çš„“一å¥è©±æ¦‚è¿°â€æœƒæˆçˆ²è©²è£œä¸çš„全局唯一標è˜ã€‚它會進入 ``git`` 的改動記錄è£ã€‚然後“一å¥è©±æ¦‚è¿°â€æœƒè¢«ç”¨åœ¨é–‹ç™¼è€…的討論è£ï¼Œç”¨ä¾†æŒ‡ä»£é€™å€‹è£œ ä¸ã€‚用戶將希望通éŽæœç´¢å¼•æ“Žæœç´¢â€œä¸€å¥è©±æ¦‚è¿°â€ä¾†æ‰¾åˆ°é‚£äº›è¨Žè«–這個補ä¸çš„æ–‡ ç« ã€‚ç•¶äººå€‘åœ¨å…©ä¸‰å€‹æœˆå¾Œä½¿ç”¨è«¸å¦‚ ``gitk`` 或 ``git log --oneline`` 之類 的工具查看數åƒå€‹è£œä¸æ™‚,也會很快看到它。 å‡ºæ–¼é€™äº›åŽŸå› ï¼Œæ¦‚è¿°å¿…é ˆä¸è¶…éŽ70-75個å—ç¬¦ï¼Œä¸¦ä¸”å¿…é ˆæ述補ä¸çš„更改以åŠçˆ² 什麼需è¦è£œä¸ã€‚æ—¢è¦ç°¡æ½”åˆè¦æ述性很有挑戰性,但寫得好的概述應該這樣。 概述的å‰ç¶´å¯ä»¥ç”¨æ–¹æ‹¬è™Ÿæ‹¬èµ·ä¾†ï¼šâ€œSubject: [PATCH <tag>...] <概述>â€ã€‚標記 ä¸è¢«è¦–爲概述的一部分,而是æ述應該如何處ç†è£œä¸ã€‚如果補ä¸çš„多個版本已發 é€å‡ºä¾†ä»¥éŸ¿æ‡‰è©•å¯©ï¼ˆå³â€œv1,v2,v3â€ï¼‰å‰‡å¿…é ˆåŒ…å«ç‰ˆæœ¬è™Ÿï¼Œæˆ–包å«â€œRFCâ€ä»¥æŒ‡ç¤º 評審請求。如果一個補ä¸ç³»åˆ—ä¸æœ‰å››å€‹è£œä¸ï¼Œé‚£éº¼å„個補ä¸å¯ä»¥é€™æ¨£ç·¨è™Ÿï¼š1/4ã€2/4〠3/4ã€4/4。這å¯ä»¥ç¢ºä¿é–‹ç™¼äººå“¡çžè§£è£œä¸æ‡‰ç”¨çš„é †åºï¼Œä¸” 已經查看或應用了補ä¸ç³»åˆ—ä¸çš„所有補ä¸ã€‚ 一些標題的例å:: Subject: [patch 2/5] ext2: improve scalability of bitmap searching Subject: [PATCHv2 001/207] x86: fix eflags tracking ``From`` 行是信體è£çš„最上é¢ä¸€è¡Œï¼Œå…·æœ‰å¦‚ä¸‹æ ¼å¼:: From: Patch Author <author@example.com> ``From`` 行指明在永久改動日誌è£ï¼Œèª°æœƒè¢«ç¢ºèªçˆ²ä½œè€…。如果沒有 ``From`` 行,那 麼郵件é è£çš„ ``From:`` 行會被用來決定改動日誌ä¸çš„作者。 說明文å—將會被æ交到永久的æºä»£ç¢¼æ”¹å‹•æ—¥èªŒè£ï¼Œå› æ¤æ‡‰é‡å°é‚£äº›æ—©å·²ç¶“ä¸è¨˜å¾—和這 個補ä¸ç›¸é—œçš„討論細節的讀者。包括補ä¸è™•ç†çš„æ•…éšœç—‡ç‹€ï¼ˆå…§æ ¸æ—¥èªŒæ¶ˆæ¯ã€oopsæ¶ˆæ¯ ç‰ï¼‰ï¼Œé€™å°æ–¼å¯èƒ½æ£åœ¨æœç´¢æ交日誌以查找é©ç”¨è£œä¸çš„人特別有用。文本應該寫得如 æ¤è©³ç´°ï¼Œä»¥ä¾¿åœ¨æ•¸é€±ã€æ•¸æœˆç”šè‡³æ•¸å¹´å¾Œé–±è®€æ™‚ï¼Œèƒ½å¤ çˆ²è®€è€…æ供所需的細節信æ¯ï¼Œä»¥ 掌æ¡å‰µå»ºè£œä¸çš„ **åŽŸå› ** 。 如果一個補ä¸ä¿®å¾©äº†ä¸€å€‹ç·¨è¯å¤±æ•—,那麼å¯èƒ½ä¸éœ€è¦åŒ…å« *所有* ç·¨è¯å¤±æ•—ï¼› åªè¦è¶³å¤ 讓æœç´¢è£œä¸çš„äººèƒ½å¤ æ‰¾åˆ°å®ƒå°±è¡Œäº†ã€‚èˆ‡æ¦‚è¿°ä¸€æ¨£ï¼Œæ—¢è¦ç°¡æ½”åˆè¦æ述性。 ``---`` 標記行å°æ–¼è£œä¸è™•ç†å·¥å…·è¦æ‰¾åˆ°å“ªè£æ˜¯æ”¹å‹•æ—¥èªŒä¿¡æ¯çš„çµæŸï¼Œæ˜¯ä¸å¯ç¼ºå°‘ 的。 å°æ–¼ ``---`` 標記之後的é¡å¤–註解,一個好的用途就是用來寫 ``diffstat`` ,用來顯 示修改了什麼文件和æ¯å€‹æ–‡ä»¶éƒ½å¢žåŠ 和刪除了多少行。 ``diffstat`` å°æ–¼æ¯”較大的補 ä¸ç‰¹åˆ¥æœ‰ç”¨ã€‚ 使用 ``diffstat`` çš„é¸é … ``-p 1 -w 70`` 這樣文件åå°±æœƒå¾žå…§æ ¸æºä»£ç¢¼æ¨¹çš„目錄開始 ,ä¸æœƒä½”用太寬的空間(很容易é©åˆ80列的寬度,也許會有一些縮進。) ( ``git`` 默èªæœƒç”Ÿæˆåˆé©çš„diffstat。) 其餘那些åªé©ç”¨æ–¼ç•¶æ™‚或者與ç¶è·è€…相關的註解,ä¸åˆé©æ”¾åˆ°æ°¸ä¹…的改動日誌è£çš„,也 應該放這è£ã€‚較好的例å就是 ``補ä¸æ›´æ”¹è¨˜éŒ„`` ,記錄了v1å’Œv2版本補ä¸ä¹‹é–“的差異。 è«‹å°‡æ¤ä¿¡æ¯æ”¾åœ¨å°‡è®Šæ›´æ—¥èªŒèˆ‡è£œä¸çš„其餘部分分隔開的 ``---`` è¡Œ **之後** 。版本 ä¿¡æ¯ä¸æ˜¯æ交到git樹的變更日誌的一部分。åªæ˜¯ä¾›å¯©é–±äººå“¡ä½¿ç”¨çš„é™„åŠ ä¿¡æ¯ã€‚如果將 其放置在æ交標記上方,則需è¦æ‰‹å‹•äº¤äº’æ‰èƒ½å°‡å…¶åˆªé™¤ã€‚如果它ä½æ–¼åˆ†éš”線以下,則在 應用補ä¸æ™‚會自動å‰é›¢:: <commit message> ... Signed-off-by: Author <author@mail> --- V2 -> V3: Removed redundant helper function V1 -> V2: Cleaned up coding style and addressed review comments path/to/file | 5+++-- ... 在後é¢çš„åƒè€ƒè³‡æ–™ä¸èƒ½çœ‹åˆ°æ£ç¢ºè£œä¸æ ¼å¼çš„更多細節。 .. _tw_backtraces: æ交消æ¯ä¸çš„回溯(Backtraces) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 回溯有助於記錄導致å•é¡Œçš„調用éˆã€‚然而,並éžæ‰€æœ‰å›žæº¯éƒ½æœ‰å¹«åŠ©ã€‚例如,早期引導調 用éˆæ˜¯ç¨ç‰¹è€Œæ˜Žé¡¯çš„。而é€å—複製完整的dmesgè¼¸å‡ºå‰‡æœƒå¢žåŠ æ™‚é–“æˆ³ã€æ¨¡å¡Šåˆ—表ã€å¯„å˜ å™¨å’Œå †æ£§è½‰å„²ç‰åˆ†æ•£æ³¨æ„力的信æ¯ã€‚ å› æ¤ï¼Œæœ€æœ‰ç”¨çš„回溯應該從轉儲ä¸æå–相關信æ¯ï¼Œä»¥æ›´å®¹æ˜“集ä¸åœ¨çœŸå¯¦å•é¡Œä¸Šã€‚下é¢æ˜¯ 一個剪è£è‰¯å¥½çš„回溯示例:: unchecked 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 .. _tw_explicit_in_reply_to: 明確回覆郵件é (In-Reply-To) ----------------------------- æ‰‹å‹•æ·»åŠ å›žå¾©è£œä¸çš„的郵件é (In-Reply_To:)是有用的(例如,使用 ``git send-email`` ), å¯ä»¥å°‡è£œä¸èˆ‡ä»¥å‰çš„相關討論關è¯èµ·ä¾†ï¼Œä¾‹å¦‚,將bug補ä¸éˆæŽ¥åˆ°é›»å郵件和bugå ±å‘Šã€‚ 但是,å°æ–¼å¤šè£œä¸ç³»åˆ—,最好é¿å…在回覆時使用éˆæŽ¥åˆ°è©²ç³»åˆ—的舊版本。這樣, 補ä¸çš„多個版本就ä¸æœƒæˆçˆ²é›»å郵件客戶端ä¸ç„¡æ³•ç®¡ç†çš„引用樹。如果éˆæŽ¥æœ‰ç”¨ï¼Œ å¯ä»¥ä½¿ç”¨ https://lore.kernel.org/ é‡å®šå‘器(例如,在å°é¢é›»å郵件文本ä¸ï¼‰ éˆæŽ¥åˆ°è£œä¸ç³»åˆ—的早期版本。 çµ¦å‡ºåŸºç¤Žæ¨¹ä¿¡æ¯ -------------- 當其他開發人員收到您的補ä¸ä¸¦é–‹å§‹å¯©é–±æ™‚,知é“應該將您的工作放到代碼樹æ·å²è¨˜éŒ„ ä¸çš„什麼ä½ç½®é€šå¸¸å¾ˆæœ‰ç”¨ã€‚這å°æ–¼è‡ªå‹•åŒ–æŒçºŒé›†æˆæµæ°´ï¼ˆCI)特別有用,這些æµæ°´ç·šè©¦ 圖é‹è¡Œä¸€ç³»åˆ—測試,以便在ç¶è·äººå“¡é–‹å§‹å¯©é–±ä¹‹å‰ç¢ºå®šæ交的質é‡ã€‚ 如果您使用 ``git format-patch`` 生æˆè£œä¸ï¼Œå‰‡å¯ä»¥é€šéŽ ``--base`` 標誌在æäº¤ä¸ è‡ªå‹•åŒ…å«åŸºç¤Žæ¨¹ä¿¡æ¯ã€‚使用æ¤é¸é …最簡單ã€æœ€æ–¹ä¾¿çš„方法是é…åˆä¸»é¡Œåˆ†æ”¯:: $ 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/... ç•¶ä½ ç·¨è¼¯ ``outgoing/0000-cover-letter.patch`` 時,您會注æ„到在它的最底部有一 è¡Œ ``base-commit:`` 尾註,它爲審閱者和CI工具æä¾›äº†è¶³å¤ çš„ä¿¡æ¯ä»¥æ£ç¢ºåŸ·è¡Œ ``git am`` 而ä¸å¿…擔心è¡çª:: $ git checkout -b patch-review [base-commit-id] Switched to a new branch 'patch-review' $ git am patches.mbox Applying: First Commit Applying: ... 有關æ¤é¸é …的更多信æ¯ï¼Œè«‹åƒé–± ``man git-format-patch`` 。 .. note:: ``--base`` 功能是在2.9.0版gitä¸å¼•å…¥çš„。 如果您ä¸ä½¿ç”¨gitæ ¼å¼åŒ–補ä¸ï¼Œä»ç„¶å¯ä»¥åŒ…å«ç›¸åŒçš„ ``base-commit`` 尾註,以指示您 的工作所基於的樹的æäº¤å“ˆå¸Œã€‚ä½ æ‡‰è©²åœ¨å°é¢éƒµä»¶æˆ–系列的第一個補ä¸ä¸æ·»åŠ 它,它應 該放在 ``---`` 行的下é¢æˆ–所有其他內容之後,å³åªåœ¨ä½ çš„é›»å郵件簽å之å‰ã€‚ åƒè€ƒæ–‡ç» -------- Andrew Morton,“完美的補ä¸â€ï¼ˆtpp) <https://www.ozlabs.org/~akpm/stuff/tpp.txt> Jeff Garzik,“Linuxå…§æ ¸è£œä¸æäº¤æ ¼å¼â€ <https://web.archive.org/web/20180829112450/http://linux.yyz.us/patch-format.html> Greg Kroah-Hartmanï¼Œâ€œå¦‚ä½•æƒ¹æƒ±å…§æ ¸å系統ç¶è·äººå“¡â€ <http://www.kroah.com/log/linux/maintainer.html> <http://www.kroah.com/log/linux/maintainer-02.html> <http://www.kroah.com/log/linux/maintainer-03.html> <http://www.kroah.com/log/linux/maintainer-04.html> <http://www.kroah.com/log/linux/maintainer-05.html> <http://www.kroah.com/log/linux/maintainer-06.html> ä¸ï¼ï¼ï¼åˆ¥å†ç™¼å·¨åž‹è£œä¸ç‚¸å½ˆçµ¦linux-kernel@vger.kernel.orgçš„äººå€‘äº†ï¼ <https://lore.kernel.org/r/20050711.125305.08322243.davem@davemloft.net> å…§æ ¸ Documentation/translations/zh_CN/process/coding-style.rst Linus Torvalds關於標準補ä¸æ ¼å¼çš„郵件 <https://lore.kernel.org/r/Pine.LNX.4.58.0504071023190.28951@ppc970.osdl.org> Andi Kleen,“æ交補ä¸ä¹‹è·¯â€ 一些幫助åˆå…¥å›°é›£æˆ–有çˆè°çš„變更的ç–略。 http://halobates.de/on-submitting-patches.pdf