版本控制
集中化的版本控制系統
集中化的版本控制系統有CVS、SVN、Perforce等,都有一個單一的集中管理伺服器,儲存所有檔案的修訂版本,而協同工作的人們通過用戶端連到這台伺服器,取出最新的檔案或者送出更新。
這種方法帶來了許多便利,每個人都可以在一定程度上看到項目中的其他人做了些什麼。而管理者也可以輕松掌控每個開發者的權限,并且管理一個集中化的版本控制系統,要比在各個用戶端上維護本地資料庫來輕松容易。
最大優點就是代碼存放在單一的伺服器上,便于項目的管理
使用這也有一定的弊端,最大的缺點就是中央伺服器的單點故障。
- 伺服器當機:開發人員寫的代碼得不到保障,
- 伺服器炸了:整個項目的曆史記錄會丢失
分布式的版本控制系統
由于集中式的版本控制系統的缺點越來越突出,分布式的版本控制系統就面世了,像Git, BitKeeper等。
用戶端并不隻是提取最新版本的檔案快照,而是把代碼倉庫完整地鏡像下來。這樣,任何一處協同工作用的伺服器發生故障,事後都可以用任何一個鏡像出來的本地倉庫恢複。因為每次的提取操作,實際上都是一次對代碼倉庫的完整備份。
更進一步,許多這類系統都可以指定和若幹不同的遠端代碼倉庫進行互動。這樣開發人員就可以在同一個項目中分别和不同工作小組的人互相協作。
分布式的版本控制系統解決了集中式版本控制系統的缺陷:
- 斷網的情況下也可以進行開發,因為版本控制是在本地進行的
- 使用github進行團隊協作,哪怕github挂了,美國用戶端儲存的也都是整個完整的項目,其中包含曆史記錄。