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用于创建独立的项目,创建好之后如下图:
至此,创建了三个不同的项目,那怎样统一管理呢?请继续向下看

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各项目配置文件修改
每个项目默认使用的配置文件是该项目下的配置文件,所以必须修改掉,否则不受总控配置文件的管理的

每个项目目录结构如下:

# 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

linux svn server搭建、多项目管理及主备方案

时间: 2024-10-10 03:02:52

linux svn server搭建、多项目管理及主备方案的相关文章

Linux系统下的SVN Server搭建过程

一.摘要 主要在Linux操作系统下使用SVN服务器 二.安装步骤 0.验证是否有svnserver (svnserve --version)1.安装svnserver (yum install -y subversion)2.验证是否安装成功 (svnserve --version)3.进入到svn的资源目录 (cd /home/svndir)4.创建svn资源库 (svnadmin create myProject)5.新增用户 6.配置用户权限 7.配置资源库权限 8.启动或者重启 9.测

linux svn服务器搭建、客户端操作、备份与恢复

Subversion(SVN)是一个开源的版本控制系統,管理着随时间改变的数据.这些数据放置在一个中央资料档案库中,这个档案库很像一个普通的文件服务器,它会记住每一次文件的变动,这样就可以把档案恢复到旧的版本,或是浏览文件的变动历史. 本文目录: linux svn服务器部署 linux svn客户端命令操作 linux svn备份与恢复 一.linux svn服务器部署 1.安装svn [[email protected]~]#yum install -y subversion [[email

搭建和测试 Redis 主备和集群

本文章只是自我学习用,不适宜转载. 1. Redis主备集群 1.1 搭建步骤 机器:海航云虚机(2核4GB内存),使用 Centos 7.2 64bit 操作系统,IP 分别是 192.168.100.5(主) 和 192.168.100.6(备). Redis 版本:3.2.3 1.1.1 在主备节点上,做如下安装 sudo yum update sudo yum install epel-release sudo yum update sudo yum install redis sudo

Linux: SVN服务器搭建(一)

摘自http://www.cnblogs.com/xiaobaihome/archive/2012/03/20/2407610.html Subversion是优秀的版本控制工具,其具体的的优点和详细介绍,这里就不再多说. 首先来下载和搭建SVN服务器. 现在Subversion已经迁移到apache网站上了,下载地址: http://subversion.apache.org/packages.html 这是二进制文件包的下载地址,你可在左侧的导航栏找到源代码,文档的下载地址. windows

linux SVN 服务搭建

SVN 客户端下载地址:http://tortoisesvn.net/downloads.html Tips: 如果使用的是CenteOS 或 RedHat 请使用yum命令,其它如Debian.Ubuntu 就请使用apt-get命令.这里使用yum. 使用RPM软件包管理,检查SVN是否已存在. Step1:检查 [[email protected]_sys:~]# rpm -qa subversion Tips: 如果没有列出相关信息,就说明系统并没有安装SVN,那接下来就进行安装. St

aliyun ECS SVN server搭建

在阿里云ECS上搭一个SVN服务器,方便文件版本控制     CentOS 7  64位   SVN 版本 1.7.14 (r1542130) 我们没有必要了解Subversion的所有特性的方方面面,我们的目的是使用它来对我们的project进行方便的简单的版本管理,因此,强烈推荐阅读Subversion Quick-Start Guid和Basic Usage. 首先通过软件包管理器添加 安装svn,也就是subversion. 用 rpm 或者 yum 都可以 yum -y install

Linux SVN服务器搭建

1. Ubuntu PC一台,最好是最新的Ubuntu稳定版本 2. 执行以下命令安装subversion: sudo apt-get update sudo apt-get install subversion 3. 假设代码svn仓库的根路径定为 /home/svnroot,执行以下命令新建目录: sudo mkdir /home/svnroot 4. 新建一个代码仓库,假设仓库名为:example cd /home/svnroot sudo svnadmin create example

Linux 搭建SVN server

一. SVN 简单介绍 Subversion(SVN) 是一个开源的版本号控制系統, 也就是说 Subversion 管理着随时间改变的数据. 这些数据放置在一个中央资料档案库 (repository) 中. 这个档案库非常像一个普通的文件server, 只是它会记住每一次文件的变动. 这样你就能够把档案恢复到旧的版本号, 或是浏览文件的变动历史. SVN中的一些概念 : (1). repository(源码库) 源码统一存放的地方 (2). Checkout (提取) 当你手上没有源码的时候,

zookeeper主备切换学习

今天了解了下Zookeeper的主备方案 大致就是两个应用运行后同时抢一个临时节点,zookeeper可以保证只会有一个注册成功这个节点,然后都对这个节点进行watch,监听事件NodeDeleted,如果NodeDeleted,然后另一台就可以直接注册临时节点成功. 这样可以保证主备自动切换.看起来还可以...没有在产线上用过...所以不知道具体效果是什么样的. 实现代码如下:非常easy.... //抄的, public class AbstractZooKeeper implements