.. SPDX-License-Identifier: GPL-2.0 .. include:: ../disclaimer-zh_TW.rst :Original: :ref:`Documentation/process/2.Process.rst <development_process>` :Translator: 時奎亮 Alex Shi <alex.shi@linux.alibaba.com> :æ ¡è¯: å³æƒ³æˆ Wu XiangCheng <bobwxc@email.cn> 胡皓文 Hu Haowen <src.res@email.cn> .. _tw_development_process: 開發æµç¨‹å¦‚何進行 ================ 90年代早期的Linuxå…§æ ¸é–‹ç™¼æ˜¯ä¸€ä»¶ç›¸ç•¶é¬†æ•£çš„äº‹æƒ…ï¼Œæ¶‰åŠçš„用戶和開發人員相å°è¼ƒå°‘。 由於æ“有數以百è¬è¨ˆçš„用戶羣,且æ¯å¹´æœ‰å¤§ç´„2000å開發人員åƒèˆ‡é€²ä¾†ï¼Œå…§æ ¸å› æ¤å¿…é ˆ 發展出許多既定æµç¨‹ä¾†ä¿è‰é–‹ç™¼çš„é †åˆ©é€²è¡Œã€‚è¦åƒèˆ‡åˆ°æµç¨‹ä¸ä¾†ï¼Œéœ€è¦å°æ¤æµç¨‹çš„進行 æ–¹å¼æœ‰ä¸€å€‹ç´®å¯¦çš„ç†è§£ã€‚ 總覽 ---- å…§æ ¸é–‹ç™¼äººå“¡ä½¿ç”¨ä¸€å€‹é¬†æ•£çš„åŸºæ–¼æ™‚é–“çš„ç™¼å¸ƒéŽç¨‹ï¼Œæ¯å…©åˆ°ä¸‰å€‹æœˆç™¼å¸ƒä¸€æ¬¡æ–°çš„ä¸»è¦ å…§æ ¸ç‰ˆæœ¬ã€‚æœ€è¿‘çš„ç™¼å¸ƒæ·å²è¨˜éŒ„如下: ====== ================= 5.0 2019å¹´3月3æ—¥ 5.1 2019å¹´5月5æ—¥ 5.2 2019å¹´7月7æ—¥ 5.3 2019å¹´9月15æ—¥ 5.4 2019å¹´11月24æ—¥ 5.5 2020å¹´1月6æ—¥ ====== ================= æ¯å€‹5.x版本都是一個主è¦çš„å…§æ ¸ç‰ˆæœ¬ï¼Œå…·æœ‰æ–°ç‰¹æ€§ã€å…§éƒ¨API更改ç‰ç‰ã€‚一個典型的5.x 版本包å«å¤§ç´„13000個變更集,變更了幾åè¬è¡Œä»£ç¢¼ã€‚å› æ¤ï¼Œ5.x是Linuxå…§æ ¸é–‹ç™¼çš„å‰ æ²¿ï¼›å…§æ ¸ä½¿ç”¨æ»¾å‹•é–‹ç™¼æ¨¡åž‹ï¼Œä¸æ–·é›†æˆé‡å¤§è®ŠåŒ–。 å°æ–¼æ¯å€‹ç‰ˆæœ¬çš„補ä¸åˆä½µï¼Œéµå¾ªä¸€å€‹ç›¸å°ç°¡å–®çš„è¦å‰‡ã€‚在æ¯å€‹é–‹ç™¼å‘¨æœŸçš„é–‹é ,「åˆä½µ 窗å£ã€è¢«æ‰“開。這時,被èªçˆ²è¶³å¤ 穩定(並且被開發社å€æŽ¥å—)的代碼被åˆä½µåˆ°ä¸»ç·šå…§ æ ¸ä¸ã€‚在這段時間內,新開發周期的大部分變更(以åŠæ‰€æœ‰ä¸»è¦è®Šæ›´ï¼‰å°‡ä»¥æŽ¥è¿‘æ¯å¤© 1000次變更(「補ä¸ã€æˆ–「變更集ã€ï¼‰çš„速度åˆä½µã€‚ ï¼ˆé †ä¾¿èªªä¸€å¥ï¼Œå€¼å¾—注æ„的是,åˆä½µçª—å£æœŸé–“集æˆçš„更改並ä¸æ˜¯æ†‘空產生的;它們是經 æå‰æ”¶é›†ã€æ¸¬è©¦å’Œåˆ†ç´šçš„。ç¨å¾Œå°‡è©³ç´°æ述該éŽç¨‹çš„工作方å¼ã€‚) åˆä½µçª—å£æŒçºŒå¤§ç´„兩周。在這段時間çµæŸæ™‚,LinusTorvaldså°‡è²æ˜Žçª—å£å·²é—œé–‰ï¼Œä¸¦ 釋放第一個「rcã€å…§æ ¸ã€‚例如,å°æ–¼ç›®æ¨™çˆ²5.6çš„å…§æ ¸ï¼Œåœ¨åˆä½µçª—å£çµæŸæ™‚發生的釋放 將被稱爲5.6-rc1。-rc1 版本是一個信號,表示åˆä½µæ–°ç‰¹æ€§çš„時間已經éŽåŽ»ï¼Œç©©å®šä¸‹ä¸€ å€‹å…§æ ¸çš„æ™‚é–“å·²ç¶“åˆ°ä¾†ã€‚ 在接下來的6到10周內,åªæœ‰ä¿®å¾©å•é¡Œçš„補ä¸æ‰æ‡‰è©²æ交給主線。有時會å…許更大的 更改,但這種情æ³å¾ˆå°‘發生;試圖在åˆä½µçª—å£å¤–åˆä½µæ–°åŠŸèƒ½çš„開發人員往往å—ä¸åˆ° å‹å¥½çš„接待。一般來說,如果您錯éŽäº†çµ¦å®šç‰¹æ€§çš„åˆä½µçª—å£ï¼Œæœ€å¥½çš„åšæ³•æ˜¯ç‰å¾…下一 個開發周期。(å¶çˆ¾æœƒå°æœªæ”¯æŒç¡¬é«”的驅動程åºé€²è¡Œä¾‹å¤–;如果它們ä¸æ”¹è®Šå·²æœ‰ä»£ç¢¼ï¼Œ 則ä¸æœƒå°Žè‡´å›žæ¸ï¼Œæ‡‰è©²å¯ä»¥éš¨æ™‚è¢«å®‰å…¨åœ°åŠ å…¥ï¼‰ã€‚ 隨著修復程åºé€²å…¥ä¸»ç·šï¼Œè£œä¸é€Ÿåº¦å°‡éš¨è‘—時間的推移而變慢。Linus大約æ¯å‘¨ç™¼å¸ƒä¸€æ¬¡ æ–°çš„-rcå…§æ ¸ï¼›åœ¨å…§æ ¸è¢«èªçˆ²è¶³å¤ 穩定並最終發布å‰ï¼Œä¸€èˆ¬æœƒé”到-rc6到-rc9之間。 然後,整個éŽç¨‹åˆé‡æ–°é–‹å§‹äº†ã€‚ 例如,這裡是5.4的開發周期進行情æ³ï¼ˆ2019年): ============== ============================== ä¹æœˆ 15 5.3 穩定版發布 ä¹æœˆ 30 5.4-rc1 åˆä½µçª—å£é—œé–‰ å月 6 5.4-rc2 å月 13 5.4-rc3 å月 20 5.4-rc4 å月 27 5.4-rc5 å一月 3 5.4-rc6 å一月 10 5.4-rc7 å一月 17 5.4-rc8 å一月 24 5.4 穩定版發布 ============== ============================== 開發人員如何決定何時çµæŸé–‹ç™¼å‘¨æœŸä¸¦å‰µå»ºç©©å®šç‰ˆæœ¬ï¼Ÿæœ€é‡è¦çš„指標是以å‰ç‰ˆæœ¬çš„ 回æ¸åˆ—表。ä¸æ¡è¿Žå‡ºç¾ä»»ä½•éŒ¯èª¤ï¼Œä½†æ˜¯é‚£äº›ç ´å£žäº†ä»¥å‰èƒ½å·¥ä½œçš„系統的錯誤被èªçˆ²æ˜¯ 特別嚴é‡çš„ã€‚å› æ¤ï¼Œå°Žè‡´å›žæ¸çš„補ä¸æ˜¯ä¸å—æ¡è¿Žçš„,很å¯èƒ½åœ¨ç©©å®šæœŸå…§åˆªé™¤ã€‚ 開發人員的目標是在穩定發布之å‰ä¿®å¾©æ‰€æœ‰å·²çŸ¥çš„回æ¸ã€‚在ç¾å¯¦ä¸–ç•Œä¸ï¼Œé€™ç¨®å®Œç¾Žæ˜¯ 很難實ç¾çš„;在這種è¦æ¨¡çš„é …ç›®ä¸ï¼Œè®Šæ•¸å¤ªå¤šäº†ã€‚需è¦èªªæ˜Žçš„是,延é²æœ€çµ‚版本åªæœƒ 使å•é¡Œè®Šå¾—更糟;ç‰å¾…下一個åˆä½µçª—å£çš„更改將變多,導致下次出ç¾æ›´å¤šçš„回æ¸éŒ¯èª¤ã€‚ å› æ¤ï¼Œå¤§å¤šæ•¸5.xå…§æ ¸éƒ½æœ‰ä¸€äº›å·²çŸ¥çš„å›žæ¸éŒ¯èª¤ï¼Œä¸éŽï¼Œå¸Œæœ›æ²’有一個是嚴é‡çš„。 一旦一個穩定的版本發布,它的æŒçºŒç¶è·å·¥ä½œå°±è¢«ç§»äº¤çµ¦ã€Œç©©å®šåœ˜éšŠã€ï¼Œç›®å‰ç”± Greg Kroah-Hartmané ˜å°Žã€‚ç©©å®šåœ˜éšŠå°‡ä½¿ç”¨5.x.y編號方案ä¸å®šæœŸåœ°ç™¼å¸ƒç©©å®šç‰ˆæœ¬çš„ 更新。è¦åˆå…¥æ›´æ–°ç‰ˆæœ¬ï¼Œè£œä¸å¿…é ˆï¼ˆ1)修復一個é‡è¦çš„缺陷,且(2)已經åˆä½µåˆ° 下一個開發版本主線ä¸ã€‚å…§æ ¸é€šå¸¸æœƒåœ¨å…¶åˆå§‹ç‰ˆæœ¬å¾Œçš„一個以上的開發周期內收到 穩定版更新。例如,5.2å…§æ ¸çš„æ·å²å¦‚下(2019年): ============== =============================== 七月 7 5.2 穩定版發布 七月 13 5.2.1 七月 21 5.2.2 七月 26 5.2.3 七月 28 5.2.4 七月 31 5.2.5 ... ... å月 11 5.2.21 ============== =============================== 5.2.21是5.2版本的最終穩定更新。 æœ‰äº›å…§æ ¸è¢«æŒ‡å®šçˆ²ã€Œé•·æœŸã€å…§æ ¸ï¼›å®ƒå€‘將得到更長時間的支æŒã€‚在本文ä¸ï¼Œç•¶å‰çš„長期 å…§æ ¸åŠå…¶ç¶è·è€…是: ====== ================================ ================ 3.16 Ben Hutchings ï¼ˆé•·æœŸç©©å®šå…§æ ¸ï¼‰ 4.4 Greg Kroah-Hartman & Sasha Levin ï¼ˆé•·æœŸç©©å®šå…§æ ¸ï¼‰ 4.9 Greg Kroah-Hartman & Sasha Levin 4.14 Greg Kroah-Hartman & Sasha Levin 4.19 Greg Kroah-Hartman & Sasha Levin 5.4 Greg Kroah-Hartman & Sasha Levin ====== ================================ ================ 長期支æŒå…§æ ¸çš„é¸æ“‡ç´”粹是ç¶è·äººå“¡æ˜¯å¦æœ‰éœ€æ±‚和時間來ç¶è·è©²ç‰ˆæœ¬çš„å•é¡Œã€‚ ç›®å‰é‚„沒有爲å³å°‡ç™¼å¸ƒçš„任何特定版本æ供長期支æŒçš„已知計劃。 補ä¸çš„生命周期 -------------- 補ä¸ä¸æœƒç›´æŽ¥å¾žé–‹ç™¼äººå“¡çš„éµç›¤é€²å…¥ä¸»ç·šå…§æ ¸ã€‚相å,有一個ç¨å¾®è¤‡é›œï¼ˆå¦‚æžœæœ‰äº›éž æ£å¼ï¼‰çš„éŽç¨‹ï¼Œæ—¨åœ¨ç¢ºä¿å°æ¯å€‹è£œä¸é€²è¡Œè³ªé‡å¯©æŸ¥ï¼Œä¸¦ç¢ºä¿æ¯å€‹è£œä¸å¯¦ç¾äº†ä¸€å€‹åœ¨ä¸»ç·š ä¸éœ€è¦çš„更改。å°æ–¼å°çš„修復,這個éŽç¨‹å¯èƒ½æœƒå¾ˆå¿«å®Œæˆï¼Œï¼Œè€Œå°æ–¼è¼ƒå¤§æˆ–有çˆè°çš„ 變更,å¯èƒ½æœƒæŒçºŒæ•¸å¹´ã€‚許多開發人員的沮喪來自於å°é€™å€‹éŽç¨‹ç¼ºä¹ç†è§£æˆ–者試圖繞éŽå®ƒã€‚ 爲了減少這種挫敗,本文將æ述補ä¸å¦‚ä½•é€²å…¥å…§æ ¸ã€‚ä¸‹é¢çš„介紹以一種較爲ç†æƒ³åŒ–çš„ æ–¹å¼æ述了這個éŽç¨‹ã€‚更詳細的éŽç¨‹å°‡åœ¨å¾Œé¢çš„ç« ç¯€ä¸ä»‹ç´¹ã€‚ 補ä¸é€šå¸¸è¦ç¶“æ·ä»¥ä¸‹éšŽæ®µï¼š - è¨è¨ˆã€‚這就是補ä¸çš„真æ£éœ€æ±‚——以åŠæ»¿è¶³é€™äº›éœ€æ±‚çš„æ–¹å¼â€”—所在。è¨è¨ˆå·¥ä½œé€šå¸¸ 是在ä¸æ¶‰åŠç¤¾å€çš„情æ³ä¸‹å®Œæˆçš„,但是如果å¯èƒ½çš„話,最好是在公開的情æ³ä¸‹å®Œæˆ é€™é …å·¥ä½œï¼›é€™æ¨£å¯ä»¥ç¯€çœå¾ˆå¤šç¨å¾Œå†é‡æ–°è¨è¨ˆçš„時間。 - 早期評審。補ä¸è¢«ç™¼å¸ƒåˆ°ç›¸é—œçš„郵件列表ä¸ï¼Œåˆ—表ä¸çš„開發人員會回復他們å¯èƒ½æœ‰ çš„ä»»ä½•è©•è«–ã€‚å¦‚æžœä¸€åˆ‡é †åˆ©çš„è©±ï¼Œé€™å€‹éŽç¨‹æ‡‰è©²æœƒç™¼ç¾è£œä¸çš„任何主è¦å•é¡Œã€‚ - 更廣泛的評審。當補ä¸æŽ¥è¿‘準備好ç´å…¥ä¸»ç·šæ™‚,它應該被相關的å系統ç¶è·äººå“¡ 接å———儘管這種接å—並ä¸èƒ½ä¿è‰è£œä¸æœƒä¸€ç›´å»¶ä¼¸åˆ°ä¸»ç·šã€‚補ä¸å°‡å‡ºç¾åœ¨ç¶è·äººå“¡çš„ å系統樹ä¸ï¼Œä¸¦é€²å…¥ -next 樹(如下所述)。當æµç¨‹é€²è¡Œæ™‚,æ¤æ¥é©Ÿå°‡æœƒå°è£œä¸ 進行更廣泛的審查,並發ç¾ç”±æ–¼å°‡æ¤è£œä¸èˆ‡å…¶ä»–人所åšçš„工作åˆä½µè€Œå°Žè‡´çš„任何 å•é¡Œã€‚ - 請注æ„,大多數ç¶è·äººå“¡ä¹Ÿæœ‰æ—¥å¸¸å·¥ä½œï¼Œå› æ¤åˆä½µè£œä¸å¯èƒ½ä¸æ˜¯ä»–們的最優先工作。 如果您的補ä¸å¾—到了需è¦æ›´æ”¹çš„å饋,那麼您應該進行這些更改,或者解釋爲何 ä¸æ‡‰è©²é€²è¡Œé€™äº›æ›´æ”¹ã€‚如果您的補ä¸æ²’有評審æ„見,也沒有被其相應的å系統或 驅動程åºç¶è·è€…接å—ï¼Œé‚£éº¼æ‚¨æ‡‰è©²å …æŒä¸æ‡ˆåœ°å°‡è£œä¸æ›´æ–°åˆ°ç•¶å‰å…§æ ¸ä½¿å…¶å¯è¢«æ£å¸¸ 應用,並ä¸æ–·åœ°ç™¼é€å®ƒä»¥ä¾›å¯©æŸ¥å’Œåˆä½µã€‚ - åˆä½µåˆ°ä¸»ç·šã€‚最終,一個æˆåŠŸçš„補ä¸å°‡è¢«åˆä½µåˆ°ç”±LinusTorvalds管ç†çš„主線å˜å„²åº« ä¸ã€‚æ¤æ™‚å¯èƒ½æœƒå‡ºç¾æ›´å¤šçš„è©•è«–å’Œ/或å•é¡Œï¼›å°é–‹ç™¼äººå“¡ä¾†èªªæ‡‰å°é€™äº›å•é¡Œä¸¦è§£æ±º 出ç¾çš„任何å•é¡Œä»å¾ˆé‡è¦ã€‚ - 穩定版發布。大é‡ç”¨æˆ¶å¯èƒ½å—æ¤è£œä¸å½±éŸ¿ï¼Œå› æ¤å¯èƒ½å†æ¬¡å‡ºç¾æ–°çš„å•é¡Œã€‚ - 長期ç¶è·ã€‚雖然開發人員在åˆä½µä»£ç¢¼å¾Œå¯èƒ½æœƒå¿˜è¨˜ä»£ç¢¼ï¼Œä½†é€™ç¨®è¡Œçˆ²å¾€å¾€æœƒçµ¦é–‹ç™¼ 社å€ç•™ä¸‹ä¸è‰¯å°è±¡ã€‚åˆä½µä»£ç¢¼æ¶ˆé™¤äº†ä¸€äº›ç¶è·è² æ“”ï¼Œå› çˆ²å…¶ä»–äººå°‡ä¿®å¾©ç”±API更改 引起的å•é¡Œã€‚但是,如果代碼è¦é•·æœŸä¿æŒå¯ç”¨ï¼ŒåŽŸå§‹é–‹ç™¼äººå“¡æ‡‰è©²ç¹¼çºŒçˆ²ä»£ç¢¼è² 責。 å…§æ ¸é–‹ç™¼äººå“¡ï¼ˆæˆ–ä»–å€‘çš„åƒ±ä¸»ï¼‰çŠ¯çš„æœ€å¤§éŒ¯èª¤ä¹‹ä¸€æ˜¯è©¦åœ–å°‡æµç¨‹ç°¡åŒ–爲一個「åˆä½µåˆ° 主線ã€æ¥é©Ÿã€‚這種方法總是會讓所有相關人員感到沮喪。 補ä¸å¦‚ä½•é€²å…¥å…§æ ¸ ---------------- åªæœ‰ä¸€å€‹äººå¯ä»¥å°‡è£œä¸åˆä½µåˆ°ä¸»ç·šå…§æ ¸å˜å„²åº«ä¸ï¼šLinusTorvalds。但是,在進入 2.6.38å…§æ ¸çš„9500多個補ä¸ä¸ï¼Œåªæœ‰112個(大約1.3%)是由Linus自己直接é¸æ“‡çš„。 å…§æ ¸é …ç›®å·²ç¶“ç™¼å±•åˆ°ä¸€å€‹æ²’æœ‰ä¸€å€‹é–‹ç™¼äººå“¡å¯ä»¥åœ¨æ²’有支æŒçš„情æ³ä¸‹æª¢æŸ¥å’Œé¸æ“‡æ¯å€‹ 補ä¸çš„è¦æ¨¡ã€‚å…§æ ¸é–‹ç™¼äººå“¡è™•ç†é€™ç¨®å¢žé•·çš„æ–¹å¼æ˜¯ä½¿ç”¨åœç¹žä¿¡ä»»éˆæ§‹å»ºçš„助ç†ç³»çµ±ã€‚ å…§æ ¸ä»£ç¢¼åº«åœ¨é‚輯上被分解爲一組å系統:網絡ã€ç‰¹å®šé«”ç³»çµæ§‹æ”¯æŒã€å…§å˜ç®¡ç†ã€è¦– é »è¨å‚™ç‰ã€‚大多數å系統都有一個指定的ç¶è·äººå“¡ï¼Œå…¶ç¸½é«”è² è²¬è©²å系統ä¸çš„代碼。 這些å系統ç¶è·è€…(鬆散地)是他們所管ç†çš„å…§æ ¸éƒ¨åˆ†çš„ã€Œå®ˆé–€å“¡ã€ï¼›ä»–們(通常) 會接å—一個補ä¸ä»¥åŒ…å«åˆ°ä¸»ç·šå…§æ ¸ä¸ã€‚ å系統ç¶è·äººå“¡æ¯å€‹äººéƒ½ç®¡ç†è‘—è‡ªå·±ç‰ˆæœ¬çš„å…§æ ¸åŽŸå§‹ç¢¼æ¨¹ï¼Œé€šå¸¸ï¼ˆä¸¦éžç¸½æ˜¯ï¼‰ä½¿ç”¨Git。 Gitç‰å·¥å…·ï¼ˆä»¥åŠQuilt或Mercurialç‰ç›¸é—œå·¥å…·ï¼‰å…許ç¶è·äººå“¡è·Ÿè¹¤è£œä¸åˆ—表,包括作者 ä¿¡æ¯å’Œå…¶ä»–元數據。在任何給定的時間,ç¶è·äººå“¡éƒ½å¯ä»¥ç¢ºå®šä»–或她的å˜å„²åº«ä¸çš„哪 些補ä¸åœ¨ä¸»ç·šä¸æ‰¾ä¸åˆ°ã€‚ 當åˆä½µçª—å£æ‰“é–‹æ™‚ï¼Œé ‚ç´šç¶è·äººå“¡å°‡è¦æ±‚Linus從å˜å„²åº«ä¸ã€Œæ‹‰å‡ºã€ä»–們爲åˆä½µé¸æ“‡ 的補ä¸ã€‚如果LinusåŒæ„,補ä¸æµå°‡æµå‘ä»–çš„å˜å„²åº«ï¼Œæˆçˆ²ä¸»ç·šå…§æ ¸çš„一部分。 Linuså°æ‹‰å–ä¸æŽ¥æ”¶åˆ°çš„特定補ä¸çš„關注程度å„ä¸ç›¸åŒã€‚很明顯,有時他看起來很 關注。但是一般來說,Linus相信å系統ç¶è·äººå“¡ä¸æœƒå‘上游發é€å£žè£œä¸ã€‚ å系統ç¶è·äººå“¡åéŽä¾†ä¹Ÿå¯ä»¥å¾žå…¶ä»–ç¶è·äººå“¡é‚£è£¡ç²å–補ä¸ã€‚例如,網絡樹是由首先 在專用於網絡è¨å‚™é©…動程åºã€ç„¡ç·šç¶²çµ¡ç‰çš„樹ä¸ç©ç´¯çš„補ä¸æ§‹å»ºçš„。æ¤å˜å„²éˆå¯ä»¥ ä»»æ„長,但很少超éŽå…©å€‹æˆ–三個連çµã€‚由於éˆä¸çš„æ¯å€‹ç¶è·è€…都信任那些管ç†è¼ƒä½Ž 級別樹的ç¶è·è€…,所以這個éŽç¨‹ç¨±çˆ²ã€Œä¿¡ä»»éˆã€ã€‚ 顯然,在這樣的系統ä¸ï¼Œç²å–å…§æ ¸è£œä¸å–決於找到æ£ç¢ºçš„ç¶è·è€…。直接å‘Linusç™¼é€ è£œä¸é€šå¸¸ä¸æ˜¯æ£ç¢ºçš„方法。 Next 樹 ------- å系統樹éˆå¼•å°Žè£œä¸æµåˆ°å…§æ ¸ï¼Œä½†å®ƒä¹Ÿæ出了一個有趣的å•é¡Œï¼šå¦‚果有人想查看爲 下一個åˆä½µçª—å£æº–備的所有補ä¸æ€Žéº¼è¾¦ï¼Ÿé–‹ç™¼äººå“¡å°‡æ„Ÿèˆˆè¶£çš„是,還有什麼其他的 更改有待解決,以了解是å¦å˜åœ¨éœ€è¦æ“”心的è¡çªï¼›ä¾‹å¦‚ï¼Œæ›´æ”¹æ ¸å¿ƒå…§æ ¸å‡½æ•¸åŽŸåž‹çš„ 修補程åºå°‡èˆ‡ä½¿ç”¨è©²å‡½æ•¸èˆŠå½¢å¼çš„任何其他修補程åºè¡çªã€‚審查人員和測試人員希望 在所有這些變更到é”ä¸»ç·šå…§æ ¸ä¹‹å‰ï¼Œèƒ½å¤ 訪å•å®ƒå€‘的集æˆå½¢å¼çš„變更。您å¯ä»¥å¾žæ‰€æœ‰ 相關的å系統樹ä¸æå–æ›´æ”¹ï¼Œä½†é€™å°‡æ˜¯ä¸€é …è¤‡é›œä¸”å®¹æ˜“å‡ºéŒ¯çš„å·¥ä½œã€‚ 解決方案以-next樹的形å¼å‡ºç¾ï¼Œåœ¨é€™è£¡åç³»çµ±æ¨¹è¢«æ”¶é›†ä»¥ä¾›æ¸¬è©¦å’Œå¯©æŸ¥ã€‚é€™äº›æ¨¹ä¸ ç”±Andrew Mortonç¶è·çš„較è€çš„一個,被稱爲「-mmã€ï¼ˆç”¨æ–¼å…§å˜ç®¡ç†ï¼Œå‰µå»ºæ™‚爲æ¤ï¼‰ã€‚ -mm 樹集æˆäº†ä¸€é•·ä¸²å系統樹ä¸çš„補ä¸ï¼›å®ƒé‚„包å«ä¸€äº›æ—¨åœ¨å¹«åŠ©èª¿è©¦çš„補ä¸ã€‚ 除æ¤ä¹‹å¤–,-mm 還包å«å¤§é‡ç”±Andrew直接é¸æ“‡çš„補ä¸ã€‚這些補ä¸å¯èƒ½å·²ç¶“發布在郵件 列表上,或者它們å¯èƒ½æ‡‰ç”¨æ–¼å…§æ ¸ä¸æœªæŒ‡å®šå系統樹的部分。åŒæ™‚,-mm 作爲最後 手段的å系統樹;如果沒有其他明顯的路徑å¯ä»¥è®“補ä¸é€²å…¥ä¸»ç·šï¼Œé‚£éº¼å®ƒå¾ˆå¯èƒ½æœ€ 終é¸æ“‡-mm 樹。累ç©åœ¨-mm ä¸çš„å„種補ä¸æœ€çµ‚將被轉發到é©ç•¶çš„å系統樹,或者直接 發é€åˆ°Linus。在典型的開發周期ä¸ï¼Œå¤§ç´„5-10%的補ä¸é€šéŽ-mm 進入主線。 當å‰-mm 補ä¸å¯åœ¨ã€Œmmotmã€ï¼ˆ-mm of the moment)目錄ä¸æ‰¾åˆ°ï¼š https://www.ozlabs.org/~akpm/mmotm/ 然而,使用MMOTM樹å¯èƒ½æœƒå分令人é 疼;它甚至å¯èƒ½ç„¡æ³•ç·¨è¯ã€‚ 下一個周期補ä¸åˆä½µçš„主è¦æ¨¹æ˜¯linux-next,由Stephen Rothwell ç¶è·ã€‚æ ¹æ“šè¨è¨ˆ linux-next 是下一個åˆä½µçª—å£é—œé–‰å¾Œä¸»ç·šçš„快照。linux-next樹在Linux-kernel å’Œ Linux-next 郵件列表ä¸ç™¼å¸ƒï¼Œå¯å¾žä»¥ä¸‹ä½ç½®ä¸‹è¼‰ï¼š https://www.kernel.org/pub/linux/kernel/next/ Linux-next 已經æˆçˆ²å…§æ ¸é–‹ç™¼éŽç¨‹ä¸ä¸å¯æˆ–缺的一部分;在一個給定的åˆä½µçª—å£ä¸åˆä½µ 的所有補ä¸éƒ½æ‡‰è©²åœ¨åˆä½µçª—å£æ‰“開之å‰çš„一段時間內找到進入Linux-next 的方法。 Staging 樹 ---------- å…§æ ¸åŽŸå§‹ç¢¼æ¨¹åŒ…å«drivers/staging/目錄,其ä¸æœ‰è¨±å¤šé©…動程åºæˆ–文件系統的å目錄 æ£åœ¨è¢«æ·»åŠ åˆ°å…§æ ¸æ¨¹ä¸ã€‚它們在ä»ç„¶éœ€è¦æ›´å¤šçš„ä¿®æ£çš„時候å¯ä»¥ä¿ç•™åœ¨driver/staging/ 目錄ä¸ï¼›ä¸€æ—¦å®Œæˆï¼Œå°±å¯ä»¥å°‡å®ƒå€‘ç§»åˆ°å…§æ ¸ä¸ã€‚這是一種跟蹤ä¸ç¬¦åˆLinuxå…§æ ¸ç·¨ç¢¼æˆ– 質é‡æ¨™æº–的驅動程åºçš„方法,人們å¯èƒ½å¸Œæœ›ä½¿ç”¨å®ƒå€‘並跟蹤開發。 Greg Kroah Hartman ç›®å‰è² 責ç¶è·staging 樹。ä»éœ€è¦ä¿®æ£çš„驅動程åºå°‡ç™¼é€çµ¦ä»–, æ¯å€‹é©…動程åºåœ¨drivers/staging/ä¸éƒ½æœ‰è‡ªå·±çš„å目錄。除了驅動程åºæºæ–‡ä»¶ä¹‹å¤–, 目錄ä¸é‚„應該有一個TODO文件。TODO文件列出了驅動程åºéœ€è¦æŽ¥å—çš„æš«åœçš„工作, 以åŠé©…動程åºçš„任何補ä¸éƒ½æ‡‰è©²æŠ„é€çš„人員列表。當å‰çš„è¦å‰‡è¦æ±‚,stagingçš„é©…å‹• 程åºå¿…é ˆè‡³å°‘æ£ç¢ºç·¨è¯ã€‚ Staging 是一種讓新的驅動程åºé€²å…¥ä¸»ç·šçš„相å°å®¹æ˜“的方法,它們會幸é‹åœ°å¼•èµ·å…¶ä»– 開發人員的注æ„,並迅速改進。然而,進入staging並ä¸æ˜¯æ•…事的çµå°¾ï¼›stagingä¸ æ²’æœ‰çœ‹åˆ°å¸¸è¦é€²å±•çš„代碼最終將被刪除。經銷商也傾å‘於相å°ä¸é¡˜æ„使用stagingé©…å‹• 程åºã€‚å› æ¤ï¼Œåœ¨æˆçˆ²ä¸€å€‹åˆé©çš„主線驅動的路上,staging 僅是一個ä¸è½‰ç«™ã€‚ 工具 ---- 從上é¢çš„文本å¯ä»¥çœ‹å‡ºï¼Œå…§æ ¸é–‹ç™¼éŽç¨‹åœ¨å¾ˆå¤§ç¨‹åº¦ä¸Šä¾è³´æ–¼åœ¨ä¸åŒæ–¹å‘上èšé›†è£œä¸çš„ 能力。如果沒有é©ç•¶å¼·å¤§çš„工具,整個系統將無法在任何地方æ£å¸¸å·¥ä½œã€‚關於如何使用 這些工具的教程é é 超出了本文檔的範åœï¼Œä½†é‚„是用一點篇幅介紹一些關éµé»žã€‚ 到目å‰çˆ²æ¢ï¼Œå…§æ ¸ç¤¾å€ä½¿ç”¨çš„主è¦åŽŸå§‹ç¢¼ç®¡ç†ç³»çµ±æ˜¯git。Git是在自由軟體社å€ä¸é–‹ç™¼ 的許多分布å¼ç‰ˆæœ¬æŽ§åˆ¶ç³»çµ±ä¹‹ä¸€ã€‚它éžå¸¸é©åˆå…§æ ¸é–‹ç™¼ï¼Œå› 爲它在處ç†å¤§åž‹å˜å„²åº«å’Œ 大é‡è£œä¸æ™‚性能éžå¸¸å¥½ã€‚它也以難以å¸ç¿’和使用而著稱,儘管隨著時間的推移它變得 更好了。å°æ–¼å…§æ ¸é–‹ç™¼äººå“¡ä¾†èªªï¼Œå°Gitçš„æŸç¨®ç†Ÿæ‚‰å¹¾ä¹Žæ˜¯ä¸€ç¨®è¦æ±‚ï¼›å³ä½¿ä»–們ä¸å°‡å®ƒ 用於自己的工作,他們也需è¦Git來跟上其他開發人員(以åŠä¸»ç·šï¼‰æ£åœ¨åšçš„事情。 ç¾åœ¨å¹¾ä¹Žæ‰€æœ‰çš„Linux發行版都打包了Git。Git主é ä½æ–¼ï¼š https://git-scm.com/ æ¤é é¢åŒ…å«äº†æ–‡æª”和教程的連çµã€‚ 在ä¸ä½¿ç”¨gitçš„å…§æ ¸é–‹ç™¼äººå“¡ä¸ï¼Œæœ€æµè¡Œçš„é¸æ“‡å¹¾ä¹Žè‚¯å®šæ˜¯Mercurial: http://www.seleric.com/mercurial/ Mercurial與Git共享許多特性,但它æ供了一個界é¢ï¼Œè¨±å¤šäººè¦ºå¾—它更易於使用。 å¦ä¸€å€‹å€¼å¾—了解的工具是Quilt: https://savannah.nongnu.org/projects/quilt Quilt 是一個補ä¸ç®¡ç†ç³»çµ±ï¼Œè€Œä¸æ˜¯åŽŸå§‹ç¢¼ç®¡ç†ç³»çµ±ã€‚它ä¸æœƒéš¨è‘—時間的推移跟蹤æ·å²ï¼› 相å,它é¢å‘æ ¹æ“šä¸æ–·ç™¼å±•çš„代碼庫跟蹤一組特定的更改。一些主è¦çš„å系統ç¶è·äººå“¡ 使用Quilt來管ç†æ‰“ç®—å‘上游移動的補ä¸ã€‚å°æ–¼æŸäº›æ¨¹çš„管ç†ï¼ˆä¾‹å¦‚-mm),quilt 是 最好的工具。 郵件列表 -------- 大é‡çš„Linuxå…§æ ¸é–‹ç™¼å·¥ä½œæ˜¯é€šéŽéƒµä»¶åˆ—表完æˆçš„。如果ä¸åŠ 入至少一個æŸå€‹åˆ—表, 就很難æˆçˆ²ç¤¾å€ä¸çš„一個「全功能ã€æˆå“¡ã€‚但是,Linux郵件列表å°é–‹ç™¼äººå“¡ä¾†èªªä¹Ÿæ˜¯ 一個潛在的å±éšªï¼Œä»–們å¯èƒ½æœƒè¢«ä¸€å †é›»å郵件淹沒ã€é•åLinux列表上使用的約定, 或者兩者兼而有之。 å¤§å¤šæ•¸å…§æ ¸éƒµä»¶åˆ—è¡¨éƒ½åœ¨vger.kernel.org上é‹è¡Œï¼›ä¸»åˆ—表ä½æ–¼ï¼š http://vger.kernel.org/vger-lists.html ä¸éŽï¼Œä¹Ÿæœ‰ä¸€äº›åˆ—表託管在別處;其ä¸ä¸€äº›åˆ—表ä½æ–¼ redhat.com/mailman/listinfo。 ç•¶ç„¶ï¼Œå…§æ ¸é–‹ç™¼çš„æ ¸å¿ƒéƒµä»¶åˆ—è¡¨æ˜¯linux-kernel。這個列表是一個令人生ç•çš„地方: æ¯å¤©çš„ä¿¡æ¯é‡å¯ä»¥é”到500æ¢ï¼Œå™ªéŸ³å¾ˆé«˜ï¼Œè«‡è©±æŠ€è¡“性很強,且åƒèˆ‡è€…並ä¸ç¸½æ˜¯è¡¨ç¾å‡º 高度的禮貌。但是,沒有其他地方å¯ä»¥è®“å…§æ ¸é–‹ç™¼ç¤¾å€ä½œçˆ²ä¸€å€‹æ•´é«”èšé›†åœ¨ä¸€èµ·ï¼› ä¸ä½¿ç”¨æ¤åˆ—表的開發人員將錯éŽé‡è¦ä¿¡æ¯ã€‚ 以下一些æ示å¯ä»¥å¹«åŠ©åœ¨linux-kernel生å˜ï¼š - 將郵件轉移到單ç¨çš„文件夾,而ä¸æ˜¯ä¸»éƒµç®±æ–‡ä»¶å¤¾ã€‚æˆ‘å€‘å¿…é ˆèƒ½å¤ æŒçºŒåœ°å¿½ç•¥æ´ªæµã€‚ - ä¸è¦è©¦åœ–跟上æ¯ä¸€æ¬¡è«‡è©±â€”—沒人會這樣。é‡è¦çš„是è¦ç¯©é¸æ„Ÿèˆˆè¶£çš„ä¸»é¡Œï¼ˆä½†è«‹æ³¨æ„ é•·æ™‚é–“çš„å°è©±å¯èƒ½æœƒå離原來的主題,儘管未改變電å郵件的主題)和åƒèˆ‡çš„人。 - ä¸è¦å›žå¾©æŒ‘事的人。如果有人試圖激起憤怒,請忽略他們。 - 當回復Linuxå…§æ ¸é›»å郵件(或其他列表上的電å郵件)時,請爲所有相關人員ä¿ç•™ Cc: 抄é€é 。如果沒有確實的ç†ç”±ï¼ˆå¦‚明確的請求),則ä¸æ‡‰åˆªé™¤æ”¶ä»¶äººã€‚ä¸€å®šè¦ ç¢ºä¿ä½ è¦å›žå¾©çš„人在抄é€åˆ—表ä¸ã€‚é€™å€‹æ…£ä¾‹ä¹Ÿä½¿ä½ ä¸å¿…在回覆郵件時明確è¦æ±‚被抄é€ã€‚ - 在æ出å•é¡Œä¹‹å‰ï¼Œæœç´¢åˆ—表å˜æª”(和整個網絡)。有些開發人員å¯èƒ½æœƒå°é‚£äº›é¡¯ç„¶ 沒有完æˆå®¶åºä½œæ¥çš„人感到ä¸è€ç…©ã€‚ - é¿å…é ‚éƒ¨å›žå¾©ï¼ˆæŠŠä½ çš„ç”æ¡ˆæ”¾åœ¨ä½ è¦å›žå¾©çš„引文上é¢çš„åšæ³•ï¼‰ã€‚é€™æœƒè®“ä½ çš„å›žç”更難 ç†è§£ï¼Œå°è±¡ä¹Ÿå¾ˆå·®ã€‚ - 在æ£ç¢ºçš„郵件列表發å•ã€‚linux-kernel å¯èƒ½æ˜¯é€šç”¨çš„è¨Žè«–å ´æ‰€ï¼Œä½†å®ƒä¸æ˜¯å°‹æ‰¾æ‰€æœ‰ åç³»çµ±é–‹ç™¼äººå“¡çš„æœ€ä½³å ´æ‰€ã€‚ 最後一點——找到æ£ç¢ºçš„郵件列表——是開發人員常出錯的地方。在linux-kernel上 æ出與網絡相關的å•é¡Œçš„人幾乎肯定會收到一個禮貌的建è°ï¼Œè½‰åˆ°netdev列表上æ出, å› çˆ²é€™æ˜¯å¤§å¤šæ•¸ç¶²çµ¡é–‹ç™¼äººå“¡ç¶“å¸¸å‡ºç¾çš„列表。還有其他列表å¯ç”¨æ–¼scsiã€video4linux〠ideã€filesystemç‰å系統。查找郵件列表的最佳ä½ç½®æ˜¯èˆ‡å…§æ ¸åŽŸå§‹ç¢¼ä¸€èµ·æ‰“包的 MAINTAINERS文件。 é–‹å§‹å…§æ ¸é–‹ç™¼ ------------ é—œæ–¼å¦‚ä½•é–‹å§‹å…§æ ¸é–‹ç™¼éŽç¨‹çš„å•é¡Œå¾ˆå¸¸è¦‹â€”—個人和公å¸çš†ç„¶ã€‚åŒæ¨£å¸¸è¦‹çš„是失誤,這 使得關係的開始比本應的更困難。 å…¬å¸é€šå¸¸å¸Œæœ›è˜è«‹çŸ¥å的開發人員來啓動開發團隊。實際上,這是一種有效的技術。 但它也往往是昂貴的,而且å°å¢žåŠ æœ‰ç¶“é©—çš„å…§æ ¸é–‹ç™¼äººå“¡çš„æ•¸é‡æ²’有多大幫助。考 慮到時間投入,å¯ä»¥è®“å…§éƒ¨é–‹ç™¼äººå“¡åŠ å¿«Linuxå…§æ ¸çš„é–‹ç™¼é€Ÿåº¦ã€‚åˆ©ç”¨é€™æ®µæ™‚é–“å¯ä»¥ 讓僱主æ“æœ‰ä¸€æ‰¹æ—¢äº†è§£å…§æ ¸åˆäº†è§£å…¬å¸çš„開發人員,還å¯ä»¥å¹«åŠ©åŸ¹è¨“其他人。從ä¸æœŸ 來看,這通常是更有利å¯åœ–的方法。 å¯ä»¥ç†è§£çš„是,單個開發人員往往å°èµ·æ¥æ„Ÿåˆ°èŒ«ç„¶ã€‚å¾žä¸€å€‹å¤§åž‹é …ç›®é–‹å§‹å¯èƒ½æœƒå¾ˆ 嚇人;人們往往想先用一些較å°çš„æ±è¥¿ä¾†è©¦è©¦æ°´ã€‚ç”±æ¤ï¼Œä¸€äº›é–‹ç™¼äººå“¡é–‹å§‹å‰µå»ºä¿®è£œ æ‹¼å¯«éŒ¯èª¤æˆ–è¼•å¾®ç·¨ç¢¼é¢¨æ ¼å•é¡Œçš„補ä¸ã€‚ä¸å¹¸çš„是,這樣的補ä¸æœƒç”¢ç”Ÿä¸€å®šç¨‹åº¦çš„噪音, 這會分散整個開發社å€çš„注æ„åŠ›ï¼Œå› æ¤ï¼Œå®ƒå€‘越來越被人ä¸çœ‹é‡ã€‚希望å‘社å€ä»‹ç´¹ 自己的新開發人員將無法通éŽé€™äº›æ–¹å¼ç²å¾—他們期待的å響。 Andrew Morton çˆ²æœ‰æŠ±è² çš„å…§æ ¸é–‹ç™¼äººå“¡æä¾›äº†å¦‚ä¸‹å»ºè° :: æ‰€æœ‰å…§æ ¸é–‹ç™¼è€…çš„ç¬¬ä¸€å€‹é …ç›®è‚¯å®šæ‡‰è©²æ˜¯ã€Œç¢ºä¿å…§æ ¸åœ¨æ‚¨å¯ä»¥æ“作的所有 機器上始終完美é‹è¡Œã€ã€‚通常的方法是和其他人一起解決å•é¡Œï¼ˆé€™å¯èƒ½éœ€ è¦å …æŒï¼ï¼‰ï¼Œä½†å°±æ˜¯å¦‚æ¤â€”â€”é€™æ˜¯å…§æ ¸é–‹ç™¼çš„ä¸€éƒ¨åˆ†ã€‚ (http://lwn.net/articles/283982/) 在沒有明顯å•é¡Œéœ€è¦è§£æ±ºçš„情æ³ä¸‹ï¼Œé€šå¸¸å»ºè°é–‹ç™¼äººå“¡æŸ¥çœ‹ç•¶å‰çš„回æ¸å’Œé–‹æ”¾ç¼ºé™· 列表。從來都ä¸ç¼ºå°‘需è¦è§£æ±ºçš„å•é¡Œï¼›é€šéŽè§£æ±ºé€™äº›å•é¡Œï¼Œé–‹ç™¼äººå“¡å°‡å¾žè©²éŽç¨‹ç²å¾— 經驗,åŒæ™‚與開發社å€çš„其他æˆå“¡å»ºç«‹ç›¸äº’å°Šé‡ã€‚