.. 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 <2023002089@link.tyut.edu.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次變更(“補ä¸â€æˆ–“變更集â€ï¼‰çš„速度åˆä½µã€‚ ï¼ˆé †ä¾¿èªªä¸€å¥ï¼Œå€¼å¾—注æ„的是,åˆä½µçª—壿œŸé–“集æˆçš„æ›´æ”¹ä¸¦ä¸æ˜¯æ†‘空產生的;它們是經 æå‰æ”¶é›†ã€æ¸¬è©¦å’Œåˆ†ç´šçš„。ç¨å¾Œå°‡è©³ç´°æè¿°è©²éŽç¨‹çš„工作方å¼ã€‚) åˆä½µçª—壿ŒçºŒå¤§ç´„å…©é€±ã€‚åœ¨é€™æ®µæ™‚é–“çµæŸæ™‚,Linus Torvaldså°‡è²æ˜Žçª—å£å·²é—œé–‰ï¼Œä¸¦ 釋放第一個“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更改 引起的å•題。但是,如果代碼è¦é•·æœŸä¿æŒå¯ç”¨ï¼ŒåŽŸå§‹é–‹ç™¼äººå“¡æ‡‰è©²ç¹¼çºŒçˆ²ä»£ç¢¼è² è²¬ã€‚ å…§æ ¸é–‹ç™¼äººå“¡ï¼ˆæˆ–ä»–å€‘çš„åƒ±ä¸»ï¼‰çŠ¯çš„æœ€å¤§éŒ¯èª¤ä¹‹ä¸€æ˜¯è©¦åœ–å°‡æµç¨‹ç°¡åŒ–爲一個“åˆä½µåˆ° ä¸»ç·šâ€æ¥é©Ÿã€‚這種方法總是會讓所有相關人員感到沮喪。 補ä¸å¦‚ä½•é€²å…¥å…§æ ¸ ---------------- åªæœ‰ä¸€å€‹äººå¯ä»¥å°‡è£œä¸åˆä½µåˆ°ä¸»ç·šå…§æ ¸å˜å„²åº«ä¸ï¼šLinus Torvalds。但是,在進入 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/) 在沒有明顯å•題需è¦è§£æ±ºçš„æƒ…æ³ä¸‹ï¼Œé€šå¸¸å»ºè°é–‹ç™¼äººå“¡æŸ¥çœ‹ç•¶å‰çš„è¿´æ¸å’Œé–‹æ”¾ç¼ºé™· 列表。從來都ä¸ç¼ºå°‘需è¦è§£æ±ºçš„å•題;通éŽè§£æ±ºé€™äº›å•題,開發人員將從該éŽç¨‹ç²å¾— ç¶“é©—ï¼ŒåŒæ™‚與開發社å€çš„å…¶ä»–æˆå“¡å»ºç«‹ç›¸äº’å°Šé‡ã€‚