博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
备份一篇SVN的文章, 从搭建到主备库
阅读量:6470 次
发布时间:2019-06-23

本文共 4073 字,大约阅读时间需要 13 分钟。

来源: http://h2ofly.blog.51cto.com/6834926/1539141

【svn简介】

            svn用于版本管理数据,它采用了分支管理系统。在它出现之前存在CVS,svn推出之后,逐步替代了CVS。
            目前又出现git,相比于svn,git更支持分布式版本管理,目前发展很猛,这里不详细介绍。大家可以先把svn了解熟悉之后,再看看git,对比下。
            ps:时代总是在进步啊,需要跟上潮流。同时,需要了解潮流为何,需要思考潮流背后的原因为何,了解背景历史为何,否则就是盲从了。

【第一安装】

1
yum install subversion

 

(当然如果你觉得这个版本不满足需求,也可以编译安装,去下载相关的包即可)

具体是安装一下6个包

1
2
3
4
5
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目录

1
mkdir 
-
p  
/
data
/
svndata
/

2.2、创建多项目:将iso、android、web分开管理

1
2
3
svnadmin create 
/
data
/
svndata
/
ios
svnadmin create 
/
data
/
svndata
/
android 
svnadmin create 
/
data
/
svndata
/
web

注意:svnadmin create用于创建独立的项目,创建好之后如下图:

至此,创建了三个不同的项目,那怎样统一管理呢?请继续向下看
2.3、统一管理配置(用于管理多个项目)
2.3.1、创建统一管理相关配置文件

1
2
3
4
5
6
7
8
9
10
11
12
13
mkdir 
-
/
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
1
2
cat 
/
data
/
svndata
/
conf
/
authz 
#权限管理,权限管理的统一思路是:创建多个组,将各个用户加入到各个组,控制各个组的权限。以后对权限管理就维持在组的维度,否则以人为粒度管理,会死人滴
1
2
3
4
5
6
7
8
9
10
[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各项目配置文件修改
每个项目默认使用的配置文件是该项目下的配置文件,所以必须修改掉,否则不受总控配置文件的管理的

每个项目目录结构如下:

1
2
3
4
5
6
# 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

【第三启动】

1
svnserve 
-
-
/
data
/
svndata
/

【第四数据初始化】
已有代码需要导入svn版本库如下

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

【第五备库搭建】

注:这里使用了svnsync定时同步数据,也可以做实时同步,请自己研究(大致提示为配置钩子post-commit来实现
5.1备库项目创建(和主库创建项目无异)以下操作在备库上操作

1
2
3
4
mkdir 
-
p  
/
data
/
svndata
/
svnadmin create 
/
data
/
svndata
/
ios
svnadmin create 
/
data
/
svndata
/
android
svnadmin create 
/
data
/
svndata
/
web

配置文件也和主库一样:包括总控的配置文件及各项目的配置文件,这里就不详细列了。
5.2准备备库的钩子(以android项目为例,其他项目一样)以下操作在备库上操作

1
2
3
4
5
6
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

1
2
3
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,请仔细检查主库备库配置文件,是否有错误和遗漏

1
2
3
4
5
6
7
8
9
10
11
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.

【第六定时更新脚本】
在备库上写定时同步的脚本,关键如下

1
2
3
4
5
6
7
8
#!/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

 

转载地址:http://mgdko.baihongyu.com/

你可能感兴趣的文章
codeblocks快捷键
查看>>
基于HTML5的WebGL设计汉诺塔3D游戏
查看>>
WPF资料链接
查看>>
过滤DataTable表中的重复数据
查看>>
再次更新
查看>>
mysql的数据类型int、bigint、smallint 和 tinyint取值范围
查看>>
移动铁通宽带上网设置教程
查看>>
Python算法(含源代码下载)
查看>>
利用Windows自带的Certutil查看文件MD5
查看>>
通过原生js添加div和css
查看>>
简单的导出表格和将表格下载到桌面上。
查看>>
查询指定名称的文件
查看>>
AJAX POST&跨域 解决方案 - CORS
查看>>
开篇,博客的申请理由
查看>>
Servlet 技术全总结 (已完成,不定期增加内容)
查看>>
[JSOI2008]星球大战starwar BZOJ1015
查看>>
centos 7 部署LDAP服务
查看>>
iOS项目分层
查看>>
IntelliJ IDEA 注册码
查看>>
String字符串的截取
查看>>