本節書摘來自異步社群《配置管理最佳實踐》一書中的第1章,第1.1節,作者: 【美】bob aiello , leslie sachs著,更多章節内容可以通路雲栖社群“異步社群”公衆号檢視
源代碼管理是保護組裝成系統的所有工件(artifact)的學科。源代碼管理是配置管理的核心職能(function),直接影響着團隊的生産力和産品品質。不幸的是,很多公司并沒有意識到建立高效源代碼管理機制的重要性,缺乏實施源代碼管理的能力,缺少源代碼管理工具和流程。這一章将讨論如何正确地進行源代碼管理。我曾經負責過多家分布全球的大公司的源代碼管理工作。源代碼管理必須確定産品釋出的源代碼永遠都不能丢失。源代碼需要通過一種靈活和創新的方式進行管理。每個公司的情況都是不同的,是以常常需要針對不同的開發團隊采用不同的源代碼管理方法。但是不同的開發團隊之間也是有共性的,我們更要關注那些共性,關注那些滿足團隊最本質需求的方面。源代碼管理通常為配置管理的其他方面提供了基礎支援,尤其是在建構工程、釋出管理和部署方面。
這一章總體介紹了源代碼管理的很多方面,包括目标、原則和基本概念。大部配置設定置管理的相關職能都是以源代碼庫為基礎的,包括建構工程、釋出管理和部署,這些知識可以幫助你從整體結構上了解本章内容。本章首先列舉了我和同僚的幾個執行個體,然後講述了如何實行源代碼管理,包括赢得管理層的支援。接下來,從基線以及建立配置管理時間機器1(cm time machine)來講一些源代碼管理的核心概念。和源代碼密切相關的是缺陷和需求跟蹤,這通常會與源代碼管理工具和流程內建到一起。接着讨論了通過對源代碼管理進行分布式開發。無論是一個大團隊還是小團隊,都應該考慮采用合适的工具來支援開發團隊的工作。在這裡我列出了幾個正常的指導原則,主要涉及如何選擇正确的源代碼管理工具、如何通過api來擴充它,以及一些不要過度工程化源代碼管理方案的提示。即便品質是“免費的”,但是想做好配置管理的工作仍然需要資金的支援,尤其是考慮到一些教育訓練的需求。與其緊密相關的是定義一個滿足團隊需求的配置管理工具使用模型。我們也會讨論在實施源代碼管理和建立源代碼管理過程中可能遇到的風險。最後,我分享了如何對待一些配置管理工具的進階使用者。
源代碼管理之是以如此重要是因為既要保證資産是安全的,又要允許通過受控、可靠的配置庫對其進行通路。源代碼管理提供了管理源代碼和把工件組裝成系統的工具和方法。在配置管理術語中,我們稱其為配置項(ci, configuration item)。所有開發團隊都需要識别和控制配置項。源代碼管理是公司開始實施軟體配置管理的開端。良好的源代碼管理可以讓你一邊處理長期的開發任務,一邊快速釋出緊急更新檔。靈活和精益的源代碼管理非常重要,它為很多其他依賴有效源代碼管理的工作奠定了基礎。另外一個需要考慮的問題是,如果沒有實行有效的(可重複的)源代碼管理過程,很多糟糕的事情就會發生,包括開發中的重大中斷、不必要的缺陷和大量的重複工作所浪費的時間。
當糟糕的事情發生的時候
當糟糕的事情發生的時候,我的手機鈴聲就會響起。于是我總結了一條,當一切進展順利的時候,是沒有人會打給我的;經常是當人們遇到問題需要幫助的時候,就會打給我;而通常是在重大問題造成源代碼丢失或者其他問題的時候,就會立刻打給我。這本身可能就是我工作最好的一部分,因為它可以讓我看到自己的工作在軟體開發中有着顯著的積極影響。這裡首先需要了解的是為什麼糟糕的事情會發生。源代碼經常會因為下面的原因而丢失:
源代碼管理工具和流程缺失
采用了不可靠的工具
使用者沒有經過教育訓練,是以即便是最好的工具也不能幫助他們
聊勝于無的釋出和部署過程
複雜的分支導緻使用者犯錯
溝通不暢和團隊合作很差
靈活部分太多導緻複雜性
源代碼管理工具缺少有效的行政管理過程的支援
我曾經在大公司中處理過上邊說到的每一個問題。也曾經在源代碼管理問題可能會導緻損失數百萬美元,甚至是災難性事件(比如飛機相撞)發生這樣的公司工作過。雖然很多同僚都肯定規範的源代碼管理帶來的價值,但事實是很多人并不這麼認為。經常遇到很多經驗豐富的技術專家卻對源代碼管理最佳實踐一無所知。我曾經在一些大型金融服務公司工作,在那裡負責公司級源代碼管理實施。雖然作為配置管理的狂熱分子推廣最佳實踐是我的工作,但是想得到進階管理人員的認可并支援我的工作卻是一項挑戰。