談談原始碼管理那點事兒(二)——SVN和TFS,你選誰?
SVN簡介:
SVN全名Subversion,即版本控制系統。SVN與CVS一樣,是一個跨平臺的軟體,支援大多數常見的作業系統。作為一個開源的版本控制系統,Subversion管理著隨時間改變的資料。這些資料放置在一箇中央資料檔案庫(repository)中。這個檔案庫很像一個普通的檔案伺服器,不過它會記住每一次檔案的變動。這樣你就可以把檔案恢復到舊的版本,或是瀏覽檔案的變動歷史。Subversion是一個通用的系統,可用來管理任何型別的檔案,其中包括了程式原始碼。
具體功能和使用說明的話,我就不多說了。相信大家也都用過很多了。大部分的合作專案都是在上面進行了。
TFS簡介:
全名:visual studio Team Services。是微軟的一款ALM(Application Lifecycle Management )
讓我們從一個軟體開發團隊的不同角色來進行一個簡單的功能說明。
1、專案經理:
初始化專案:新專案、設定軟體過程、配置專案門戶、配置原始碼管理、建立迭代、設定程式碼遷入策略、上傳專案相關文件;
組織團隊及團隊成員分配許可權
用工作項跟蹤管理專案:跟蹤管理QoS 需求、跟蹤管理功能性需求、跟蹤管理任務、跟蹤管理BUG 、跟蹤管理風險
專案分支和合並
基線管理
設定警報和通知
案例演練
2、架構師:
使用用例圖、類圖、活動圖、序列圖、包圖和部署圖
驗證架構
非功能性需求設計
反向工程:從程式碼到架構檢視
3、開發人員
版本管理:遷入、簽出、分支、合併、解決衝突、擱置和簽出擱置、將遷入和工作項關聯;
程式碼走查與程式碼重構
程式碼覆蓋分析、程式碼靜態分析、效能探測
單元測試:測試驅動開發模式
4、測試人員:
測試計劃和測試用例
整合測試、系統測試、需求確認測試、發行測試;
WEB專案測試
UI自動化測試
跟蹤BUG
案例
5、配置管理人員:
構建服務
實驗室管理器
建立新的構建型別、執行構建、檢視構建、構建產生工作項
持續化整合
簡單粗暴的對比:
1、是否開源?
SVN,是。
TFS,否。
2、使用者體驗度?
SVN: 程式碼的Commit和Check out和更快,操作上更簡單,學習成本低。作為原始碼管理,很不錯!但是功能有限
TFS:功能強大,全生命週期的管理都有,從設計一直到開發、測試、構建部署。操作比較複雜。學習成本較高。
3、實施難以程度?
SVN:簡單,實施起來容易,服務端搭建較容易。其他開發成員,只需要安裝客戶端就能使用。
TFS:複雜,安裝、配置和部署過程比較繁瑣。團隊開發大型專案,能夠在許可權上做很好的控制,而且可以做分授權。在實施全生命週期的管理上,很難全部落實下來。一旦專案的資料越來越多的時候,大家就逐漸失去了探索和發現的耐心了。
4、效果?
SVN:原始碼、檔案版本控制上,短小精悍,能充分滿足版本控制的需求!但是許可權控制上,還有提升空間。
TFS:全生命週期管理,協作方便。管理上統一,許可權控制做的很不錯!一次付費,“受益終生”。
小結:如何抉擇?我的建議是,根據自己公司的情況來,如果開發的專案不大(程式碼量不超過50萬行),專案團隊人員不多(不超過100人),可以使用SVN做原始碼和文件的版本控制,至於測試和需求,則可以用一些其他的開源工具,比如:禪道、confluence。對於,大型專案和開發團隊的話,建議使用tfs。再加上,現在微軟也逐漸開始擁抱開源了!