開啟主選單

求真百科

SVN

中文名: SVN

外文名: Subversion

實 質: 開放源代碼的版本控制系統

優 勢: 速度快、安全性高等

應 用: 軟件程序開發

學 科: 軟件工程

SVN是subversion的縮寫,是一個開放源代碼的版本控制系統,通過採用分支管理系統的高效管理,簡而言之就是用於多個人共同開發同一個項目,實現共享資源,實現最終集中式的管理。[1]

目錄

版本控制

一個軟件開發試行後,最關鍵的問題就是能夠有效的實現軟件版本系統的控制,而作為版本控制系統的核心任務,能否完成成功的查閱歷史操作記錄和實現協同開發才是公司研發團隊關注的問題。版本控制(Version control)是項目開發與管理的標準做法,能追蹤項目從開始到結束的整個過程,常被應用於軟件程序開發。對編程人員而言,版本控制技術是團隊協作開發的橋樑,有助於多人同步進行大型程序開發。由於在多人協作開發的模式下,每個人都向服務器提交自己的文件,就可能存在着代碼被多次修改、替換的風險,但是版本控制能夠在每次更新操作後進行相應的記錄。一旦發生誤操作,開發者能夠根據服務器中的版本記錄,將項目恢復到出現問題之前的其他版本。因此,藉助版本控制技術,軟件開發項目可以被分割為若干模塊,每個模塊並行地進行開發工作,從而有效地提高了整體編程效率。 版本控制技術對文件進行管理主要有兩種模式:Lock-Modify-Unlock(鎖-修改-解鎖)Copy-Modify-Merge(拷貝-修改-合併)。 在Lock-Modify-Unlock工作模式下,若用戶想對某文件進行修改,必須先鎖定該文件再進行修改,修改操作完成之後再對其解鎖。這種文檔管理模式能夠有效避免多人對某文件同時進行修改而造成的衝突,但是它減少了用戶並發操作。除此之外,該模式還有一個非常明顯的缺點,即如果前面的用戶完成修改後,忘了對文件進行解鎖操作,則會導致後面想修改此文件的用戶將永遠處於等待解鎖狀態。採用這種管理模式的版本控制工具主要有Visual Source Safe(VSS)。 Copy-Modify-Merge工作模式下,當某一用戶想修改文件時,可以先將服務器文件update到本地端,然後在本地端對副本進行修改,修改操作完成後,再將副本commit到服務器。如果在此用戶commit之前,原文件已經被其他用戶修改並提交過,那麼服務器上的版本號與本地端上的版本號不同,二者將產生衝突,服務器將中止提交。此用戶只有將服務器上的新版本update到本地端,將其與自己修改的文件進行合併,才能重新commit到服務器。在實際編程中,文件的合併過程一般需要編程人員共同協商決定。這種「拷貝-修改-合併」雖然需要花費一定的時間,但卻比「鎖-修改-解鎖」等待的時間短,能夠增加操作的並發度,大大提高團隊的編程效率。 大多數版本控制系統採用的是第二種方式,如Concurrent Versions System(CVS)Subversion(SVN),而這其中SVN是最為流行的版本控制軟件,許多開源軟件都採用了SVN作為源碼版本控制服務器。在SVN版本控制軟件的管理下,不管是在局域網還是在Internet上都可以對文件和目錄進行管理,它突破了時間與空間的限制,促進了團隊協作開發。  

SVN簡介

SVN的全稱是Subversion,即版本控制系統。它是最流行的一個開放源代碼的版本控制系統。作為一個開源的版本控制系統,Subversion管理着隨時間改變的數據。這些數據放置在一個中央資料檔案庫(Repository)中。這個檔案庫很像一個普通的文件服務器,不過它會記住每一次文件的變動。這樣就可以把檔案恢復到舊的版本,或是瀏覽文件的變動歷史。Subversion是一個通用的系統,可用來管理任何類型的文件,其中包括程序源碼。 SVN採用客戶端/服務器體系,項目的各種版本都存儲在服務器上,程序開發人員首先將從服務器上獲得一份項目的最新版本,並將其複製到本機,然後在此基礎上,每個開發人員可以在自己的客戶端進行獨立的開發工作,並且可以隨時將新代碼提交給服務器。當然也可以通過更新操作獲取服務器上的最新代碼,從而保持與其他開發者所使用版本的一致性。   SVN的客戶端有兩類,一類是基於Web的WebSVN等,另一類是以Tortoise SVN為代表的客戶端軟件。前者需要Web服務器的支持,後者需要用戶在本地安裝客戶端,兩種都有免費的開源軟件供使用。SVN存儲版本數據也兩種方式:BDB(一種事務安全型表類型)和FSFS(一種不需要數據庫的存儲系統)。因為BDB方式在服務器中斷時,有可能鎖住數據,所以還是FSFS方式更安全一點。

SVN工作機制

SVN系統具體是如何實現對項目軟件的版本控制,一方面通過實現歷史操作記錄查閱。在任意一台服務器中都可以添加一個SVN版本庫,而相應的版本庫中存放大量的程序和文檔,而這些項目資源主要通過配置管理員依據不同的配置管理計劃對不同項目的組員分配與之相符合的訪問權限,進而實現對資源的統一管理;只有SVN標本過版本庫中的資源,項目組成員可以對版本資源庫中的資源進行訪問。 一次簡單的訪問過程包括:相關項目組員首先在客戶操作端建立一個從版本庫檢索出來的項目文件,而後就可以對拷貝的檔案進行修改,最後通過SVN提交命令將其修改後的項目文件提交到終端服務器,終端服務器最終會對修改後的項目文件做最後的綜合更新記錄。 修改過的文件在修改未被提交到服務器前,SVN服務器只會對已經提交到網絡端服務器的項目文檔進行更新審核,並與其他人的合併,在此之前修改過的文檔是保密的,提交之後SVN絡端服務器會將修改後與修改之前的數據進行比較,並在後台對修改內容就行標註顯示,進而實現對歷史操作記錄的更新記載。最終實現項目組組員既能檢索出舊版本,又能通過SVN實現新舊版本的對比,另一方面SVN通過進行組員間的協同開發實現對項目軟件的版本控制。協同開發一般是指版本控制系統間接受並處理不同用戶提交的各種不同性質版本的資源代碼,同時允許各個用戶之間在遵循相應規則範圍內實現合作開發。如何處理好有矛盾的版本控制系統才是能夠協同開發的關鍵,像是多個程序編碼員同時對同一份資源代碼進行修改、提交到SVN版本庫,就有可能發生提交後的版本意見想法相衝等問題。  

SVN優勢

1.存儲 SVN服務器既具有CVS所具有數據儲存的優點,像是信息資源存儲後會形成資源樹結構,便於存儲的同時,數據一般不會丟失,同時又擁有自己的特色。SVN是通過關係數據庫及二進制的存儲方式,同時解決了既往不能同時讀寫同一文件等問題,同時增添了自己特有的「零或一」原則。 2.速度 與人們初始的CVS相比,SVN在速度運行方面有很大提升。因為SVN服務器只支持少量的信息、資源傳輸,與其他系統相比,更支持的是離線模式,因此避免了網絡擁擠現象的出現。 3.安全性 SVN是一種技術性更加安全的產品,實現了系統和控制兩方面的結合。一方面可以將系統整體的安全功能有效地分布在分支系統中,進而保證分支系統能正常運行,從而使各分支系統能夠互補,最終在系統整體性的安全性得以保障,通過均衡原則實現最終追求安全的目的。  

SVN版次

Subversion使用「偶數/奇數」版次模式。偶數編號的小數點版次(1.0、1.2等)被認為是穩定的版次。這樣的版次只針對問題的修正才會變動,不會增加新功能,而且用戶會期待使用的軟件沒問題。相反地,奇數編號的小數點版次(1.1、1.3等)是開發(development)版本。在這樣的版本中會增加新功能,它們傾向於快速的變更與變革,且有可能會有使得數據遺失的缺陷或問題。如果穩定性與數據保存性對你而言是重要的,則你應該使用偶數編號的版次。只有在它具有一個重要及必須要有的功能而且你願意承擔風險時,才使用奇數編號的版次。

SVN安裝與配置

SVN與CVS一樣,也是一個跨平台的軟件,支持大多數常見的操作系統。主要介紹SVN服務器在Windows平台上的安裝和配置過程。 (1)首先,到SVN的官方網站http:/subversion.tigris.org下載最新版本的SVN服務器安裝程序。 (2)運行安裝程序,安裝過程與普通軟件的安裝過程基本相同,例如F:ASubversion。其餘步驟都採用默認設置,依次單擊Next按鈕,直至安裝結束。 SVN服務器安裝完成後,下面需要對其進行配置,具體配置步驟如下。 (1)在Windows操作系統中選擇「開始」一「運行」命令,在彈出的對話框中輸入cmd命令,按【Enter】鍵,進入SVN服務器端的安裝目錄下面的bin目錄。 (2)在DOS命令符下運行svmadmin create SVN庫的位置(例如,ASVN_PRJ)。 (3)把SVN設置成Window服務的輔助工具SVNService.exe,複製SVNService.exe到SVN服務安裝目錄下的bin目錄。然後在DOS命令符下運行SVNService-install-d-rSVN庫的位置(例如,ASVN_PRJ)。 BUNService installed圖4-3把SVN設置成Windows服務 (4)進入\SVN_PRJconf目錄下編輯 svnserve.conf配置文件,內容如下: (5)進入SVN_PRJNcon\目錄下編輯 passwd配置文件,內容如下: (6)在Windows操作系統中選擇「開始」→「設置」→「控制面板」→「管理工具」→「服務」→「啟動SVNService服務」命令。 至此,SVN服務器就成功配置完成並啟動了。此時,SVN客戶端可以使用設置好的賬號來登錄SVN服務器了。  

參考來源

  1. [1],CoremTech酷美科技 ,