軟體測試:SVN與Git的差異

andy888發表於2019-08-02

軟體測試:SVN與Git的差異

1. Subversion屬於集中式的版本控制系統

集中式的版本控制系統都有一個單一的集中管理的伺服器,儲存所有檔案的修訂版本,而協同工作的人們都透過客戶端連到這臺伺服器,取出最新的檔案或者提交更新。

Subversion的特點概括起來主要由以下幾條:

1.每個版本庫有唯一URL(官方地址),每個使用者都從這個地址獲取程式碼和資料。

2.獲取程式碼的更新,也只能連線到這個唯一的版本庫,同步以取得最新資料。

3.提交必須有網路連線(非本地版本庫)。

4.提交需要授權,如果沒有寫許可權,提交會失敗。

5.提交併非每次都能夠成功。如果有其他人先於你提交,會提示“改動基於過時的版本,先6.更新再提交”… 諸如此類。

7.衝突解決是一個提交速度的競賽:手快者,先提交,平安無事;手慢者,後提交,可能遇到麻煩的衝突解決。

好處:每個人都可以一定程度上看到專案中的其他人正在做些什麼。而管理員也可以輕鬆掌控每個開發者的許可權。

缺點:中央伺服器的單點故障。

若是當機一小時,那麼在這一小時內,誰都無法提交更新、還原、對比等,也就無法協同工作。如果中央伺服器的磁碟發生故障,並且沒做過備份或者備份得不夠及時的話,還會有丟失資料的風險。最壞的情況是徹底丟失整個專案的所有歷史更改記錄,被客戶端提取出來的某些快照資料除外,但這樣的話依然是個問題,你不能保證所有的資料都已經有人提取出來。

Subversion原理上只關心檔案內容的具體差異。每次記錄有哪些檔案作了更新,以及都更新了哪些行的什麼內容。


Git屬於分散式的版本控制系統

Git記錄版本歷史只關心檔案資料的整體是否發生變化。Git 不儲存檔案內容前後變化的差異資料。

實際上,Git 更像是把變化的檔案作快照後,記錄在一個微型的檔案系統中。每次提交更新時,它會縱覽一遍所有檔案的指紋資訊並對檔案作一快照,然後儲存一個指向這次快照的索引。為提高效能,若檔案沒有變化,Git 不會再次儲存,而只對上次儲存的快照作一連線。

在分散式版本控制系統中,客戶端並不只提取最新版本的檔案快照,而是把原始的程式碼倉庫完整地映象下來。這麼一來,任何一處協同工作用的伺服器發生故障,事後都可以用任何一個映象出來的本地倉庫恢復。這類系統都可以指定和若干不同的遠端程式碼倉庫進行互動。籍此,你就可以在同一個專案中,分別和不同工作小組的人相互協作。你可以根據需要設定不同的協作流程。

另外,因為Git在本地磁碟上就儲存著所有有關當前專案的歷史更新,並且Git中的絕大多數操作都只需要訪問本地檔案和資源,不用連網,所以處理起來速度飛快。用SVN的話,沒有網路或者斷開VPN你就無法做任何事情。但用Git的話,就算你在飛機或者火車上,都可以非常愉快地頻繁提交更新,等到了有網路的時候再上傳到遠端的映象倉庫。換作其他版本控制系統,這麼做幾乎不可能,抑或是非常麻煩。

Git具有以下特點:

1.Git中每個克隆(clone)的版本庫都是平等的。你可以從任何一個版本庫的克隆來建立屬於你自己的版本庫,同時你的版本庫也可以作為源提供給他人,只要你願意。

2.Git的每一次提取操作,實際上都是一次對程式碼倉庫的完整備份。

3.提交完全在本地完成,無須別人給你授權,你的版本庫你作主,並且提交總是會成功。

4.甚至基於舊版本的改動也可以成功提交,提交會基於舊的版本建立一個新的分支。

5.Git的提交不會被打斷,直到你的工作完全滿意了,PUSH給他人或者他人PULL你的版本庫,合併會發生在PULL和PUSH過程中,不能自動解決的衝突會提示您手工完成。

6.衝突解決不再像是SVN一樣的提交競賽,而是在需要的時候才進行合併和衝突解決。

7.Git 也可以模擬集中式的工作模式。

8.Git版本庫統一放在伺服器中。

9.可以為 Git 版本庫進行授權:誰能建立版本庫,誰能向版本庫PUSH,誰能夠讀取(克隆)版本庫。

10.團隊的成員先將伺服器的版本庫克隆到本地;並經常的從伺服器的版本庫拉(PULL)最新的更新。

11.團隊的成員將自己的改動推(PUSH)到伺服器的版本庫中,當其他人和版本庫同步(PULL)時,會自動獲取改變。

12.Git 的集中式工作模式非常靈活。

13.你完全可以在脫離Git伺服器所在網路的情況下,如出差時,照常使用程式碼庫,你只需要在能夠接入Git伺服器所在網路時,PULL和PUSH即可完成和伺服器同步以及提交。

14.Git提供 rebase 命令,可以讓你的改動看起來是基於最新的程式碼實現的改動。

15.Git有更多的工作模式可以選擇,遠非 Subversion可比。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69942977/viewspace-2652572/,如需轉載,請註明出處,否則將追究法律責任。

相關文章