天天看點

如何選擇版本控制系統 ---為什麼選擇Git版本控制系統

版本控制系統

“代碼”作為軟體研發的核心産物,在整個開發周期都在遞增,不斷合入新需求以及解決bug的新patch,這就需要有一款系統,能夠存儲、追蹤檔案的修改曆史,記錄多個版本的開發和維護。于是,版本控制系統(Version Control Systems)應運而生,主要分為兩類,集中式和分布式。

集中式版本控制系統

集中式版本控制系統的特點是隻有一台中央伺服器,存放着所有研發資料,而其它用戶端機器上儲存的是中央伺服器最新版本的檔案快照,不包括項目檔案的變更曆史。是以,每個相關人員工作開始前,都需要從這台中央伺服器同步最新版本,才能開始工作。

如何選擇版本控制系統 ---為什麼選擇Git版本控制系統

集中式版本控制系統的優點:

1.操作簡單,使用沒有難度,可輕松上手。

2.檔案夾級權限控制,權限控制粒度小。

3.對用戶端配置要求不高,無需存儲全套代碼。

集中式版本控制系統的缺點:

1.網絡環境要求高,相關人員必須聯網才能工作。

2.中央伺服器的單點故障影響全局,如果伺服器當機,所有人都無法工作。

3.中央伺服器在沒有備份的情況下,磁盤一旦被損壞,将丢失所有資料。

如何選擇版本控制系統 ---為什麼選擇Git版本控制系統

分布式版本控制系統

分布式版本控制系統的特點是每個用戶端都是代碼倉庫的完整鏡像,包括項目檔案的變更曆史。所有資料分布的存儲在每個用戶端,不存在中央伺服器。可能有人會問,我們公司使用Git分布式存儲工具,也有“中央伺服器”啊?其實,這個所謂的“中央伺服器”僅僅是用來友善管理多人協作,任何一台用戶端都可以勝任它的工作,它和所有用戶端沒有本質差別。

如何選擇版本控制系統 ---為什麼選擇Git版本控制系統

分布式版本控制系統的優點:

1.版本庫本地化,版本庫的完整克隆,包括标簽、分支、版本記錄等。

2.支援離線送出,适合跨地域協同開發。

3.分支切換快速高效,建立和銷毀分支廉價。

分布式版本控制系統的缺點:

1.學習成本高,不容易上手。

2.隻能針對整個倉庫建立分支,無法根據目錄建立層次性的分支。

如何選擇版本控制系統 ---為什麼選擇Git版本控制系統

SVN vs Git

SVN和Git作為集中式和分布式版本控制系統的代表,都有廣大的使用群體,兩者的優缺點經常被比較。其實,工具對我們來說,就是幫助我們有效提升工作的效率與品質,最适合的就是最好的。我們引用幾個開發場景來看看兩個版本控制工具的适用範圍。

場景一:

公司A,非純技術開發,項目包含大量媒體設計檔案,相關人員隻需下載下傳自己關注的部分檔案;員工PC電腦組態不高,沒有空間拷貝整個項目資料。

适用:SVN

分析:隻需公司有一個足夠大的伺服器硬碟,員工本地隻存儲自己相關的檔案夾,不必下載下傳不想關的媒體檔案,避免浪費檔案傳輸時間。

場景二:

公司B,嵌入式底層開發,項目人員較多并且分布在兩個城市,代碼龐大;用分支管理多機種并行開發,機種間經常互相合并新特性,新patch。

适用:Git

如何選擇版本控制系統 ---為什麼選擇Git版本控制系統

分析:

1.Git有能力高效管理類似Linux核心一樣的超大規模項目;

2.Git實作了離線開發、代碼稽核特性,解決了跨地域協同開發中代碼品質和編碼協同的問題;

3.分支管理功能強大,便于查詢和追溯分支間的送出曆史;

4.Git基于DAG(有向非環圖)的設計比SVN的線性送出提供更好的合并追蹤,避免不必要的沖突,提高工作效率

場景三:

公司C,某行業軟體開發,包含敏感重要資料,代碼倉庫和版本釋出權限掌握在客戶手中,代碼安全要求高,公司開發人員先将代碼送出到本地倉庫,隻有在客戶稽核通過才能送出到釋出倉庫。

适用:Git

分析:

1.Git通過哈希加密保證資料的完整性,防止惡意篡改;

2.代碼分布存儲,異地容災,保證資料安全;

3.Git支援團隊成員自建本地版本庫和分支,隻有客戶發出合并請求,開發人員才能送出代碼,客戶可以對送出說明、代碼規範等方面逐一稽核。

總結

不難看出,Git憑借自身的優勢,完美解決了大多數公司對版本控制工具的訴求。在當今靈活開發成為主流,研發周期短,跨地域協同開發多的大形勢下,選擇Git是大勢所趨。也正因為如此,國内外有很多基于Git的雲端代碼托管服務,目前,作者就正在使用華為軟體開發雲(https://www.hwclouds.com/devcloud/)配置管理服務托管代碼,後面我也會詳細介紹它的使用方法。

轉載于:https://my.oschina.net/u/3434281/blog/904091