軟體測試:SVN與Git的差異
軟體測試: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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- git與svn的區別面試Git面試
- 面試官:主說 Git Rebase 和 Git Merge 差異面試Git
- 進銷存軟體與ERP有哪些差異?
- Smartbi電子表格軟體架構與差異化特色架構
- 軟體測試計劃與測試方案
- Git差異並列顯示Git
- 金融軟體測試前景分析,與其他軟體測試的5大區別!
- 02 SVN 與 Git 的優缺點Git
- 軟體測試——三、軟體測試的分類
- Julia焦慮?這有份Facebook軟體工程師的測試差評軟體工程工程師
- Git比對檔案之間的差異Git
- 錄製回放效果差異檢測 | 自動化測試
- 軟體測試學習資源—Git 基礎使用Git
- web測試與手機app測試的異同WebAPP
- 軟體測試真的很重要!——軟體測試的作用
- 軟體測試書籍-學軟體測試最好的書
- 軟體為什麼要做異常測試?測試員必知的22個測試點總結!
- 軟體驗收測試 第三方軟體測試 軟體功能測試 軟體資訊保安測試
- PostgreSQL與Oracle的sql差異SQLOracle
- 【譯】框架與庫的差異框架
- git 本地對比2次commit直接的差異GitMIT
- SOLIDWORKS正版軟體與盜版軟體的差別在哪裡?Solid
- 【軟體測試】——介面測試
- 集合差異比較演算法及效能測試演算法
- 中西醫診療與軟體測試
- KEPServeEX 6與KepOPC中介軟體測試
- 軟體測試的流程
- 軟體測試的策略
- 軟體測試的方法
- 軟體穩定性測試的測試點
- 軟體測試
- 軟體效能測試有哪些測試方法?靠譜的軟體測試公司推薦
- 軟體功能測試的測試流程有哪些?軟體測試公司排名分享
- 剛入行的軟體測試工程師如何自學軟體測試?工程師
- 軟體測試教程之手機軟體測試方法
- 軟體測試學習教程—軟體測試質量
- 軟體測試學習 ——五種軟體測試模型模型
- 提升軟體測試效率與靈活性:探索Mock測試的重要性Mock