1. 程式人生 > >SVN linux 服務器端配置

SVN linux 服務器端配置

單個 手動 身份認證 available 二進制 lin cat word 常開

一. SVN 簡單介紹   Subversion(SVN) 是一個開源的版本號控制系統, 也就是說 Subversion 管理著隨時間改變的數據。 這些數據放置在一個中央資料檔案庫 (repository) 中。 這個檔案庫非常像一個普通的文件server, 只是它會記住每一次文件的變動。 這樣你就能夠把檔案恢復到舊的版本號, 或是瀏覽文件的變動歷史。   SVN中的一些概念 :   (1). repository(源碼庫)   源碼統一存放的地方   (2). Checkout (提取)   當你手上沒有源碼的時候,你須要從repository checkout一份   (3). Commit (提交)   當你已經改動了代碼,你就須要Commit到repository   (4). Update (更新)   當你已經Checkout了一份源碼, Update一下你就能夠和Repository上的源碼同步,你手上的代碼就會有最新的變更   日常開發過程事實上就是這種(如果你已經Checkout而且已經工作
了幾天):Update(獲得最新的代碼) -->作出自己的改動並調試成功 --> Commit(大家就能夠看到你的改動了) 。   假設兩個程序猿同一時候改動了同一個文件呢, SVN能夠合並這兩個程序猿的改動,實際上SVN管理源碼是以行為單位的,就是說兩個程序猿僅僅要不是改動了同一行程序,SVN都會自己主動合並兩種改動。假設是同一行,SVN會提示文件Confict, 沖突,須要手動確認。   client軟件:   (1)Windows下經常使用的client軟件經常使用TortoiseSVN。它是一個免費的開源的client。 下載地址:http://tortoisesvn.net/downloads.html   (2)向Myeclipse,也有一些SVN的插件。   Subversion提供下面主要功能:   (1)文件夾版本號控制   CVS 僅僅能跟蹤單個文件的歷史, 只是 Subversion 實作了一個 “虛擬” 的版本號控管文件系統, 可以依時間跟蹤整個文件夾的變動。 文件夾和文件都能進行版本號控制。   (2)真實的版本號歷史   自從CVS限制了文件的版本號記錄,CVS並不支持那些可能發生在文件上,但會影響所在文件夾內容的操作,如同復制和重命名。除此之外,在CVS裏你不能用擁有相同名字可是沒有繼承老版本號歷史或者根本沒有關系的文件替換一個已經納入系統的文件。在Subversion中,你能夠添加(add)、刪除(delete)、復制(copy)和重命名(rename),不管是文件還是文件夾。全部的新加的文件都從一個新的、幹凈的版本號開始。   (3)自己主動提交   一個提交動作,不是所有更新到了檔案庫中,就是全然不更新。這同意開發者以邏輯區間建立並提交變動,以防止當部分提交成功時出現的問題。   (4)納入版本號控管的元數據   每個文件與文件夾都附有一組屬性keyword並和屬性值相關聯。你能夠創建, 並儲存不論什麽你想要的Key/Value對。 屬性是隨著時間來作版本號控管的, 就像文件內容一樣。   (5)選擇不同的網絡層   Subversion 有抽象的檔案庫存取概念, 能夠讓人非常easy地實作新的網絡機制。 Subversion 能夠作為一個擴展模塊嵌入到Apache HTTP server中。這個為Subversion提供了非常先進的穩定性和協同工作能力,除此之外還提供了很多重要功能: 舉例來說, 有身份認證, 授權, 在線壓縮, 以及文件庫瀏覽等等。另一個輕量級的獨立Subversionserver, 使用的是自己定義的通信協議, 能夠非常easy地通過 ssh 以 tunnel 方式使用。   (6)一致的數據處理方式   Subversion 使用二進制差異算法來異表示文件的差異, 它對文字(人類可理解的)與二進制文件(人類無法理解的) 兩類的文件都一視同仁。 這兩類的文件都相同地以壓縮形式儲存在檔案庫中, 並且文件差異是以兩個方向在網絡上傳輸的。   (7)有效的分支(branch)與標簽(tag)   在分支與標簽上的消耗並不必一定要與項目大小成正比。 Subversion 建立分支與標簽的方法, 就僅僅是復制該項目, 使用的方法就相似於硬連接(hard-link)。 所以這些操作僅僅會花費非常小, 並且是固定的時間。   (8)Hackability   Subversion沒有不論什麽的歷史包袱; 它主要是一群共用的 C 程序庫, 具有定義完好的API。這使得 Subversion 便於維護, 而且可被其他應用程序與程序語言使用。

 二. SVN server搭建   2.1 使用yum 安裝SVN包   關於YUM server的配置參考:   Linux 搭建 YUM server   http://blog.csdn.net/tianlesoftware/archive/2011/01/03/6113902.aspx
[[email protected] ~]# yum install -y subversion
  [[email protected] ~]#   驗證安裝版本號:
[[email protected] ~]# svnserve --version
  The following repository back-end (FS) modules are available:   * fs_base : Module for working with a Berkeley DB repository.   * fs_fs : Module for working with a plain file (FSFS) repository.   2.2 創建SVN 版本號庫   [[email protected] ~]# mkdir /u02/svn   [[email protected] ~]# svnadmin create /u02/svn/davesvn --davesvn為版本號庫名稱   2.3 SVN 配置   創建版本號庫後,在這個文件夾下會生成3個配置文件:   [[email protected] conf]# pwd   /u02/svn/davesvn/conf   [[email protected] conf]# ls   authz passwd svnserve.conf   (1)svnserve.conf: svn服務配置文件下。   (2)passwd: username口令文件。   (3)authz: 權限配置文件。   svnserve.conf 文件, 該文件配置項分為下面5項:   anon-access: 控制非鑒權用戶訪問版本號庫的權限。   auth-access: 控制鑒權用戶訪問版本號庫的權限。   password-db: 指定username口令文件名稱。   authz-db:指定權限配置文件名稱,通過該文件能夠實現以路徑為基礎的訪問控制。   realm:指定版本號庫的認證域,即在登錄時提示的認證域名稱。若兩個版本號庫的認證域同樣,建議使用同樣的username口令數據文件   Passwd 文件 :   我們在svnserve.conf文件中啟用這個文件。然後配置例如以下:   [[email protected] conf]# cat passwd   ### This file is an example password file for svnserve.   ### Its format is similar to that of svnserve.conf. As shown in the   ### example below it contains one section labelled [users].   ### The name and password for each user follow, one account per line.   [users]   # harry = harryssecret   # sally = sallyssecret   dave = davepwd   tianlesoftware = tianlesoftwarepwd   authz 文件 :   在網上找到一個非常好的配置樣例:   [groups]   admin = john, kate   devteam1 = john, rachel, sally   devteam2 = kate, peter, mark   docs = bob, jane, mike   training = zak   --這裏把不同用戶放到不同的組裏面,以下在設置文件夾訪問權限的時候,用文件夾來操作就能夠了。   # 為全部庫指定默認訪問規則   # 全部人能夠讀,管理員能夠寫,危急分子沒有不論什麽權限   [/] --相應我測試裏的:/u02/svn 文件夾   * = r [email protected] = rw   dangerman =   # 同意開發者能夠全然訪問他們的項目版本號庫   [proj1:/] [email protected] = rw   [proj2:/] [email protected] = rw   [bigproj:/] [email protected] = rw [email protected] = rw   trevor = rw   # 文檔編寫人員對全部的docs文件夾有寫權限   [/trunk/doc] [email protected] = rw   # 培訓人員能夠全然訪問培訓版本號庫   [TrainingRepos:/] [email protected] = rw   以下我們來配置我們的authz文件:   [[email protected] conf]# cat authz   [groups]   admin = dave   dev=tianlesoftware   [davesvn:/] [email protected] = rw [email protected] = rw   [[email protected] conf]#   2.4 啟動和停止SVN服務   (1)啟動SVN服務:   [[email protected] conf]# svnserve -d -r /u02/svn   -d表示後臺執行   -r 指定根文件夾是 /u02/svn   [[email protected] conf]# ps -ef | grep svn   root 4592 1 0 18:04 ? 00:00:00 svnserve -d -r /u02/svn   root 4594 3709 0 18:04 pts/1 00:00:00 grep svn   (2)停止SVN服務:   ps -aux |grep svn   kill -9 進程殺掉三. client連接SVN server   3.1 安裝TortoiseSVN client   下載地址在第一節已說明。   3.2 找到自己項目的文件夾,右擊,進行SVN 操作   (1)新建測試文件夾svn,進入後右鍵,點checkout: 技術分享   SVN server的IP地址和版本號庫名稱。 技術分享   新建個文件svn.txt. 把這個文件上傳到SVNserver(add): 技術分享

SVN linux 服務器端配置