linux下安裝svn,svn搭建,svn遷移詳解

Part 1 svn下載及安裝

1.下載subversion以及依賴文件

    (1)subversion url : http://mirrors.hust.edu.cn/apache/subversion/subversion-1.8.19.tar.gz
    (2)apr : http://archive.apache.org/dist/apr/apr-1.4.6.tar.bz2
    (3)apr-util : http://archive.apache.org/dist/apr/apr-util-1.5.1.tar.bz2
    (4)sqlite:  http://www.sqlite.org/sqlite-amalgamation-3071501.zip
    (5)zlib:http://sourceforge.net/projects/libpng/files/zlib/1.2.8/zlib-1.2.8.tar.gz

2.將文件從windows移到redhat

    (1)下載pscp.exe : https://the.earth.li/~sgtatham/putty/latest/w64/pscp.exe #需配置好Putty的環境變量
    (2)cd到文件壓縮包的目錄,輸入 :
        pscp subversion-1.8.19.tar.gz [email protected]:/home
        pscp apr-1.4.6.tar.bz2 [email protected]:/home
        pscp apr-util-1.5.1.tar.bz2 [email protected]:/home
        pscp sqlite-amalgamation-3071501.zip [email protected]:/home
        pscp zlib-1.2.8.tar.gz [email protected]:/home

3.進入42服務器

(1)cd /home 
(2)解壓(tar.b2和tar.gr解壓時有一定區別)
    tar zxvf subversion-1.8.19.tar.gz
    tar zxvf zlib-1.2.8.tar.gz
    tar jxvf apr-1.4.6.tar.bz2 ./subversion-1.8.19/
    tar jxvf apr-util-1.5.1.tar.bz2 ./subversion-1.8.19/
    unzip sqlite-amalgamation-3071501 ./subversion-1.8.19/sqlite-amalgamation  #sqlite-amalgamation-3071501這裏一定要改名(sqlite-amalgamation ),不然在編譯subversion會有問題
(3)cd到apr、apr--util、subversion、zlib文件夾內,編譯。
    (1)./configure --prefix=/usr/local/dyw/apr
    (2)make && make install
    (3)./configure --prefix=/usr/local/dyw/apr-util --with-apr=/usr/local/dyw/apr
    (4)make && make install
    (5)./configure --prefix=/usr/local/dyw/zlib --with-apr=/usr/local/dyw/apr --with-apr-util=/usr/local/dyw/apr-util
    (6)make && make install
    (7)./configure --prefix=/usr/local/dyw/svn1.8 --with-apr=/usr/local/dyw/apr --with-apr-util=/usr/local/dyw/apr-util with-zlib=/usr/local/zlib
    (8)make && make install

(4)測試svn是否安裝完成
    (1)cd /usr/local/dyw/svn1.8/bin
    (2)./svnserve --version  #能顯示出一些版本信息則表示安裝正確

(5)將svn加入環境變量中
    (1)vi /etc/profile
    (2)在文件最後加上一句:export PATH=$PATH:/usr/local/dyw/svn1.8/bin
    (3)source /etc/profile
    (4)保存並退出(wq)
(6)測試svn是否安裝完成  
    svnserve --version #能顯示出一些版本信息則表示環境變量設置成功,無論在那個文件夾都可使用svn命令

Part 2 SVN搭建

1建立svn根目錄

    mkdir -p /usr/lcoal/dyw/svn1.8data3/repositories

2將該目錄設爲SVN倉庫(下面若無特殊聲明,都在目錄/repositories下操作)

    svnadmin create /usr/local/svn1.8data3/repositories  #完成後repositories中會生成一些文件

3修改版本配置文件

    (1)vi ./conf/svnserve.conf、authz、passwd修改內容如下(其他未做操作的不用修改,注意每一句前不能有空格)
        1.svnserve.config
            anon-access =none
            password-db =passwd
            authz-db = authz
        2.passwd
            yiwend = aaaaaa.1
            zhangsan= aaaaaa.1
            lisi= aaaaaa.1
            wanger= aaaaaa.1
        3.authz
            [groups]
            ns_lo_team = yiwend,zhangsan,lisi,wanger
            [/]
            @ns_lo_team =rw
            yiwend =rw
            zhangsan=rw

4.啓動SVN

    svnserve -d -r /usr/local/dyw/svn1.8data3/repositories #默認的啓動端口號爲3690

5.檢查啓動情況

    netstat -tunlp | grep svn
        # tcp  0  0 0.0.0.0:3690   0.0.0.0:*    LISTEN  29818/svnserve   會出現這樣的信息

6.取消防火牆對於svn的限制

    1.iptables -I INPUT -i eth0 -p tcp --dport 3690 -j ACCEPT
    2.iptables -I OUTPUT -o eth0 -p tcp --sport 3690 -j ACCEPT
    3./etc/rc.d/init.d/iptables save  
    4./etc/init.d/iptables status   #查看狀態

7.停止svn

    killall svnserve

Part 3 svn代碼庫的遷移

1.svnadmin dump form :svnadmin dump REPOS_PATH [-r LOWER[:UPPER]] [–incremental]

svnadmin dump命令用於導出整個Repository或Repository下的某個範圍的修訂版本。REPOS_PATH是版本庫的路徑。
    [-r LOWER[:UPPER]]用於指定導出的修訂版本範圍,由參數-r和兩個用:號隔開阿拉伯數字組成。
    例如:-r 0:50表示導出才版本0到版本50之間的所有修訂版,-r是revision的縮寫。
    而另一個關鍵參數是--incremental。 它使用增量方式來導出版本,即每次都只導出自上一個版本以來的修改。
    這樣的好處是第一:可以把一個大的文 件切分成若干個小的文件。
    第二:在版本庫已經存在的情況下,我們只需要每次導出修改的部分,不需要每次都導出整個版本庫的內容。
    甚至可以通過hook腳本 每天晚上自動將當天的修改dump出來做備份用。

2.svnadmin load

     svnadmin load REPOS_PATH
    svnadmin load命令用於從標準輸入流/其它流中導入版本庫,REPOS_PATH是要導入的目標版本庫。

3.svn switch命令語法

    svn switch URL [PATH]
    switch --relocate FROM TO [PATH]
    svn switch命令用於更新工作副本的URL。意即指向新的版本庫位置。首先要注意的一點是我們即可以將整個工作副本指向新的URL,也可將工作副本下的某個目錄指向新的URL。
    另外一個重要的參數就是--relocate。這個參數是否使用對於結果如何有很大影響,使用不當甚至可能會造成版本庫不可用。其中有兩條重要的規則:
    A.假如工作副本只是映射到同一個版本庫內的不同位置,那麼使用svn switch即可
    B.假如工作副本已是映射到不同的版本庫,那麼必須使用svn switch --relocate 

遷移實例:

    (1)進入41服務器進行dump操作
        svnadmin dump /usr/local/repositories > /usr/local/repositories-dump
    (2)進入42服務器利用自帶命令scp進行將41上的文件repositories-dump移植(注意防火牆,可以ping測試)
        scp [email protected]:/usr/local/repositories-dump /usr/local/dyw/svn1.8data3/
    (3)創建資源文件夾
        svnadmin create /usr/local/dyw/svn1.8data3/repositories
    (4)進行load操作(在/usr/local/dyw/svn1.8data3中,下面如無特殊制定都在這個目錄操作)
        svnadmin load ./repositories < ./repositories-dump --bypass-prop-validation #後面--bypass-prop-validation的目的是忽略錯誤,出現這個錯誤的原因是工程師在輸入日誌時回車被記錄的是(Control+M / ^M)。在SVN老版本升級成1.6以上的新版本時特別常見。         規避方案是使用svnsync我要做的操作是把老的版本庫遷移的新的高版本的服務器。所以以上操作是在新的服務器上執行的:
    (5)創建一個用來修復上面問題的版本庫
        svnadmin create repositories-fixed
        並在hooks中創建編輯文本
        vi ./repositories-fixed/hooks/pre-revprop-change
        內容爲:
                #!/bin/sh
                exit 0
    (6)添加執行權限
        chmod a+x pre-revprop-change 
    (7)初始化svnsync的目標配置庫,即repositories-fixed
        svnsync init file:///usr/local/dyw/svn1.8data3/repositories-fixed file:///usr/local/dyw/svn1.8data3/repositories
    (8)拷貝整個存儲庫
        svnsync sync file:///usr/local/dyw/svn1.8data3/repositories-fixed
    (9)進行dump操作
        svnadmin dump ./repositories-fixed > ./repositories-fixed-dump
    (10)重新創建行的repositories 資源文件夾
        rm -rf ./repositories
        svnadmin create ./repositories
    (11)進行load操作,刪除repositories-fixed以及./repositories-fixed-dump
        svnadmin load ./repositories < ./repositories-fixed-dump 
    (12)設置svnserve啓動文件夾
        svnserve -d -r /usr/local/dyw/svn1.8data3/repositories
發佈了30 篇原創文章 · 獲贊 11 · 訪問量 7萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章