2.1 SVN介紹
2.1.1 SVN簡介
SVN 屬於集中式版本管理控制系統,服務器中保存了全部文件的不一樣版本,而協同工做人員經過鏈接svn服務器,提取出最新的文件,獲取提交更新。Subversion 項目的初衷是爲了替換當年開源社區最爲流行的版本控制軟件CVS,在CVS的功能的基礎上有不少的提高同時也能較好的解決CVS系統的一些不足。vue
2.1.2 SVN基本交互流程圖
2.1.3 SVN缺點
集中管理方式在必定程度上看到其餘開發人員在幹什麼,而管理員也能夠很輕鬆掌握每一個人的開發權限。可是相較於其優勢而言,集中式版本控制工具缺點很明顯:linux
服務器單點故障必須鏈接在SVN服務器上,不然不能提交、對比、還原等git
2.2 Git 介紹
2.2.1 Git與Svn記錄具體差別
- Git 和其餘版本控制系統的主要差異在於,Git 只關心文件的總體是否發生變化。而SVN這類版本控制系統則只關心文件內容的具體差別。
- SVN這類系統每次記錄有哪些文件做了更新,以及都更新了哪些行的什麼內容。然而 Git 並不保存這些先後變化的差別數據。
- 實際上,Git更像是把變化的文件做一個快照後,記錄在一個微型的文件系統中。每次提交更新時,它會縱覽一遍全部文件的指紋信息(Hash值)並對文件做一快照,而後保存一個指向此次快照的索引。爲提升性能,若文件沒有變化,Git 不會再次保存,而只對上次保存的快照做一連接。
2.2.2 Git的優點是什麼
- 分佈式,強調個體
- 公共服務器壓力和數據量都不會太大
- 離線工做,每一個人的本地倉庫,大部分操做在本地庫完成,不須要聯網(SVN作不到)
- 分支操做很是快捷流暢(重點介紹)
- 能夠吃後悔藥, 儘量添加數據而不是刪除或修改數據(刪除或修改不容易恢復,而每次添加一個版本,歷史版本都有)
- 速度快、靈活, 有能力高效管理相似 Linux
- 內核同樣的超大規模項目(速度和數據量)
2.2.3 Git 歷史發展
- 同生活中的許多偉大事件同樣,Git 誕生於一個極富紛爭大舉創新的年代。
一開始 linus(萊納斯)本人手動合併代碼,Linux 開源項目有着來自世界各地的開發者參與,絕大多數的 Linux維護工做都花在了提交補丁和保存歸檔的繁雜事務上(1991-2002年間)。服務器
- 到 2002 年,商業軟件 Bitkeeper 出於人道語義精神,受權給linux無償使用,要求是不能進行破解。因而整個項目組開始啓用分佈式版本控制系統 BitKeeper 來管理和維護代碼。
- 到 2005 年的時候,linux社區開發者試圖破解BitKeeper協議,可是被公司發現了,因而開發 BitKeeper 的商業公司同 Linux 內核開源社區的合做關係結束,他們收回了無償使用 BitKeeper 的權力。
這就迫使 Linux 開源社區(特別是 Linux的締造者 Linus )不得不吸收教訓,因而 萊納斯 自已用C語言開發了一套屬於本身的版本控制系統,不至於重蹈覆轍。Git主體程序只發了兩週,一個月後linux系統代碼由git管理。分佈式
- 2008年,Github上線了,不少開源軟件都放在Github上進行公佈:Linux,Android, jQuery, Ruby,PHP,vue.js… 目前使用Git的項目數量也已經超過了使用SVN的倉庫數。