流行的源程式版本管理軟體和專案管理軟體各自的優缺點

喜歡搞事的男孩紙發表於2016-03-14

1、Microsoft TFS

TFS本身的功能非常強大,並不單單是個原始碼管理,不過個人用起來一般也就主要用其原始碼管理功能。

感覺tfs還是很強大的:

  • 任務版上能將需求、專案進度一覽無餘,對於小團隊而言,比甘特圖更有用
  • 整合了專案管理、版本控制、BUG 跟蹤,能有效實現 SCRUM
  • 能與 VS 無縫接合

缺點:

  • 整個系統是用 asp 實現的,用瀏覽器訪問相當慢(不知道是不是伺服器效能太低還是我個人用的電腦配置太低)
  • 從 IE 上訪問、填寫各種開發、測試記錄,也是很慢,感覺不如 mantis BT 這樣基於 php 的那麼方便、迅速
  • 用 XP 系統無法訪問,還得是64位的? 所以把電腦的整體效能拖下來了
  • 團隊的郵件細節配置比較複雜,我不關心的專案的變更集也會給我發郵件
  • 測試用例功能具體有無好的應用案例?如何配合自動化測試?

2、Github

Git 是一個原始碼版本控制系統,正在迅速成為開源專案的標準。它有一個強大的分散式模型,允許高階使用者用分支來處理各種棘手的問題和改寫歷史記錄。

GIT的主要優點是時刻保持資料完整性:在儲存到 Git 之前,所有資料都要進行內容的校驗和(checksum)計算,並將此結果作為資料的唯一標識和索引。換句話說,Git 能察覺檔案(夾)的任何改動。這項特性作為 Git 的設計哲學,建在整體架構的最底層。所以如果檔案在傳輸時變得不完整,或者磁碟損壞導致檔案資料缺失,Git 都能立即察覺。

GIT的缺點是:

  • 概念過於複雜。引入了 index/commit/stash/branch/remote repo 等諸多概念。對於初學 Git 的使用者,在使用 Git 的過程中還會繼續遇到更多的陌生概念。
  • 命令列語法設計得比較隨意且不一致。例如 git pull 等價於 git fetch 後加 git merge,git branch -b 等價於 git branch 後跟 git checkout 。
  • 命令列幫助提示晦澀難懂。比如 git push 的說明 Update remote refs along with associated objects,恐怕很多使用者不明白 remote refs 到底是指啥吧。
  • 缺乏良好的封裝。初學者有時不得不面對(需要用到(和內部實現相關的知識))的問題。
  • 對程式碼的維護者友好,但卻犧牲了共享者的使用體驗。這個問題或許可以通過更好的使用者介面來解決。
  • 版本管理未必安全。理論上版本管理系統應該允許程式碼提交者作任何改動,並且能撤銷這些改動。但事實上提交者有不少方法可以破壞一個程式碼庫的內容。
  • 一些簡單的操作需要用到過多的命令 。

3、SVN

優點:效能提高。SVN不管檔案是文字還是二進位制型別,在內部都是以二進位制差異比較演算法來表示檔案的更新部分。這表示所有的檔案在檔案庫中都是以差異的形式儲存。而且在網路上傳輸的,都是較小的檔案差異部分。這也使建立分支、打標籤、合併等操作可以非常快地完成.對目錄的組織的管理更加方便。SVN不光對檔案做版本跟蹤,也會對目錄做版本跟蹤。因此可以根據專案的需要,對目錄結構隨時進行修改,可以把現有的目錄移動到新的地方。保證提交操作的完整性。SVN對提交操作的處理方式類似資料庫的事務處理,要麼全部成功,要麼全部無效,保證了原子性。

缺點:由於程式碼庫不是分散式,而是集中在一個地方的。所以導致跨國訪問的時候速度很慢。程式碼庫在美國,一部分人在中國頻繁提交的情況。在這種場景下,速度不容樂觀。由於程式碼庫只有一份,特別是後設資料都存在伺服器上,所以當伺服器崩潰的時候損失嚴重。

4、Coding

優點:Coding 是基於雲端計算技術的軟體開發平臺,集專案管理、程式碼託管、執行空間、質量控制為一體。在雲端計算時代,Coding推動軟體開發的雲端化,使開發者能用一個瀏覽器完成開發的各個環節。開發人員可以專心構建業務問題的解決方案,而非管理運營或釋出堆疊,確保應用滿足產品層目標服務等級,同時更為企業層級的專案應用提供了程式碼質量檢驗以及專案質量把控的渠道和標準。在保證私有專案的資料安全和穩定的同時,Coding 還結合了冒泡及評論、公開專案釋出與討論等一系列社交化協作功能,打造具有技術支撐的開發者社群。

 

相關文章