SVN 理論篇

以下知識來自老男孩的指導

1svn的介紹

1.1什麼是svn

   Svn是近年來崛起的非常優秀的版本管理工具,與CVS管理工具一樣,svn是一個跨平臺的開源的版本控制系統。Svn版本管理工具管理着隨時間改變的各種數據。這些數據放置在一箇中央資料檔案庫中,這個檔案庫很像一個普通的文件服務器或者FTP服務器,但是,與衆不同的是,SVN會備份並記錄每一個文件每一次的修改更新變動。這樣我們就可以把任意一個時間點的檔案恢復到想要的某一箇舊的版本,當然也可以直接瀏覽指定文件的更新歷史記錄。

爲什麼會有svn這樣一個項目呢?

    解釋:爲了接管CVS的用戶基礎,確切的說,我們寫了一個新的版本控制系統,它和CVS很相似,但是它修正了以前CVS所沒有解決的許多問題。

SVN是一個非常通用的軟件系統,它常被用來管理程序源碼,但是它也可以管理任何類型的文件,如文本、視屏、圖片等等。

 Svn相關站點:

  Subversion官網:http://subversion.tigris.org/

                  http://subversion.apache.org/

  SVN客戶端:    http://tortoisesvn.net/

  SVN中文網站:  http://www.iusesvn.com/

  官方手冊:      http://svnbook.red-bean.com/ 

1.2 SVNgit的區別

   

1.2.1 SVN集中式版本控制系統:

   SVN版本控制系統是集中式的數據管理,存在一箇中央版本庫,所有的開發人員本地開發所使用的代碼都是來自於這個版本庫,提交代碼也都是提交到這個中央版本庫。

SVN版本控制系統工作的流程如下:

1:在中央庫上創建或者主幹複製一個分支。

2:從中央庫check out 下這個分支的代碼。

3:增加自己的代碼文件,修改現存的代碼或刪除代碼文件。

4commit代碼,假設有人在剛剛的分支上提交了代碼,你就會被提示代碼過期,

你得先up你的代碼後再提交。Up代碼的時候如果出現衝突,需要解決好衝突後再進行提交。

 缺點:

  當無法連接到中央版本庫的環境下,你無法提交代碼,將代碼加入版本控制;

  你無法查看代碼的歷史版本以及版本的變化過程。提交到版本控制系統中的代碼我們都默認通過自測可運行的,如果某個模塊的代碼比較複雜,不能短時間內實現爲可測試的功能,那麼你需要等很長的時間才能提交自己的代碼,由於代碼庫集中管理,因此,需要對中央版本庫的存儲做備份。這點分佈式的版本控制系統要好一些。SVN的備份要備份所有代碼數據以及所有更改的版本記錄。

 

 

                    

  

1.2.2  Git分佈式的版本控制

 

  Git是由linus開發的,所以很自然的gitlinux文件系統結合的比較緊密,以至於在windows上你必須使用cygwin才能使其完美的工作。

  Git爲什麼叫做分佈式的版本控制系統?下面說一下它的工作模式吧!

  Git中沒有了中央版本庫的說法了,但是爲了開發小組的代碼共享,我們通常還是會搭建一個遠程的git倉庫。

  但是和svn不同的是,開發者本地也包含了一個完整的git倉庫,但是從某種程度上說本地的倉庫和遠程的倉庫在身份上等價的,沒有主從之分。

 

  如果你的項目是閉源項目,或者你習慣於以往的集中式的管理模式的話,那麼在git下你也可以像svn那樣的工作,只是流程中可能會增加一些步驟。

   1:你本地創建一個git庫,並將其add到遠程git庫中。

   2:你在本地添加或者刪除文件,然後commit,當然commit操作都是提交到本地的git庫中了。(其實是提交到:git目錄下的objects目錄中去了)

   3:將本地git庫的分支push到遠程git庫的分支,如果這個時候遠程git庫中已經有別人push過,那麼遠程git庫將不允許你push,這時候你需要先pull,然後如果有衝突,處理好衝突,commit到本地git庫後,再push到遠程git庫。

1.3 運維人員掌握版本管理

 

對於版本管理系統,運維人員需要掌握的技術點:

1:安裝、部署、維護、排障

2:簡單使用,很多公司都由開發來管理,包括建立倉庫和添加刪除賬號。

3:對於版本控制系統,運維人員相當於開發商,開發人員是業主,運維搭建的系統爲開發人員服務的。

1.4 Svn服務運行模式與訪問方式

1.4.1 svn服務端運行方式

   1:獨立服務器訪問

       訪問地址:svn://svn.~~~~~~/sadoc

   2:藉助apachehttp服務

       訪問地址:http://svn.~~~~~~/sadoc

          a.單獨安裝apache+svn

          b.CSVNpapche+svn)是一個單獨的整合的軟件,帶web界面管理的svn軟件。

3:本地直接訪問(例如:file://application/svndata/sadoc

1.5 SVN客戶端訪問方式

   Svn客戶端可以通過多種方式訪問服務器端,例如:本地磁盤訪問,或各種各樣不同的網絡協議訪問,但一個版本庫地址永遠都是一個URLURL反映了訪問方法。

  

訪問方式

說明

File://

直接通過本地磁盤或者網絡磁盤訪問版本庫

http://

通過webDAV協議訪問支持subversionapache服務器

https://

http://相似,但是用SSL加密訪問

Svn://

通過TCP/IP自定義協議訪問svnserve服務器

Svn+ssh://

通過認證並加密的TCP/IP自定義協議訪問svnserve服務器

 

1.6 SVN檔案庫數據格式

  SVN存儲版本數據有2中方式:BDB(一種事務安全型表類型)和FSFS(一種不需要數據庫的存儲系統)。因爲BDB方式在服務器中斷時,有可能鎖住數據,所以還是FSFS方式更安全一點。

  BDB:伯克利DB,版本庫可以使用的一種經過充分測試的後臺數據庫實現,不能通過網絡共享的文件系統上使用。伯克利DBsubversion1.2版以前的缺省版本庫格式。

  FSFS:一個專用於subversion版本庫的文件系統後端,可以使用網絡文件系統(例如:NFS或者SMBFS)。是1.2版本及其後的缺省版本庫格式。

  CVS是個基於RCS文件的版本控制系統。每一個CVS文件都不過是普通的文件,加工些額外信息。這些文件會簡單的重複本地文件的樹結構。因此,不必擔心有什麼數據損失,如果必要的話可以手工修改RCS文件。

  SVN是基於關係型數據庫的(BerkleyDB)或者一系列二進制文件的(FS-FS)。一方面這解決了許多問題(例如,並行讀寫共享文件)以及添加了許多新功能(例如運行時的事務特性)然而另一方面,數據存儲由此變得不透徹,不能像ftp,samba,nfs等能看到實體文件了、

1.7  SVN版本系統邏輯架構原理圖




1.8 Svn集中式版本管理系統流程圖

spacer.gif 

集中式代碼管理的核心是svn服務器,所有開發者在開始新一天的工作之前必須從服務器獲取代碼,然後進行開發,最後解決衝突、提交。所有的版本信息都放在svn服務器上,因此如果脫離了服務器,開發者就無法進行提交代碼工作。

1.9 svn的優缺點

缺點:1:由於每一次提交都保留一個原始副本,因此svn數據庫容量會暴增。

      2:如果不能連接到svn服務器上,基本上不可以工作,如果服務器不能連接上,就

         不能提交,還原,對比等等。

      3:不適合開源系統開發(開發人數太多)但是一般集中式管理的有非常明確的權限

         管理機制(例如分支訪問限制),可以實現分層管理,從而很好的解決開發人數衆

         多的問題。

優點:1:管理方便,邏輯清晰明確,符合一般人思維習慣。

      2:易於管理,集中式svn服務器更能保證數據安全性。

      3:代碼一致性非常高

      4:適合開發人數不多的項目開發。

      5:普及度高。


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