Linux下SVN服務器遷移(詳細版)

        最近因公司測試環境需要做遷移,除了應用需要遷移外,項目中平時用到的軟件都得遷,涉及到nginx,redis , active MQ ,jenkins 以及SVN。SVN的遷移涉及到了代碼的同步,在網上搜了很多SVN遷移相關的文章,發現雜而亂,最終還是完成了測試環境的SVN遷移。遷移完成後,發現整個過程是非常清晰以及有序的,遂記之。

            

        步驟:將SVN從一臺服務器(源服務器)遷移到另一臺服務器(新服務器)上,操作分爲兩步:

            1 )   按照源服務器的版本,在新服務器安裝同樣的版本的SVN;

            2 )   同步源服務器的SVN庫到新服務器上;


        SVN安裝:(以1.6.11版本爲例)

            1 )  下載   subversion-1.6.11.tar.bz2   subversion-deps-1.6.11.tar.bz2  這兩個文件

                  wget  http://subversion.tigris.org/downloads/subversion-1.6.11.tar.bz2

                  wget  http://subversion.tigris.org/downloads/subversion-deps-1.6.11.tar.bz2

           2) 解壓

                tar  jxvf  subversion-1.6.11.tar.bz2

                tar  jxvf  subversion-deps-1.6.11.tar.bz2

               解壓完成後,會出現一個名爲 subversion-1.6.11的文件夾  如下圖:

                

          3 ) 安裝:( 分爲三個操作   配置安裝路徑    編譯    安裝  )

                進入到  subversion-1.6.11 這個目錄下,( PS  :   三個操作都在此目錄下操作  )

                配置安裝路徑:        ./configure --prefix=/home/yst/svn    ( /home/yst/svn  這個是指定安裝到哪個目錄 )

                編譯: make

                安裝: make install

                ( PS :   編譯 和 安裝 也可以 合併成一句命令    make && make install )

          

           至此 新服務SVN服務的 安裝已經完成了。這裏再推薦下另外的方式( 需要 root權限 ):

                    1) 萬能的  yum

                        yum install subversion   

                    2 ) apt-get 

                        apt-get install subversion

            

           接下來,檢查SVN 是否安裝成功。

            svn --version   (  出現version,表示安裝成功  )

            如果 svn 命令找不到的話:( 就用 svn命令的全路徑去執行    svn命令在  安裝目錄(home/yst/svn)的 bin目錄下      )

                        


   

     SVN的遷移: (  建議遷移的時候,將所有源庫SVN所有賬號的權限改成只讀,或者停掉SVN服務器  )

            SVN的遷移有兩種方式: 

                   1) dump出源機器SVN的代碼庫,然後load到新服務器上去。

                   2)  使用 svnsync 直接同步源機器代碼庫。

           比較這兩種遷移的方式,我比較推薦第二種——使用svnsync進行遷移。第一種使用dump出源機器代碼庫,

dump完,看了一下dump文件,幾十個G,太大了。兩種操作的方式具體操作如下:

            

             一、採用dump遷移SVN代碼庫:

                    1) dump 出源機器的SVN代碼庫:  (  依照SVN數據量的大小,時間可能會很長 )

                          svnadmin dump repos/ > 2414.dump  (dum出文件)

                                                    repos/ 源機器上SVN代碼庫目錄     

                        

                    2)使用 scp(secure copy)命令,將dump出來的文件傳到 新機器上。

                        scp -r  /home/svn-admin/repos  [email protected]:/home/yst/svn/svn-admin

                        scp -r   源機器SVN倉庫目錄         新機器用戶名@新機器IP地址:傳到新機器的指定目錄

                        然後輸入新機器 linux用戶名的密碼,就在傳dump文件了。

                        

                

                    3 )  在 新機器上建立 倉庫

                        svnadmin  create  /home/yst/svn/svn-admin/repos4

                        

                    4)  將 dump 文件 load 進 新服務的倉庫中:

                   /home/yst/svn/bin/svnadmin load /home/yst/svn/svn-admin/repos4 < 2414.dump  

                   將 2414.dump   < ( 寫入 ) 到 新服務器上剛剛新建的倉庫中去。

               

                5) 啓動新機器的SVN服務:

                      svnserve -d -r repos4

                

                6)查看  SVN服務是否 啓動:

                      ps -ef |  grep svn  (  如下圖 )

                    

                        

                    PS :  SVN服務的默認啓動端口是 3690, 可以通過  svnserve --listen-port 8899 -d -r  repos4(SVN倉庫路徑)指定端口啓動。


            二、使用 svnsync 遷移SVN代碼庫 ( 推薦使用這種方式 )

                1)在新服務器上創建 代碼倉庫

                      svnadmin create /home/yst/svn/svn-admin/repos5

                 

                2)修改新建倉庫中hooks 下的 名爲 pre-revprop-change 的文件:

                    cp pre-revprop-change.tmpl pre-revprop-change

                    

                    chmod 777  pre-revprop-change  (  給pre-revprop-change文件 賦執行權限 )

                    

                     修改  pre-revprop-change 腳本最後一行 爲  exit 0

                    3)svnsync  init  file:///home/yst/svn/svn-admin/repos5 svn://xx.xx.xx.xx ( 初始化 )

                        svnsync  init   file:// 新機器倉庫目錄路徑   源服務器的IP(可以通過 http 協議,還可以通過svn協議)               

                         (PS : 這塊需要輸入密碼驗證,新服務器的密碼    源服務器SVN的賬號密碼,此賬號應該有倉庫所有代碼的讀取權限)

                 4) svnsync sync file:///home/yst/svn/svn-admin/repos5  ( 同步 )

                

                5)  等待同步完成,啓動SVN服務器即可。至此,SVN服務就已經遷移完了。    

            

             遷移完成之後,發現提交代碼有問題,報錯如下:

            

            解決方式是: 將原倉庫的 uuid 複製過來,覆蓋新服務器上的UUID

            

            


            

                參考鏈接:

                        SVN權限控制

                                https://blog.csdn.net/cuiyaoqiang/article/details/51784391    

                        SVN sync同步:

                                http://blog.chinaunix.net/uid-25266990-id-2953695.html

                        SVN 實時同步:

                                http://blog.51cto.com/php2012web/1852311

                                 https://blog.csdn.net/xyw591238/article/details/51914908

            

                

                    

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