集中式版本控制系統 (CVCS) 與分散式版本控制系統 (DVCS) 的區別
版本控制系統是一種軟體,允許您管理一段時間內對資源(程式碼庫、檔案)的更改。集中式和分散式是兩種主要的版本控制系統。這兩種系統之間的根本區別在於它們如何:
管理程式碼庫
管理內容工作流程
集中式模型
集中式版本控制系統遵循伺服器-客戶端模型。伺服器儲存專案的單箇中心副本,以及一段時間內對程式碼庫所做更改的歷史記錄。使用集中式版本控制系統的工作基本流程如下:
當用戶想要使用某個檔案時,他們透過客戶端機器連線到伺服器並下載檔案的本地副本。使用者在其本地系統上可用的副本上進行操作,最後將對檔案或程式碼庫所做的更改傳送到中央伺服器。必須始終可以訪問中央伺服器才能執行原始碼管理。一些常用的**集中式版本控制系統包括併發版本系統 (CVS)、Subversion (SVN) 和 Perforce**。
集中式版本控制系統的主要缺點之一是中央伺服器是單點故障。這意味著如果中央伺服器發生故障,則無法對程式碼庫執行任何操作,因為它駐留在伺服器上,因此無法跟蹤對程式碼所做的更改。此外,在大型團隊中工作時,中央伺服器和程式碼庫可能會成為瓶頸。這就是分散式版本控制系統發揮作用的地方。
分散式版本控制系統
與分層結構的集中式版本控制系統不同,分散式版本控制系統採用更平等的方法。就像在集中式版本控制系統中一樣,您檢出程式碼庫的副本,進行更改,然後檢入。兩種型別之間的主要區別在於,集中式版本控制系統將更改歷史記錄儲存在中央伺服器上。每個人都請求最新版本的工作,並將最新的更改推送到中央伺服器。
對於分散式版本控制系統,每個協作者都將在本地機器上擁有完整的程式碼庫,包括完整的修訂歷史記錄和提交資訊。協作者可以在本地推送他的程式碼版本或新的更改集。這有助於避免由於中央版本控制伺服器崩潰而導致的故障。一旦功能或一組更改集準備就緒,協作者就可以一次性將所有這些更改推送到中央伺服器。換句話說,與集中式版本控制系統不同,無需線上即可更改修訂版或向工作新增更改。此外,協作者可以選擇與特定人員共享他的程式碼以獲得反饋,然後再最終確定並將其程式碼提供給整個團隊。
下圖顯示了在分散式版本控制系統中可以執行的操作。
在 Git 的術語中,中央伺服器稱為程式碼庫。協作者從程式碼庫下載的檔案副本稱為克隆。原生代碼庫是從伺服器複製的程式碼庫。開發人員在克隆副本上工作。當所有功能都製作完畢並經過適當測試後,開發人員就可以將最終程式碼庫與遠端程式碼庫同步。