linux svn server搭建、多项目管理及主备方案 http://h2ofly.blog.51cto.com/6834926/1539141/ 没有实践备库搭建 【第一安装】 yum install subversion 【第二配置】 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用于创建独立的项目,创建好之后如下图: 2.3、统一管理配置(用于管理多个项目) 2.3.1、创建统一管理相关配置文件 mkdir -p /data/svndata/conf/ #该目录用于管理所有项目的帐号密码、权限控制等 cat /data/svndata/conf/svnserve.conf [general] anon-access = read auth-access = write password-db = passwd authz-db = authz realm = /data/svndata [sasl] # use-sasl = true # min-encryption = 0 # max-encryption = 256 cat /data/svndata/conf/passwd [users] xionglei = xionglei wendy = wendy anyin = anyin cat /data/svndata/conf/authz [aliases] [groups] [/] anyin=rw wendy=rw w=r 2.3.2各项目配置文件修改 每个项目默认使用的配置文件是该项目下的配置文件,所以必须修改掉,否则不受总控配置文件的管理的 # grep -v '#' /data/svndata/android/conf/svnserve.conf #其他项目类似,这里就不一一列举了[general] anon-access = none auth-access = write password-db = ../../conf/passwd #说明使用总控的密码文件 authz-db = ../../conf/authz #说明使用总控的权限文件 realm = /data/svndata/android 【第三启动】 svnserve -d -r /data/svndata/ ps -aux|grep svnserve kill -9 进程 【第四数据初始化】 已有代码需要导入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://139.196.237.225/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
linux svn server搭建、多项目管理及主备方案
最新推荐文章于 2023-04-20 14:36:00 发布