qileilove

          blog已經(jīng)轉(zhuǎn)移至github,大家請?jiān)L問 http://qaseven.github.io/

          Linux搭建SVN server

           一. SVN 簡單介紹
            Subversion(SVN) 是一個(gè)開源的版本號控制系統(tǒng), 也就是說 Subversion 管理著隨時(shí)間改變的數(shù)據(jù)。 這些數(shù)據(jù)放置在一個(gè)中央資料檔案庫 (repository) 中。 這個(gè)檔案庫非常像一個(gè)普通的文件server, 只是它會記住每一次文件的變動(dòng)。 這樣你就能夠把檔案恢復(fù)到舊的版本號, 或是瀏覽文件的變動(dòng)歷史。
            SVN中的一些概念 :
            (1). repository(源碼庫)
            源碼統(tǒng)一存放的地方
            (2). Checkout (提取)
            當(dāng)你手上沒有源碼的時(shí)候,你須要從repository checkout一份
            (3). Commit (提交)
            當(dāng)你已經(jīng)改動(dòng)了代碼,你就須要Commit到repository
            (4). Update (更新)
            當(dāng)你已經(jīng)Checkout了一份源碼, Update一下你就能夠和Repository上的源碼同步,你手上的代碼就會有最新的變更
            日常開發(fā)過程事實(shí)上就是這種(如果你已經(jīng)Checkout而且已經(jīng)工作了幾天):Update(獲得最新的代碼) -->作出自己的改動(dòng)并調(diào)試成功 --> Commit(大家就能夠看到你的改動(dòng)了) 。
            假設(shè)兩個(gè)程序猿同一時(shí)候改動(dòng)了同一個(gè)文件呢,  SVN能夠合并這兩個(gè)程序猿的改動(dòng),實(shí)際上SVN管理源碼是以行為單位的,就是說兩個(gè)程序猿僅僅要不是改動(dòng)了同一行程序,SVN都會自己主動(dòng)合并兩種改動(dòng)。假設(shè)是同一行,SVN會提示文件Confict, 沖突,須要手動(dòng)確認(rèn)。
            client軟件:
            (1)Windows下經(jīng)常使用的client軟件經(jīng)常使用TortoiseSVN。它是一個(gè)免費(fèi)的開源的client。 下載地址:http://tortoisesvn.net/downloads.html
            (2)向Myeclipse,也有一些SVN的插件。
            Subversion提供下面主要功能:
            (1)文件夾版本號控制
            CVS 僅僅能跟蹤單個(gè)文件的歷史, 只是 Subversion 實(shí)作了一個(gè) “虛擬” 的版本號控管文件系統(tǒng), 可以依時(shí)間跟蹤整個(gè)文件夾的變動(dòng)。 文件夾和文件都能進(jìn)行版本號控制。
            (2)真實(shí)的版本號歷史
            自從CVS限制了文件的版本號記錄,CVS并不支持那些可能發(fā)生在文件上,但會影響所在文件夾內(nèi)容的操作,如同復(fù)制和重命名。除此之外,在CVS里你不能用擁有相同名字可是沒有繼承老版本號歷史或者根本沒有關(guān)系的文件替換一個(gè)已經(jīng)納入系統(tǒng)的文件。在Subversion中,你能夠添加(add)、刪除(delete)、復(fù)制(copy)和重命名(rename),不管是文件還是文件夾。全部的新加的文件都從一個(gè)新的、干凈的版本號開始。
            (3)自己主動(dòng)提交
            一個(gè)提交動(dòng)作,不是所有更新到了檔案庫中,就是全然不更新。這同意開發(fā)者以邏輯區(qū)間建立并提交變動(dòng),以防止當(dāng)部分提交成功時(shí)出現(xiàn)的問題。
            (4)納入版本號控管的元數(shù)據(jù)
            每個(gè)文件與文件夾都附有一組屬性keyword并和屬性值相關(guān)聯(lián)。你能夠創(chuàng)建, 并儲存不論什么你想要的Key/Value對。 屬性是隨著時(shí)間來作版本號控管的, 就像文件內(nèi)容一樣。
            (5)選擇不同的網(wǎng)絡(luò)層
            Subversion 有抽象的檔案庫存取概念, 能夠讓人非常easy地實(shí)作新的網(wǎng)絡(luò)機(jī)制。 Subversion 能夠作為一個(gè)擴(kuò)展模塊嵌入到Apache HTTP server中。這個(gè)為Subversion提供了非常先進(jìn)的穩(wěn)定性和協(xié)同工作能力,除此之外還提供了很多重要功能: 舉例來說, 有身份認(rèn)證, 授權(quán), 在線壓縮, 以及文件庫瀏覽等等。另一個(gè)輕量級的獨(dú)立Subversionserver, 使用的是自己定義的通信協(xié)議, 能夠非常easy地通過 ssh 以 tunnel 方式使用。
            (6)一致的數(shù)據(jù)處理方式
            Subversion 使用二進(jìn)制差異算法來異表示文件的差異, 它對文字(人類可理解的)與二進(jìn)制文件(人類無法理解的) 兩類的文件都一視同仁。 這兩類的文件都相同地以壓縮形式儲存在檔案庫中, 并且文件差異是以兩個(gè)方向在網(wǎng)絡(luò)上傳輸?shù)摹?/div>
            (7)有效的分支(branch)與標(biāo)簽(tag)
            在分支與標(biāo)簽上的消耗并不必一定要與項(xiàng)目大小成正比。 Subversion 建立分支與標(biāo)簽的方法, 就僅僅是復(fù)制該項(xiàng)目, 使用的方法就相似于硬連接(hard-link)。 所以這些操作僅僅會花費(fèi)非常小, 并且是固定的時(shí)間。
            (8)Hackability
            Subversion沒有不論什么的歷史包袱; 它主要是一群共用的 C 程序庫, 具有定義完好的API。這使得 Subversion 便于維護(hù), 而且可被其他應(yīng)用程序與程序語言使用。
           二.  SVN server搭建
            2.1 使用yum 安裝SVN包
            關(guān)于YUM server的配置參考:
            Linux 搭建 YUM server
            http://blog.csdn.net/tianlesoftware/archive/2011/01/03/6113902.aspx
          [root@singledb ~]# yum install -y subversion
          Loaded plugins: rhnplugin, security
          This system is not registered with RHN.
          RHN support will be disabled.
          Setting up Install Process
          Resolving Dependencies
          --> Running transaction check
          ---> Package subversion.i386 0:1.4.2-4.el5_3.1 set to be updated
          --> Finished Dependency Resolution
          Dependencies Resolved
          ====================================================================================================
          Package                Arch             Version                        Repository             Size
          ====================================================================================================
          Installing:
          subversion             i386             1.4.2-4.el5_3.1                rhel-base             2.3 M
          Transaction Summary
          ====================================================================================================
          Install      1 Package(s)
          Update       0 Package(s)
          Remove       0 Package(s)
          Total download size: 2.3 M
          Downloading Packages:
          subversion-1.4.2-4.el5_3.1.i386.rpm                                          | 2.3 MB     00:00
          Running rpm_check_debug
          Running Transaction Test
          Finished Transaction Test
          Transaction Test Succeeded
          Running Transaction
          Installing     : subversion                                                                   1/1
          Installed:
          subversion.i386 0:1.4.2-4.el5_3.1
          Complete!
            [root@singledb ~]#
            驗(yàn)證安裝版本號:
          [root@singledb ~]# svnserve --version
          svnserve, version 1.4.2 (r22196)
          compiled Aug  5 2009, 19:03:56
          Copyright (C) 2000-2006 CollabNet.
          Subversion is open source software, see http://subversion.tigris.org/
          This product includes software developed by CollabNet
            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 創(chuàng)建SVN 版本號庫
            [root@singledb ~]# mkdir /u02/svn
            [root@singledb ~]# svnadmin create /u02/svn/davesvn  --davesvn為版本號庫名稱
            2.3  SVN 配置
            創(chuàng)建版本號庫后,在這個(gè)文件夾下會生成3個(gè)配置文件:
            [root@singledb conf]# pwd
            /u02/svn/davesvn/conf
            [root@singledb conf]# ls
            authz  passwd  svnserve.conf
            (1)svnserve.conf:  svn服務(wù)配置文件下。
            (2)passwd: username口令文件。
            (3)authz: 權(quán)限配置文件。
            svnserve.conf 文件, 該文件配置項(xiàng)分為下面5項(xiàng):
            anon-access: 控制非鑒權(quán)用戶訪問版本號庫的權(quán)限。
            auth-access:  控制鑒權(quán)用戶訪問版本號庫的權(quán)限。
            password-db: 指定username口令文件名稱。
            authz-db:指定權(quán)限配置文件名稱,通過該文件能夠?qū)崿F(xiàn)以路徑為基礎(chǔ)的訪問控制。
            realm:指定版本號庫的認(rèn)證域,即在登錄時(shí)提示的認(rèn)證域名稱。若兩個(gè)版本號庫的認(rèn)證域同樣,建議使用同樣的username口令數(shù)據(jù)文件
            Passwd 文件 :
            我們在svnserve.conf文件中啟用這個(gè)文件。然后配置例如以下:
            [root@singledb 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  文件 :
            在網(wǎng)上找到一個(gè)非常好的配置樣例:
            [groups]
            admin = john, kate
            devteam1 = john, rachel, sally
            devteam2 = kate, peter, mark
            docs = bob, jane, mike
            training = zak
            --這里把不同用戶放到不同的組里面,以下在設(shè)置文件夾訪問權(quán)限的時(shí)候,用文件夾來操作就能夠了。
            # 為全部庫指定默認(rèn)訪問規(guī)則
            # 全部人能夠讀,管理員能夠?qū)懀<狈肿記]有不論什么權(quán)限
            [/]  --相應(yīng)我測試?yán)锏模?u02/svn 文件夾
            * = r
            @admin = rw
            dangerman =
            # 同意開發(fā)者能夠全然訪問他們的項(xiàng)目版本號庫
            [proj1:/]
            @devteam1 = rw
            [proj2:/]
            @devteam2 = rw
            [bigproj:/]
            @devteam1 = rw
            @devteam2 = rw
            trevor = rw
            # 文檔編寫人員對全部的docs文件夾有寫權(quán)限
            [/trunk/doc]
            @docs = rw
            # 培訓(xùn)人員能夠全然訪問培訓(xùn)版本號庫
            [TrainingRepos:/]
            @training = rw
            以下我們來配置我們的authz文件:
            [root@singledb conf]# cat authz
            [groups]
            admin = dave
            dev=tianlesoftware
            [davesvn:/]
            @admin = rw
            @dev = rw
            [root@singledb conf]#
            2.4 啟動(dòng)和停止SVN服務(wù)
            (1)啟動(dòng)SVN服務(wù):
            [root@singledb conf]# svnserve -d -r /u02/svn
            -d表示后臺執(zhí)行
            -r 指定根文件夾是 /u02/svn
            [root@singledb 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服務(wù):
            ps -aux |grep svn
            kill -9 進(jìn)程殺掉三. client連接SVN server
            3.1 安裝TortoiseSVN client
            下載地址在第一節(jié)已說明。
            3.2 找到自己項(xiàng)目的文件夾,右擊,進(jìn)行SVN 操作
            (1)新建測試文件夾svn,進(jìn)入后右鍵,點(diǎn)checkout:
            SVN server的IP地址和版本號庫名稱。
            新建個(gè)文件svn.txt. 把這個(gè)文件上傳到SVNserver(add):

          posted on 2014-09-22 09:27 順其自然EVO 閱讀(238) 評論(0)  編輯  收藏 所屬分類: 測試學(xué)習(xí)專欄

          <2014年9月>
          31123456
          78910111213
          14151617181920
          21222324252627
          2829301234
          567891011

          導(dǎo)航

          統(tǒng)計(jì)

          • 隨筆 - 3936
          • 文章 - 404
          • 評論 - 179
          • 引用 - 0

          常用鏈接

          留言簿(55)

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          搜索

          •  

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 天等县| 乐都县| 淮阳县| 尖扎县| 远安县| 安图县| 铜鼓县| 蕉岭县| 浪卡子县| 绍兴市| 沙坪坝区| 紫阳县| 东方市| 九江市| 河源市| 郴州市| 万载县| 盱眙县| 吕梁市| 四子王旗| 惠水县| 兴业县| 南康市| 白城市| 拉萨市| 滨海县| 广元市| 汽车| 方城县| 阿拉尔市| 五华县| 西乡县| 阿拉善左旗| 伊金霍洛旗| 和田市| 巴彦淖尔市| 明溪县| 资溪县| 绍兴县| 海伦市| 徐州市|