linux svn server搭建、多專案管理及主備方案
【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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 多專案管理中的難題及解決方案專案管理
- 怎樣在SQL Server搭建主從備份SQLServer
- vue npm 搭建專案 流程及備忘及不踩坑VueNPM
- svn檔案管理
- Linux 下搭建 SVN 服務Linux
- Linux(centos)搭建SVN倉庫LinuxCentOS
- 研發管理與專案管理:痛點及解決方案專案管理
- IDEA svn專案 更換SVN地址Idea
- 專案經理如何有效管理專案進度?專案管理3大常見問題及解決方案專案管理
- linux上mysql MM(雙主)及keepalived搭建LinuxMySql
- SVN程式碼倉庫主從同步方案主從同步
- Oracle 11g 一主多備切換方案Oracle
- 使用Linux寶塔搭建專案Linux
- SQL Server On Linux:基於實際專案案例,總結功能支援情況及相關問題解決方案SQLServerLinux
- 聯想公司專案風險管理解決方案及應用
- CRM中的專案管理:搭建CRM與專案一體化管理專案管理
- Linux檔案及目錄管理Linux
- Xcode專案的多Target管理XCode
- MySQL叢集搭建(1)-主備搭建MySql
- 專案中使用SVN簡介
- 【PE】利用SVN的SubWCRev.exe管理同步專案的版本號
- SpringBoot - 多模組專案的搭建教程Spring Boot
- 專案經理必備的專案管理工具——CORNERSTONE專案管理
- 專案管理必備,如何選擇適合自己的專案管理工具?專案管理
- 一個Tomcat 如何部署多個專案?附多種解決方案及詳細步驟!Tomcat
- 專案管理軟體有哪些?多個行業專案管理軟體大全專案管理行業
- 專案經理常用專案管理工具及方法專案管理
- 主備都是全新的恢復,主主搭建步驟
- Spring Boot + MyBatis 多模組專案搭建教程Spring BootMyBatis
- 專案經理都應具備哪些管理技巧?
- Linux 基礎-檔案及目錄管理Linux
- 專案管理難題——資源少專案多,如何破局?專案管理
- 專業服務業務及專案管理方案:使用BPM軟體的五種優勢專案管理
- 成功管理多專案的9個策略
- 網際網路多專案管理用什麼樣的專案管理軟體?專案管理
- 搭建vue cli4專案及打包配置Vue
- SVN cornerstone專案branch, tags, trunk記錄
- Docker 快速搭建redmine 專案管理 BUG追蹤Docker專案管理