linux svn server搭建、多專案管理及主備方案

pubian877發表於2020-07-12

  【svn簡介】


  svn用於版本管理資料,它採用了分支管理系統。在它出現之前存在CVS,svn推出之後,逐步替代了CVS。


  目前又出現git,相比於svn,git更支援分散式版本管理,目前發展很猛,這裡不詳細介紹。大家可以先把svn瞭解熟悉之後,再看看git,對比下。


  ps:時代總是在進步啊,需要跟上潮流。同時,需要了解潮流為何,需要思考潮流背後的原因為何,瞭解背景歷史為何,否則就是盲從了。


  【第一安裝】


  yum install subversion


  (當然如果你覺得這個版本不滿足需求,也可以編譯安裝,去下載相關的包即可)


  具體是安裝一下6個包


  (1/6):apr-1.3.9-5.el6_2.i686.rpm|129 kB 00:01


  (2/6):apr-util-1.3.9-3.el6_0.1.i686.rpm|89 kB 00:00


  (3/6):neon-0.29.3-3.el6_4.i686.rpm|120 kB 00:00


  (4/6):pakchois-0.4-3.2.el6.i686.rpm|21 kB 00:00


  (5/6):perl-URI-1.40-2.el6.noarch.rpm|117 kB 00:00


  (6/6):subversion-1.6.11-10.el6_5.i686.rpm|2.2 MB 00:07


  【第二配置】


  2.1、建立svn目錄


  mkdir-p/data/svndata/


  2.2、建立多專案:將iso、android、web分開管理


  svnadmin create/data/svndata/ios


  svnadmin create/data/svndata/android


  svnadmin create/data/svndata/web


  注意:svnadmin create用於建立獨立的專案,建立好之後如下圖:


  wKioL1PqHNaCfQVdAAElRCyqElE977.jpg至此,建立了三個不同的專案,那怎樣統一管理呢?請繼續向下看


  2.3、統一管理配置(用於管理多個專案)


  2.3.1、建立統一管理相關配置檔案


  mkdir-p/data/svndata/conf/#該目錄用於管理所有專案的帳號密碼、許可權控制等


  cat/data/svndata/conf/svnserve.conf#svn的總控檔案[general]


  anon-access=none#未鑑定的使用者無許可權訪問該版本庫


  auth-access=write#鑑定後的可讀寫版本庫


  password-db=passwd#使用的密碼檔案是同級路徑的passwd檔案,即是/data/svndata/conf/passwd


  authz-db=authz#使用的許可權控制檔案是同級路徑的authz檔案,即是/data/svndata/conf/authz


  realm=svndata#realm指定版本庫的認證域,即在登入時提示的認證域名稱。各個專案的認證域都可以自定義


  cat/data/svndata/conf/passwd#每個使用者的使用者名稱和密碼


  [users]


  h2o=Yj3NlMD


  river=Yjh9jNj


  cat


  /data/svndata/conf/authz#許可權管理,許可權管理的統一思路是:建立多個組,將各個使用者加入到各個組,控制各個組的許可權。以後對許可權管理就維持在組的維度,否則以人為粒度管理,會死人滴


  [groups]


  develop=h2o,user1#說明develop有兩人


  android=h2o,user3


  ios=h2o,river,user2


  [android:/trunk]#說明android的trunk相關許可權


   android=rw#說明android組有讀寫許可權


   develop=rw


  [ios:/trunk]


   ios=rw


   develop=rw


  自此,總控的配置檔案已經準備完畢


  2.3.2各專案配置檔案修改


  每個專案預設使用的配置檔案是該專案下的配置檔案,所以必須修改掉,否則不受總控配置檔案的管理的


  每個專案目錄結構如下:


  wKioL1PqHQ2QySGWAABN0BRJy8Q158.jpg


  #grep-v'#'/data/svndata/android/conf/svnserve.conf#其他專案類似,這裡就不一一列舉了[general]


  anon-access=none


  auth-access=write


  password-db=../../conf/passwd#說明使用總控的密碼檔案


  authz-db=../../conf/authz#說明使用總控的許可權檔案


  realm=android


  【第三啟動】


  svnserve-d-r/data/svndata/


  【第四資料初始化】


  已有程式碼需要匯入svn版本庫如下


  svn import/tmp/data/ios/file:///data/svndata/codes/ios/trunk-m'init import’


  【第五備庫搭建】


  注:這裡使用了svnsync定時同步資料,也可以做實時同步,請自己研究(大致提示為配置鉤子post-commit來實現)


  5.1備庫專案建立(和主庫建立專案無異)以下操作在備庫上操作


  mkdir-p/data/svndata/


  svnadmin create/data/svndata/ios


  svnadmin create/data/svndata/android


  svnadmin create/data/svndata/web


  配置檔案也和主庫一樣:包括總控的配置檔案及各專案的配置檔案,這裡就不詳細列了。


  5.2準備備庫的鉤子(以android專案為例,其他專案一樣)以下操作在備庫上操作


  cat/data/svndata/android/hooks/pre-revprop-change


  #!/bin/sh


  exit 0


  chmod 755/data/svndata/android/hooks/pre-revprop-change


  5.3svnsync初始化及同步資料


  這裡以android專案為例,其他專案類似


  注:172.16.0.185是備庫,172.16.0.120是主庫;主庫和備庫的使用者名稱和密碼一致,並且h2o需要有相關許可權,具體看/data/svndata/conf/authz


  svnsync init svn://172.16.0.185/android svn://172.16.0.120/android--username h2o--password Yj3NlMD--no-auth-cache#svnsync建立主備庫關係


  svnsync sync svn://172.16.0.185/android--username h2o--password Yj3NlMD--no-auth-cache#svnsync將資料從主庫同步過來


  如果看到以下內容就說明成功了。如果發現只有版本號,沒有Transmitting file data,請仔細檢查主庫備庫配置檔案,是否有錯誤和遺漏


  Transmitting file data.


  Committed revision 1.


  Copied properties for revision 1.


  Transmitting file data.


  Committed revision 2.


  Copied properties for revision 2.


  Committed revision 3.


  Copied properties for revision 3.


  Transmitting file data.


  Committed revision 4.


  Copied properties for revision 4.


  【第六定時更新指令碼】


  在備庫上寫定時同步的指令碼,關鍵如下


  #!/bin/bash


  now_time=$(


  date"+%F_%T”)


  projects=(android ios web)


  for project in${projects[ ]};do


  svnsync sync svn://172.16.0.185/$project--username h2o--password Yj3NlMD--no-auth-cache>>/home/logs/svnbak.log.$now_time 2>&1


  done

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69976867/viewspace-2703974/,如需轉載,請註明出處,否則將追究法律責任。

相關文章