<u id="tkccn"><dd id="tkccn"></dd></u>
<sub id="tkccn"></sub>
<dd id="tkccn"><address id="tkccn"></address></dd>
      <wbr id="tkccn"><source id="tkccn"></source></wbr>
      <wbr id="tkccn"></wbr>
    1. <nav id="tkccn"></nav>
      我的賬戶
      啄木鳥學院

      專注軟件測試菁英教育

      親愛的游客,歡迎!

      已有賬號,請

      如尚未注冊?

      SVN與Git

      [復制鏈接]
      1904 0
      chelang 發表于 2020-2-22 15:43:36 | 只看該作者 |閱讀模式 打印 上一主題 下一主題
      本帖最后由 chelang 于 2020-2-22 15:50 編輯


      一、基本概念

      1. SVN是Subversion的簡稱,是一個開放源代碼的版本控制系統,相較于RCS、CVS,它采用了分支管理系統,它的設計目標就是取代CVS?;ヂ摼W上很多版本控制服務已從CVS遷移到Subversion。說得簡單一點SVN就是用于多個人共同開發同一個項目,共用資源的目的。

      2. Git是一個開源的分布式版本控制系統,可以有效、高速的處理從很小到非常大的項目版本管理。 Git 是 Linus Torvalds 為了幫助管理 Linux 內核開發而開發的一個開放源碼的版本控制軟件。


      Torvalds 開始著手開發 Git 是為了作為一種過渡方案來替代 BitKeeper,后者之前一直是 Linux 內核開發人員在全球使用的主要源代碼工具。開放源碼社區中的有些人覺得BitKeeper 的許可證并不適合開放源碼社區的工作,因此 Torvalds 決定著手研究許可證更為靈活的版本控制系統。盡管最初 Git 的開發是為了輔助 Linux 內核開發的過程,但是我們已經發現在很多其他自由軟件項目中也使用了 Git。例如 很多 Freedesktop的項目遷移到了 Git 上。


      二、兩者區別

      1. git是分布式的,svn是集中式的

      這是GIT和其它非分布式的版本控制系統,例如SVN,CVS等,最核心的區別。好處是跟其他同事不會有太多的沖突,自己寫的代碼放在自己電腦上,一段時間后再提交、合并,也可以不用聯網在本地提交。

      (1)集中式管理的工作流程如下:

      集中式代碼管理的核心是服務器,所有開發者在開始新一天的工作之前必須從服務器獲取代碼,然后開發,最后解決沖突,提交。所有的版本信息都放在服務器上。如果脫離了服務器,開發者基本上可以說是無法工作的。下面舉例說明:
      開始新一天的工作:
      a. 從服務器下載項目組最新代碼。
      b. 進入自己的分支,進行工作,每隔一個小時向服務器自己的分支提交一次代碼(很多人都有這個習慣。因為有時候自己對代碼改來改去,最后又想還原到前一個小時的版本,或者看看前一個小時自己修改了哪些代碼,就需要這樣做了)。
      c. 下班時間快到了,把自己的分支合并到服務器主分支上,一天的工作完成,并反映給服務器。
      這就是經典的svn工作流程,從流程上看,有不少缺點,但也有優點。

      (2)分布式相比于集中式的最大區別在于開發者可以提交到本地,每個開發者通過克隆(git clone),在本地機器上拷貝一個完整的Git倉庫。


      2. git把內容按元數據方式存儲,而svn是按文件
      所有的資源控 制系統都是把文件的元信息隱藏在一個類似.svn,.cvs等的文件夾里。如果你把.git目錄的體積大小跟.svn比較,你會發現它們差距很大。因 為,.git目錄是處于你的機器上的一個克隆版的版本庫,它擁有中心版本庫上所有的東西,例如標簽,分支,版本記錄等。

      3. git的內容完整性要優于svn

      GIT的內容存儲使用的是SHA-1哈希算法。這能確保代碼內容的完整性,確保在遇到磁盤故障和網絡問題時降低對版本庫的破壞。

      4.git 不需聯網,svn 需要聯網操作

      git下載下來后,在本地不必聯網就可以看到所有的log,很方便學習;
      svn卻需要聯網,沒有網絡代碼沒辦法提交。

      三、兩者優缺點


      1. Git:

      (1)優點:
      適合分布式開發,強調個體。
      公共服務器壓力和數據量都不會太大。
      速度快、靈活。
      任意兩個開發者之間可以很容易的解決沖突。
      離線工作。

      (2)缺點:

      資料少(起碼中文資料很少)。
      學習周期相對而言比較長。
      不符合常規思維。
      代碼保密性差,一旦開發者把整個庫克隆下來就可以完全公開所有代碼和版本信息。

      2. SVN

      (1)優點:
      管理方便,邏輯明確,符合一般人思維習慣。
      易于管理,集中式服務器更能保證安全性。
      代碼一致性非常高。
      適合開發人數不多的項目開發。
      大部分軟件配置管理的大學教材都是使用svn和vss。

      (2)缺點:
      服務器壓力太大,數據庫容量暴增。
      如果不能連接到服務器上,基本上不可以工作,看上面第二步,如果服務器不能連接上,就不能提交,還原,對比等等。
      不適合開源開發(開發人數非常非常多,但是Google app engine就是用svn的),但是一般集中式管理的有非常明確的權限管理機制(例如分支訪問限制),可以實現分層管理,從而很好的解決開發人數眾多的問題。





      收藏
      收藏0
      支持
      支持0
      反對
      反對0

      分享本篇文章給更多人:


      63.9K
      回復

      使用道具 舉報

      您需要登錄后才可以回帖 登錄 | 立即注冊

      本版積分規則

      關注0

      粉絲0

      帖子10

      發布主題
      關注我們
      專注軟件測試菁英教育

      客服電話:029-61859806

      客服時間:9:00-21:00

      啄木鳥學院 - 專注軟件測試菁英教育!( 陜ICP備20001493號-1 )

      版權所有 ? 西安菁英教育科技有限公司 2016-2020

      图书馆小东西自己上来_奇领6080 奇领YY6080影院 奇领YY6080YY_肉苁蓉的功效与作用_二手车交易市场