版本控制系統對比:Git與Subversion

Subversion是一個自由、開源的版本控制系統,在Subversion管理下,文件和目錄可以超越時空。與CVS、Subversion等不同的是Git採用了分佈式版本庫的方式,不必服務器端軟件支持,使源代碼的發佈和交流極其方便。究竟哪個更好些呢?

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

●每個版本庫有唯一一個“官方地址”,每個用戶都從這個唯一地址獲取代碼、數據;

●獲取代碼庫的更新,也只能連接到這個唯一的代碼庫,同步以取得最新數據;

●提交必須有網絡連接(非本地版本庫);

●提交需要授權,如果沒有授權,提交失敗;

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

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

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

●衆生平等,每個檢出(CheckOut)的版本庫,或者更準確的說每個克隆(Clone)的版本庫都是平等的;

●你可以從任何一個版本庫的克隆來創建屬於你自己的版本庫,同時你的版本庫也可以作爲源提供給他人,只要你願意;

●獲取版本庫的更新,可以來自任何源;

●你可以從張三那裏獲得上游的改動,包括張三自己的提交;你也可以從李四那裏獲得上游的改動,也可能包括李四的提交;

●提交完全在本地完成。無須別人給你授權,你的版本庫你作主;

●當然你在你的版本庫中的改動是否別人願意合併到他們的版本庫則是另外的一回事了;

●提交總是會成功,因爲提交是在本地進行的麼;

●甚至基於舊版本的改動也可以成功提交,提交會基於舊的版本創建一個新的分支;

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

●Subversion的提交競賽,在多人協作開發時,提交經常被打斷;

●Git的每個用戶就好像工作在獨立的Feature Branch(功能分支)中;

●Git的提交不會被打斷,直到你的工作完全滿意了,PUSH給他人或者他人PULL你的版本庫;

●合併會發生在PULL和PUSH過程中,不能自動解決的衝突會提示您手工完成;

●Git也可以模擬集中式的工作模式;Subversion只有一種集中式的工作模式;

●所有人都和服務器同步,提交直接到服務器上;

●Git也可以模擬集中式的工作模式;

●Git版本庫統一放在服務器中;

●可以爲Git版本庫進行授權:誰能創建版本庫,誰能向版本庫PUSH,誰能夠讀取(克隆)版本庫;

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

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

●Git 的集中式工作模式非常靈活;

●你完全可以在脫離Git服務器所在網絡的情況下,如移動辦公/出差時,照常使用代碼庫;

●你只需要在能夠接入Git服務器所在網絡時,PULL和PUSH即可完成和服務器同步以及提交;

●Git提供rebase命令,可以讓你的改動看起來是基於最新的代碼實現的改動;

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章