做業四:上網調查一下目前流行的源程序版本管理軟件和項目管理軟件都有哪些, 各有什麼優缺點? (提示:搜索一下Microsoft TFS、GitHub、Trac、Bugzilla、Rationale,Apple XCode)?程序員
1、CVS 是一個C/S系統,是一個經常使用的代碼版本控制軟件。主要在開源軟件管理中使用。與它相相似的代碼版本控制軟件有subversion。多個開發人員經過一箇中心版本控制系統來記錄文件版本,從而達到保證文件同步的目的。CVS版本控制系統是一種GNU軟件包,主要用於在多人開發環境下的源碼的維護。可是因爲以前CVS編碼的問題,如今大多數軟件開發公司都使用SVN替代了CVS。服務器
CVS(Concurrent Versions System)版本控制系統是一種GNU軟件包,主要用於在多人開發環境下源碼的維護。Concurrent有併發的、協做的、一致的等含義。實際上CVS能夠維護任意文檔的開發和使用,例如共享文件的編輯修改,而不單單侷限於程序設計。CVS維護的文件類型能夠是文本類型也能夠是二進制類型。CVS用Copy-Modify-Merge(拷貝、修改、合併)變化表支持對文件的同時訪問和修改。它明確地將源文件的存儲和用戶的工做空間獨立開來,並使其並行操做。CVS基於客戶端/服務器的行爲使其可容納多個用戶。這一特性使得CVS成爲位於不一樣地點的人同時處理數據文件(特別是程序的源代碼)時的首選。
全部重要的免費軟件項目都使用CVS做爲其程序員之間的中心點,以便可以綜合各程序員的改進和更改。這些項目包括GNOME、KDE、THE GIMP和Wine等。網絡
SVN是近年來崛起的版本管理工具,至關因而CVS的接班人。SVN是一種集中式的源碼管理軟件,全部開發者在開始新一天的工做以前必須從服務器獲取代碼,而後開發,最後解決衝突,提交。全部的版本信息都放在服務器上。若是脫離了服務器,開發者基本上能夠說是沒法工做的。架構
舉例說明經典的svn工做流程:
開始新一天的工做:
1)從服務器下載項目組最新代碼。
2)進入本身的分支,進行工做,每隔一個小時向服務器本身的分支提交一次代碼(不少人都有這個習慣。由於有時候本身對代碼改來改去,最後又想還原到前一個小時的版本,或者看看前一個小時本身修改了哪些代碼,就須要這樣作了)。
3)下班時間快到了,把本身的分支合併到服務器主分支上,一天的工做完成,並反映給服務器。併發
2、TFS(Team Foundation Server )是微軟開發的項目管理工具,是 Microsoft 應用程序生命週期管理 (ALM) 解決方案的核心協做平臺。 不論在本地仍是在雲中,TFS 都可支持靈活的開發實踐、 多個 IDE 和平臺,併爲您提供有效管理整個 IT 生命週期的軟件開發項目所需的工具。框架
TFS是一個高可擴展、高可用、高性能、面向互聯網服務的分佈式文件系統,主要針對海量的非結構化數據,它構築在普通的Linux機器集羣上,可爲外部提供高可靠和高併發的存儲訪問。TFS爲淘寶提供海量小文件存儲,一般文件大小不超過1M,知足了淘寶對小文件存儲的需求,被普遍地應用在淘寶各項應用中。它採用了HA架構和平滑擴容,保證了整個文件系統的可用性和擴展性。同時扁平化的數據組織結構,可將文件名映射到文件的物理地址,簡化了文件的訪問流程,必定程度上爲TFS提供了良好的讀寫性能。異步
特性:分佈式
1. 採用扁平化的數據組織結構
2. 使用HA架構和平滑擴容
3. 支持多種客戶端
4. 支持大小文件存儲
5. 可爲外部提供高可靠和高併發的存儲訪問
6. 支持大文件功能
7. Resource Center Server,用於管理TFS集羣的用戶資源配置
8. TFS服務程序開發框架,統一TFS網絡客戶端庫,並新增異步回調功能
9. 優化數據流,讓寫請求儘量均勻的分佈在不一樣的DataServersvn