Chinese translated version of Documentation/SubmittingPatches If you have any comment or update to the content, please contact the original document maintainer directly. However, if you have a problem communicating in English you can also ask the Chinese maintainer for help. Contact the Chinese maintainer if this translation is outdated or if there is a problem with the translation. Chinese maintainer: TripleX Chung <triplex@zh-kernel.org> --------------------------------------------------------------------- Documentation/SubmittingPatches çä¸æç¿»è¯ å¦ææ³è¯è®ºææ´æ°æ¬æçå 容ï¼è¯·ç´æ¥èç³»åææ¡£çç»´æ¤è ãå¦æä½ ä½¿ç¨è±æ 交æµæå°é¾çè¯ï¼ä¹å¯ä»¥åä¸æçç»´æ¤è æ±å©ãå¦ææ¬ç¿»è¯æ´æ°ä¸åæ¶æè ç¿» è¯åå¨é®é¢ï¼è¯·èç³»ä¸æçç»´æ¤è ã ä¸æçç»´æ¤è ï¼ éå® TripleX Chung <triplex@zh-kernel.org> ä¸æçç¿»è¯è ï¼ éå® TripleX Chung <triplex@zh-kernel.org> ä¸æçæ ¡è¯è ï¼ æé³ Li Yang <leo@zh-kernel.org> çèª Wang Cong <xiyou.wangcong@gmail.com> 以ä¸ä¸ºæ£æ --------------------------------------------------------------------- å¦ä½è®©ä½ çæ¹å¨è¿å ¥å æ ¸ æè è·å¾äº²ç±ç Linus Torvalds çå ³æ³¨åå¤ç ---------------------------------- 对äºæ³è¦å°æ¹å¨æäº¤å° Linux å æ ¸ç个人æè å ¬å¸æ¥è¯´ï¼å¦æä¸çæâè§ç©âï¼ æ交çæµç¨ä¼è®©äººçæ§ãæ¬ææ¡£æ¶éäºä¸ç³»å建议ï¼è¿äºå»ºè®®å¯ä»¥å¤§å¤§çæé«ä½ çæ¹å¨è¢«æ¥åçæºä¼ã é 读 Documentation/SubmitChecklist æ¥è·å¾å¨æ交代ç åéè¦æ£æ¥ç项ç®çå 表ãå¦æä½ å¨æ交ä¸ä¸ªé©±å¨ç¨åºï¼é£ä¹åæ¶é 读ä¸ä¸ Documentation/SubmittingDrivers ã -------------------------- 第ä¸è - å建并åéä½ çæ¹å¨ -------------------------- 1) "diff -up" ----------- ä½¿ç¨ "diff -up" æè "diff -uprN" æ¥å建补ä¸ã ææå æ ¸çæ¹å¨ï¼é½æ¯ä»¥è¡¥ä¸çå½¢å¼åç°çï¼è¡¥ä¸ç± diff(1) çæãå建补ä¸ç æ¶åï¼è¦ç¡®è®¤å®æ¯ä»¥ "unified diff" æ ¼å¼å建çï¼è¿ç§æ ¼å¼ç± diff(1) ç '-u' åæ°çæãèä¸ï¼è¯·ä½¿ç¨ '-p' åæ°ï¼é£æ ·ä¼æ¾ç¤ºæ¯ä¸ªæ¹å¨æå¨çCå½æ°ï¼ä½¿å¾ 产ççè¡¥ä¸å®¹æ读å¾å¤ãè¡¥ä¸åºè¯¥åºäºå æ ¸æºä»£ç æ çæ ¹ç®å½ï¼èä¸æ¯éè¾¹çä»» ä½åç®å½ã 为ä¸ä¸ªåç¬çæ件å建补ä¸ï¼ä¸è¬æ¥è¯´è¿æ ·åå°±å¤äºï¼ SRCTREE= linux-2.6 MYFILE= drivers/net/mydriver.c cd $SRCTREE cp $MYFILE $MYFILE.orig vi $MYFILE # make your change cd .. diff -up $SRCTREE/$MYFILE{.orig,} > /tmp/patch 为å¤ä¸ªæ件å建补ä¸ï¼ä½ å¯ä»¥è§£å¼ä¸ä¸ªæ²¡æä¿®æ¹è¿çå æ ¸æºä»£ç æ ï¼ç¶ååä½ èª å·±ç代ç æ ä¹é´å diff ãä¾å¦ï¼ MYSRC= /devel/linux-2.6 tar xvfz linux-2.6.12.tar.gz mv linux-2.6.12 linux-2.6.12-vanilla diff -uprN -X linux-2.6.12-vanilla/Documentation/dontdiff \ linux-2.6.12-vanilla $MYSRC > /tmp/patch "dontdiff" æ¯å æ ¸å¨ç¼è¯çæ¶å产ççæ件çå表ï¼å表ä¸çæä»¶å¨ diff(1) 产ççè¡¥ä¸éä¼è¢«è·³è¿ã"dontdiff" æ件被å å«å¨2.6.12åä¹åçæ¬çå æ ¸æºä»£ ç æ ä¸ã对äºæ´æ©çå æ ¸çæ¬ï¼ä½ å¯ä»¥ä» <http://www.xenotime.net/linux/doc/dontdiff> è·åå®ã ç¡®å®ä½ çè¡¥ä¸é没æå å«ä»»ä½ä¸å±äºè¿æ¬¡è¡¥ä¸æ交çé¢å¤æ件ãè®°å¾å¨ç¨diff(1) çæè¡¥ä¸ä¹åï¼å®¡é ä¸æ¬¡è¡¥ä¸ï¼ä»¥ç¡®ä¿åç¡®ã å¦æä½ çæ¹å¨å¾æ£ä¹±ï¼ä½ åºè¯¥ç 究ä¸ä¸å¦ä½å°è¡¥ä¸åå²æç¬ç«çé¨åï¼å°æ¹å¨å å²æä¸ç³»ååä¹é»è¾çæ¥éª¤ãè¿æ ·æ´å®¹æè®©å ¶ä»å æ ¸å¼åè å®¡æ ¸ï¼å¦æä½ æ³ä½ ç è¡¥ä¸è¢«æ¥åï¼è¿æ¯å¾éè¦çãä¸é¢è¿äºèæ¬è½å¤å¸®å©ä½ åè¿ä»¶äºæ ï¼ Quilt: http://savannah.nongnu.org/projects/quilt Andrew Morton çè¡¥ä¸èæ¬: http://userweb.kernel.org/~akpm/stuff/patch-scripts.tar.gz ä½ä¸ºè¿äºèæ¬çæ¿ä»£ï¼quilt æ¯å¼å¾æ¨èçè¡¥ä¸ç®¡çå·¥å ·(çä¸é¢çé¾æ¥)ã 2)æè¿°ä½ çæ¹å¨ã æè¿°ä½ çæ¹å¨å å«çææ¯ç»èã è¦å¤å ·ä½å°±åå¤å ·ä½ãæç³ç³çæè¿°å¯è½æ¯åä¸é¢è¿äºè¯å¥ï¼âæ´æ°äºæ驱å¨ç¨ åºâï¼âä¿®æ£äºæ驱å¨ç¨åºçbugâï¼æè âè¿ä¸ªè¡¥ä¸å å«äºæåç³»ç»çä¿®æ¹ï¼è¯· 使ç¨ãâ å¦æä½ çæè¿°å¼å§åé¿ï¼è¿è¡¨ç¤ºä½ ä¹è®¸éè¦æåä½ çè¡¥ä¸äºï¼è¯·ç第3å°èï¼ ç»§ç»ã 3)æåä½ çæ¹å¨ å°æ¹å¨æåï¼é»è¾ç±»ä¼¼çæ¾å°åä¸ä¸ªè¡¥ä¸æ件éã ä¾å¦ï¼å¦æä½ çæ¹å¨éåæ¶æbugä¿®æ£åæ§è½ä¼åï¼é£ä¹æè¿äºæ¹å¨æåå°ä¸¤ä¸ªæ è æ´å¤çè¡¥ä¸æ件ä¸ãå¦æä½ çæ¹å¨å å«å¯¹APIçä¿®æ¹ï¼å¹¶ä¸ä¿®æ¹äºé©±å¨ç¨åºæ¥é åºè¿äºæ°çAPIï¼é£ä¹æè¿äºä¿®æ¹åæ两个补ä¸ã å¦ä¸æ¹é¢ï¼å¦æä½ å°ä¸ä¸ªåç¬çæ¹å¨åæå¤ä¸ªè¡¥ä¸æ件ï¼é£ä¹å°å®ä»¬å并æä¸ä¸ª åç¬çè¡¥ä¸æ件ãè¿æ ·ä¸ä¸ªé»è¾ä¸åç¬çæ¹å¨åªè¢«å å«å¨ä¸ä¸ªè¡¥ä¸æ件éã å¦ææä¸ä¸ªè¡¥ä¸ä¾èµå¦å¤ä¸ä¸ªè¡¥ä¸æ¥å®æå®çæ¹å¨ï¼é£æ²¡é®é¢ãç®åçå¨ä½ çè¡¥ ä¸æè¿°éæåºâè¿ä¸ªè¡¥ä¸ä¾èµæè¡¥ä¸â就好äºã å¦æä½ ä¸è½å°è¡¥ä¸æµç¼©ææ´å°çæ件ï¼é£ä¹æ¯æ¬¡å¤§çº¦åéåº15个ï¼ç¶åçå¾ å®¡æ¥ åæ´åã 4)éæ© e-mail çæ¶ä»¶äºº çä¸é MAINTAINERS æ件åæºä»£ç ï¼ççä½ æçæ¹å¨æå¨çå æ ¸åç³»ç»æ没ææ å®çç»´æ¤è ãå¦ææï¼ç»ä»ä»¬åe-mailã å¦æ没ææ¾å°ç»´æ¤è ï¼æè ç»´æ¤è 没æåé¦ï¼å°ä½ çè¡¥ä¸åéå°å æ ¸å¼åè ä¸»é® ä»¶å表 linux-kernel@vger.kernel.orgã大é¨åçå æ ¸å¼åè é½è·è¸ªè¿ä¸ªé®ä»¶å 表ï¼å¯ä»¥è¯ä»·ä½ çæ¹å¨ã æ¯æ¬¡ä¸è¦åéè¶ è¿15个补ä¸å° vger é®ä»¶å表ï¼ï¼ï¼ Linus Torvalds æ¯å³å®æ¹å¨è½å¦è¿å ¥ Linux å æ ¸çæç»è£å³è ãä»ç e-mail å°åæ¯ <torvalds@linux-foundation.org> ãä»æ¶å°ç e-mail å¾å¤ï¼æ以ä¸è¬ ç说ï¼æ好å«ç»ä»å e-mailã é£äºä¿®æ£bugï¼âæ¾èæè§âçä¿®æ¹æè æ¯ç±»ä¼¼çåªéè¦å¾å°è®¨è®ºçè¡¥ä¸å¯ä»¥ç´æ¥ åéæè CCç»Linusãé£äºéè¦è®¨è®ºæè 没æå¾æ¸ æ¥ç好å¤çè¡¥ä¸ï¼ä¸è¬å åéå° linux-kernelé®ä»¶å表ãåªæå½è¡¥ä¸è¢«è®¨è®ºå¾å·®ä¸å¤äºï¼ææ交ç»Linusã 5)éæ©CC( e-mail æé)å表 é¤éä½ æçç±ä¸è¿æ ·åï¼å¦åCC linux-kernel@vger.kernel.orgã é¤äº Linus ä¹å¤ï¼å ¶ä»å æ ¸å¼åè ä¹éè¦æ³¨æå°ä½ çæ¹å¨ï¼è¿æ ·ä»ä»¬æè½è¯è®ºä½ çæ¹å¨å¹¶æä¾ä»£ç 审æ¥å建议ãlinux-kernel æ¯ Linux å æ ¸å¼åè 主é®ä»¶å表 ãå ¶å®çé®ä»¶å表为ç¹å®çåç³»ç»æä¾æå¡ï¼æ¯å¦ USBï¼framebuffer 设å¤ï¼è ææ件系ç»ï¼SCSI åç³»ç»ï¼ççãæ¥ç MAINTAINERS æ件æ¥è·å¾åä½ çæ¹å¨æ å ³çé®ä»¶å表ã Majordomo lists of VGER.KERNEL.ORG at: <http://vger.kernel.org/vger-lists.html> å¦ææ¹å¨å½±åäºç¨æ·ç©ºé´åå æ ¸ä¹é´çæ¥å£ï¼è¯·ç» MAN-PAGES çç»´æ¤è ï¼åå¨ MAITAINERS æ件éçï¼åéä¸ä¸ªæå页ï¼man-pagesï¼è¡¥ä¸ï¼æè è³å°éç¥ä¸ä¸æ¹ åï¼è®©ä¸äºä¿¡æ¯æéå¾è¿å ¥æå页ã å³ä½¿å¨ç¬¬åæ¥çæ¶åï¼ç»´æ¤è 没æä½åºååºï¼ä¹è¦ç¡®è®¤å¨ä¿®æ¹ä»ä»¬ç代ç çæ¶å ï¼ä¸ç´å°ç»´æ¤è æ·è´å°CCå表ä¸ã 对äºå°çè¡¥ä¸ï¼ä½ ä¹è®¸ä¼CCå° Adrian Bunk 管ççæéçç¢è¡¥ä¸çé®ä»¶å表 (Trivial Patch Monkey)trivial@kernel.orgï¼é£éä¸é¨æ¶éçç¢çè¡¥ä¸ãä¸é¢è¿æ · çè¡¥ä¸ä¼è¢«çä½âçç¢çâè¡¥ä¸ï¼ ææ¡£çæ¼åä¿®æ£ã ä¿®æ£ä¼å½±åå° grep(1) çæ¼åã è¦åä¿¡æ¯ä¿®æ£(é¢ç¹çæå°æ ç¨çè¦åæ¯ä¸å¥½çã) ç¼è¯é误修æ£ï¼ä»£ç é»è¾çç¡®æ¯å¯¹çï¼åªæ¯ç¼è¯æé®é¢ãï¼ è¿è¡æ¶ä¿®æ£ï¼åªè¦ççä¿®æ£äºé误ãï¼ ç§»é¤ä½¿ç¨äºè¢«åºå¼çå½æ°/å®ç代ç (ä¾å¦ check_regionã) èç³»æ¹å¼åæ档修æ£ã ç¨å¯ç§»æ¤ç代ç æ¿æ¢ä¸å¯ç§»æ¤ç代ç ï¼å³ä½¿å¨ä½ç³»ç»æç¸å ³ç代ç ä¸ï¼æ¢ç¶æ 人æ·è´ï¼åªè¦å®æ¯çç¢çï¼ ä»»ä½æ件çä½è /ç»´æ¤è 对该æ件çæ¹å¨ï¼ä¾å¦ patch monkey å¨éä¼ æ¨¡å¼ä¸ï¼ EMAIL: trivial@kernel.org (è¯æ³¨ï¼å ³äºâçç¢è¡¥ä¸âçä¸äºè¯´æï¼å 为åæçè¿ä¸é¨ååå¾æ¯è¾ç®åï¼æ以ä¸å¾ä¸ è¿ä¾åä¸ä¸è¯æ³¨ã"trivial"è¿ä¸ªè±æåè¯çæ¬ææ¯âçç¢çï¼ä¸éè¦çãâä½æ¯å¨è¿é æç¨å¾®æä¸äºååï¼ä¾å¦å¯¹ä¸äºææ¾çNULLæéçä¿®æ£ï¼å±äºè¿è¡æ¶ä¿®æ£ï¼ä¼è¢«å½ç±» å°çç¢è¡¥ä¸éãè½ç¶NULLæéçä¿®æ£å¾éè¦ï¼ä½æ¯è¿æ ·çä¿®æ£å¾å¾å¾å°èä¸å¾å®¹æå¾å° æ£éªï¼æ以ä¹è¢«å½å ¥çç¢è¡¥ä¸ãçç¢è¡¥ä¸æ´ç²¾ç¡®çå½ç±»åºè¯¥æ¯ âsimple, localized & easy to verifyâï¼ä¹å°±æ¯è¯´ç®åçï¼å±é¨çåæäºæ£éªçã trivial@kernel.orgé®ä»¶å表çç®çæ¯é对è¿æ ·çè¡¥ä¸ï¼ä¸ºæ交è æä¾ä¸ä¸ªä¸å¿ï¼æ¥ éä½æ交çé¨æ§ã) 6)没æ MIME ç¼ç ï¼æ²¡æé¾æ¥ï¼æ²¡æå缩ï¼æ²¡æé件ï¼åªæ纯ææ¬ã Linus åå ¶ä»çå æ ¸å¼åè éè¦é 读åè¯è®ºä½ æ交çæ¹å¨ã对äºå æ ¸å¼åè æ¥è¯´ ï¼å¯ä»¥âå¼ç¨âä½ çæ¹å¨å¾éè¦ï¼ä½¿ç¨ä¸è¬ç e-mail å·¥å ·ï¼ä»ä»¬å°±å¯ä»¥å¨ä½ ç 代ç çä»»ä½ä½ç½®æ·»å è¯è®ºã å 为è¿ä¸ªåå ï¼ææçæ交çè¡¥ä¸é½æ¯ e-mail ä¸âå åµâçã è¦åï¼å¦æä½ ä½¿ç¨åªå-ç²è´´ä½ çè¡¥ä¸ï¼å°å¿ä½ çç¼è¾å¨çèªå¨æ¢è¡åè½ç ´åä½ ç è¡¥ä¸ã ä¸è¦å°è¡¥ä¸ä½ä¸º MIME ç¼ç çé件ï¼ä¸ç®¡æ¯å¦å缩ãå¾å¤æµè¡ç e-mail è½¯ä»¶ä¸ æ¯ä»»ä½æ¶åé½å° MIME ç¼ç çé件å½ä½çº¯ææ¬åéçï¼è¿ä¼ä½¿å¾å«äººæ æ³å¨ä½ ç 代ç ä¸å è¯è®ºãå¦å¤ï¼MIME ç¼ç çé件ä¼è®© Linus å¤è±ä¸ç¹æ¶é´æ¥å¤çï¼è¿å°± éä½äºä½ çæ¹å¨è¢«æ¥åçå¯è½æ§ã è¦åï¼ä¸äºé®ä»¶è½¯ä»¶ï¼æ¯å¦ Mozilla ä¼å°ä½ çä¿¡æ¯ä»¥å¦ä¸æ ¼å¼åéï¼ ---- é®ä»¶å¤´ ---- Content-Type: text/plain; charset=us-ascii; format=flowed ---- é®ä»¶å¤´ ---- é®é¢å¨äº âformat=flowedâ ä¼è®©æ¥æ¶ç«¯çæäºé®ä»¶è½¯ä»¶å°é®ä»¶ä¸çå¶è¡¨ç¬¦æ¿æ¢ æç©ºæ ¼ä»¥ååä¸äºç±»ä¼¼çæ¿æ¢ãè¿æ ·ï¼ä½ åéçæ¶åçèµ·æ¥æ²¡é®é¢çè¡¥ä¸å°±è¢«ç ´ åäºã è¦ä¿®æ£è¿ä¸ªé®é¢ï¼åªéè¦å°ä½ ç mozilla ç defaults/pref/mailnews.js æ件 éç pref("mailnews.send_plaintext_flowed", false); // RFC 2646======= ä¿®æ¹æ pref("mailnews.display.disable_format_flowed_support", true); å°±å¯ä»¥äºã 7) e-mail çå¤§å° ç» Linus åéè¡¥ä¸çæ¶åï¼æ°¸è¿æç §ç¬¬6å°è说çåã 大çæ¹å¨å¯¹é®ä»¶å表ä¸åéï¼å¯¹æäºç»´æ¤è ä¹ä¸åéãå¦æä½ çè¡¥ä¸ï¼å¨ä¸å缩 çæ åµä¸ï¼è¶ è¿äº40kBï¼é£ä¹ä½ æ好å°è¡¥ä¸æ¾å¨ä¸ä¸ªè½éè¿ internet 访é®çæ å¡å¨ä¸ï¼ç¶åç¨æåä½ çè¡¥ä¸ç URL æ¿ä»£ã 8) æåºä½ çå æ ¸çæ¬ å¨æ é¢åå¨è¡¥ä¸çæè¿°ä¸ï¼æåºè¡¥ä¸å¯¹åºçå æ ¸ççæ¬ï¼æ¯å¾éè¦çã å¦æè¡¥ä¸ä¸è½å¹²åçå¨ææ°çæ¬çå æ ¸ä¸æä¸ï¼Linus æ¯ä¸ä¼æ¥åå®çã 9) ä¸è¦æ°é¦ï¼ç»§ç»æ交ã å½ä½ æ交äºæ¹å¨ä»¥åï¼èå¿å°çå¾ ãå¦æ Linus åæ¬¢ä½ çæ¹å¨å¹¶ä¸åæå®ï¼é£ä¹ å®å°å¨ä¸ä¸ä¸ªå æ ¸åå¸çæ¬ä¸åºç°ã ç¶èï¼å¦æä½ çæ¹å¨æ²¡æåºç°å¨ä¸ä¸ä¸ªçæ¬çå æ ¸ä¸ï¼å¯è½æè¥å¹²åå ãåå°é£ äºåå ï¼ä¿®æ£é误ï¼éæ°æ交æ´æ°åçæ¹å¨ï¼æ¯ä½ èªå·±çå·¥ä½ã Linusä¸ç»åºä»»ä½è¯è®ºå°±â丢å¼âä½ çè¡¥ä¸æ¯å¸¸è§çäºæ ãå¨ç³»ç»ä¸è¿æ ·çäºæ å¾ å¹³å¸¸ãå¦æä»æ²¡ææ¥åä½ çè¡¥ä¸ï¼ä¹è®¸æ¯ç±äºä»¥ä¸åå ï¼ * ä½ çè¡¥ä¸ä¸è½å¨ææ°çæ¬çå æ ¸ä¸å¹²åçæä¸ã * ä½ çè¡¥ä¸å¨ linux-kernel é®ä»¶å表ä¸æ²¡æå¾å°å åç讨论ã * é£æ ¼é®é¢ï¼åç §ç¬¬2å°èï¼ * é®ä»¶æ ¼å¼é®é¢ï¼é读æ¬èï¼ * ä½ çæ¹å¨æææ¯é®é¢ã * ä»æ¶å°äºæå¨ç e-mailï¼èä½ çå¨æ··ä¹±ä¸ä¸¢å¤±äºã * ä½ è®©äººä¸ºé¾ã æçé®çæ¶åï¼å¨ linux-kernel é®ä»¶å表ä¸è¯·æ±è¯è®ºã 10) å¨æ é¢ä¸å ä¸ PATCH çåæ · Linus å linux-kernel é®ä»¶å表ç e-mail æµéé½å¾é«ï¼ä¸ä¸ªé常ç约å®æ¯æ é¢è¡ä»¥ [PATCH] å¼å¤´ãè¿æ ·å¯ä»¥è®© Linus åå ¶ä»å æ ¸å¼å人åå¯ä»¥ä» e-mail ç讨论ä¸å¾è½»æçå°è¡¥ä¸å辨åºæ¥ã 11ï¼ä¸ºä½ çå·¥ä½ç¾å 为äºå 强对è°åäºä½äºç追踪ï¼å°¤å ¶æ¯å¯¹é£äºéè¿å¥½å å±çç»´æ¤è çè¡¥ä¸ï¼æ们 建议å¨åéåºå»çè¡¥ä¸ä¸å ä¸ä¸ª âsign-offâ çè¿ç¨ã "sign-off" æ¯å¨è¡¥ä¸ç注éçæåçç®åçä¸è¡æåï¼è®¤è¯ä½ ç¼åäºå®æè å ¶ä» äººææåå°å®ä½ä¸ºå¼æ¾æºä»£ç çè¡¥ä¸ä¼ éãè§åå¾ç®åï¼å¦æä½ è½è®¤è¯å¦ä¸ä¿¡æ¯ ï¼ å¼åè æ¥æºè¯ä¹¦ 1.1 对äºæ¬é¡¹ç®çè´¡ç®ï¼æ认è¯å¦ä¸ä¿¡æ¯ï¼ ï¼aï¼è¿äºè´¡ç®æ¯å®å ¨æè é¨åçç±æå建ï¼æææå©ä»¥æ件ä¸æåº çå¼æ¾æºä»£ç 许å¯è¯æ交å®ï¼æè ï¼bï¼è¿äºè´¡ç®åºäºä»¥åçå·¥ä½ï¼æ®ææç¥ï¼è¿äºä»¥åçå·¥ä½åæ°å½çå¼æ¾ æºä»£ç 许å¯è¯ä¿æ¤ï¼èä¸ï¼æ ¹æ®è®¸å¯è¯ï¼ææææ交修æ¹åçè´¡ç®ï¼ æ 论æ¯å®å ¨è¿æ¯é¨åç±æåé ï¼è¿äºè´¡ç®é½ä½¿ç¨åä¸ä¸ªå¼æ¾æºä»£ç 许å¯è¯ ï¼é¤éæ被å 许ç¨å ¶å®ç许å¯è¯ï¼ï¼æ£å¦æ件ä¸æåºçï¼æè ï¼cï¼è¿äºè´¡ç®ç±è®¤è¯ï¼aï¼ï¼ï¼bï¼æè ï¼cï¼ç人ç´æ¥æä¾ç»æï¼è ä¸æ没æä¿®æ¹å®ã ï¼dï¼æç解并åæè¿ä¸ªé¡¹ç®åè´¡ç®æ¯å ¬å¼çï¼è´¡ç®çè®°å½ï¼å æ¬æ ä¸èµ·æ交ç个人记å½ï¼å æ¬ sign-off ï¼è¢«æ°¸ä¹ ç»´æ¤å¹¶ä¸å¯ä»¥åè¿ä¸ªé¡¹ç® æè å¼æ¾æºä»£ç ç许å¯è¯åæ¥å°ååè¡ã é£ä¹å å ¥è¿æ ·ä¸è¡ï¼ Signed-off-by: Random J Developer <random@developer.example.org> 使ç¨ä½ ççåï¼æ±æï¼ä¸è½ä½¿ç¨ååæè å¿åãï¼ æ人å¨æåå ä¸æ ç¾ãç°å¨è¿äºä¸è¥¿ä¼è¢«å¿½ç¥ï¼ä½æ¯ä½ å¯ä»¥è¿æ ·åï¼æ¥æ è®°å ¬å¸ å é¨çè¿ç¨ï¼æè åªæ¯æåºå ³äº sign-off çä¸äºç¹æ®ç»èã 12ï¼æ åè¡¥ä¸æ ¼å¼ æ åçè¡¥ä¸ï¼æ é¢è¡æ¯ï¼ Subject: [PATCH 001/123] åç³»ç»:ä¸å¥è¯æ¦è¿° æ åè¡¥ä¸çä¿¡ä½åå¨å¦ä¸é¨åï¼ - ä¸ä¸ª "from" è¡æåºè¡¥ä¸ä½è ã - ä¸ä¸ªç©ºè¡ - 说æç主ä½ï¼è¿äºè¯´ææåä¼è¢«æ·è´å°æ述该补ä¸çæ°¸ä¹ æ¹å¨è®°å½éã - ä¸ä¸ªç±"---"ææçæ è®°è¡ - ä¸åéæ¾å°æ¹å¨è®°å½éçé¢å¤ç注解ã - è¡¥ä¸æ¬èº«ï¼diff è¾åºï¼ æ é¢è¡çæ ¼å¼ï¼ä½¿å¾å¯¹æ é¢è¡æåæ¯åºæåºé常ç容æ - å¾å¤ e-mail 客æ·ç«¯é½ å¯ä»¥æ¯æ - å 为åºåå·æ¯ç¨é¶å¡«å çï¼æ以ææ°åæåºåæåæ¯æåºæ¯ä¸æ ·çã e-mail æ é¢ä¸çâåç³»ç»âæ è¯åªä¸ªå æ ¸åç³»ç»å°è¢«æè¡¥ä¸ã e-mail æ é¢ä¸çâä¸å¥è¯æ¦è¿°âæ¼è¦çæè¿° e-mail ä¸çè¡¥ä¸ãâä¸å¥è¯æ¦è¿°â ä¸åºè¯¥æ¯ä¸ä¸ªæ件åã对äºä¸ä¸ªè¡¥ä¸ç³»åï¼âè¡¥ä¸ç³»åâæä¸ç³»åçå¤ä¸ªç¸å ³è¡¥ ä¸ï¼ï¼ä¸è¦å¯¹æ¯ä¸ªè¡¥ä¸é½ä½¿ç¨åæ ·çâä¸å¥è¯æ¦è¿°âã è®°ä½ e-mail çâä¸å¥è¯æ¦è¿°âä¼æ为该补ä¸çå ¨å±å¯ä¸æ è¯ãå®ä¼èå»¶å° git çæ¹å¨è®°å½éãç¶åâä¸å¥è¯æ¦è¿°âä¼è¢«ç¨å¨å¼åè ç讨论éï¼ç¨æ¥æ代è¿ä¸ªè¡¥ ä¸ãç¨æ·å°å¸æéè¿ google æ¥æç´¢"ä¸å¥è¯æ¦è¿°"æ¥æ¾å°é£äºè®¨è®ºè¿ä¸ªè¡¥ä¸çæ ç« ã ä¸äºæ é¢çä¾åï¼ Subject: [patch 2/5] ext2: improve scalability of bitmap searching Subject: [PATCHv2 001/207] x86: fix eflags tracking "from" è¡æ¯ä¿¡ä½éçæä¸é¢ä¸è¡ï¼å ·æå¦ä¸æ ¼å¼ï¼ From: Original Author <author@example.com> "from" è¡ææå¨æ°¸ä¹ æ¹å¨æ¥å¿éï¼è°ä¼è¢«ç¡®è®¤ä¸ºä½è ãå¦æ没æ "from" è¡ï¼é£ ä¹é®ä»¶å¤´éç "From: " è¡ä¼è¢«ç¨æ¥å³å®æ¹å¨æ¥å¿ä¸çä½è ã 说æç主é¢å°ä¼è¢«æ交å°æ°¸ä¹ çæºä»£ç æ¹å¨æ¥å¿éï¼å æ¤å¯¹é£äºæ©å·²ç»ä¸è®°å¾å è¿ä¸ªè¡¥ä¸ç¸å ³ç讨论ç»èçæè½åç读è æ¥è¯´ï¼æ¯ææä¹çã "---" æ è®°è¡å¯¹äºè¡¥ä¸å¤çå·¥å ·è¦æ¾å°åªéæ¯æ¹å¨æ¥å¿ä¿¡æ¯çç»æï¼æ¯ä¸å¯ç¼ºå° çã å¯¹äº "---" æ è®°ä¹åçé¢å¤æ³¨è§£ï¼ä¸ä¸ªå¥½çç¨éå°±æ¯ç¨æ¥å diffstatï¼ç¨æ¥æ¾ 示修æ¹äºä»ä¹æ件åæ¯ä¸ªæ件é½å¢å åå é¤äºå¤å°è¡ãdiffstat 对äºæ¯è¾å¤§çè¡¥ ä¸ç¹å«æç¨ãå ¶ä½é£äºåªæ¯åæ¶å»æè å¼åè ç¸å ³ç注解ï¼ä¸åéæ¾å°æ°¸ä¹ çæ¹ å¨æ¥å¿éçï¼ä¹åºè¯¥æ¾è¿éã ä½¿ç¨ diffstatçé项 "-p 1 -w 70" è¿æ ·æ件åå°±ä¼ä»å æ ¸æºä»£ç æ çç®å½å¼å§ ï¼ä¸ä¼å ç¨å¤ªå®½ç空é´ï¼å¾å®¹æéå80åç宽度ï¼ä¹è®¸ä¼æä¸äºç¼©è¿ãï¼ å¨åé¢çåèèµæä¸è½çå°éå½çè¡¥ä¸æ ¼å¼çæ´å¤ç»èã ------------------------------- 第äºè æ示ï¼å»ºè®®åè¯çª ------------------------------- æ¬èå å«å¾å¤åæ交å°å æ ¸ç代ç æå ³çé常ç"è§å"ãäºæ æ°¸è¿æä¾å¤...ä½æ¯ ä½ å¿ é¡»ççæ好ççç±è¿æ ·åãä½ å¯ä»¥ææ¬èå«åLinusç计ç®æºç§å¦å ¥é¨è¯¾ã 1) 读 Document/CodingStyle Nuff 说è¿ï¼å¦æä½ ç代ç åè¿ä¸ªå离太å¤ï¼é£ä¹å®æå¯è½ä¼è¢«æç»ï¼æ²¡ææ´å¤ç 审æ¥ï¼æ²¡ææ´å¤çè¯ä»·ã 2) #ifdef æ¯ä¸éç æ··æäº ifdef ç代ç é¾ä»¥é 读åç»´æ¤ãå«è¿æ ·åãä½ä¸ºæ¿ä»£ï¼å°ä½ ç ifdef æ¾ å¨å¤´æ件éï¼ææ¡ä»¶å°å®ä¹ "static inline" å½æ°ï¼æè å®ï¼å¨ä»£ç éç¨è¿äºä¸ 西ã让ç¼è¯å¨æé£äº"空æä½"ä¼åæã ä¸ä¸ªç®åçä¾åï¼ä¸å¥½ç代ç ï¼ dev = alloc_etherdev (sizeof(struct funky_private)); if (!dev) return -ENODEV; #ifdef CONFIG_NET_FUNKINESS init_funky_net(dev); #endif æ¸ çåçä¾å: (头æ件é) #ifndef CONFIG_NET_FUNKINESS static inline void init_funky_net (struct net_device *d) {} #endif (代ç æ件é) dev = alloc_etherdev (sizeof(struct funky_private)); if (!dev) return -ENODEV; init_funky_net(dev); 3) 'static inline' æ¯å®å¥½ Static inline å½æ°ç¸æ¯å®æ¥è¯´ï¼æ¯å¥½å¾å¤çéæ©ãStatic inline å½æ°æä¾äº ç±»åå®å ¨ï¼æ²¡æé¿åº¦éå¶ï¼æ²¡ææ ¼å¼éå¶ï¼å¨ gcc ä¸å¼éåå®ä¸æ ·å°ã å®åªå¨ static inline å½æ°ä¸æ¯æä¼çæ¶å[å¨ fast paths éæå¾å°çç¬ç«ç æ¡ä¾]ï¼æè ä¸å¯è½ç¨ static inline å½æ°çæ¶å[ä¾å¦å符串åé ]ã åºè¯¥ç¨ 'static inline' èä¸æ¯ 'static __inline__', 'extern inline' å 'extern __inline__' ã 4) ä¸è¦è¿åº¦è®¾è®¡ ä¸è¦è¯å¾é¢è®¡æ¨¡ç³çæªæ¥äºæ ï¼è¿äºäºæ ä¹è®¸æç¨ä¹è®¸æ²¡æç¨ï¼"让äºæ å°½å¯è½ç ç®åï¼èä¸æ¯æ´ç®å"ã ---------------- 第ä¸è åèæç® ---------------- Andrew Morton, "The perfect patch" (tpp). <http://userweb.kernel.org/~akpm/stuff/tpp.txt> Jeff Garzik, "Linux kernel patch submission format". <http://linux.yyz.us/patch-format.html> Greg Kroah-Hartman, "How to piss off a kernel subsystem maintainer". <http://www.kroah.com/log/2005/03/31/> <http://www.kroah.com/log/2005/07/08/> <http://www.kroah.com/log/2005/10/19/> <http://www.kroah.com/log/2006/01/11/> NO!!!! No more huge patch bombs to linux-kernel@vger.kernel.org people! <http://marc.theaimsgroup.com/?l=linux-kernel&m=112112749912944&w=2> Kernel Documentation/CodingStyle: <http://sosdg.org/~coywolf/lxr/source/Documentation/CodingStyle> Linus Torvalds's mail on the canonical patch format: <http://lkml.org/lkml/2005/4/7/183> --