进入公司,发现公司开发员工每个人用svn客户端工具链接svn,都具有管理权限,所有目录都可以看见,这样很容易造成误操作。
后来跟开发人员商量了一下,重新部署svn服务器
yum源的svn包版本1.6,官方最新源码版本1.9.2
1.源码安装 svn(subversion)
下面是个人写了个脚本
#!/bin/bash
DIR=/usr/local/src
yum -y install gcc gcc-c++ make openssl libtool
cd $DIR
subversion-1.9.2.tar.gz
apr-1.5.2.tar.gz
svn/apr-util-1.5.4.tar.gz
sqlite-amalgamation-3090200.zip
zlib-1.2.8.tar.gz
tar -zxvf apr-1.5.2.tar.gz
tar -zxvf apr-util-1.5.4.tar.gz
unzip sqlite-amalgamation-3090200.zip
tar -zxvf subversion-1.9.2.tar.gz
tar -zxvf zlib-1.2.8.tar.gz
cd $DIR/apr-1.5.2
./configure --prefix=/usr/local/apr
make && make install
cd $DIR/cd apr-util-1.5.4
./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr
make && make install
cd $DIR/cd zlib-1.2.8
./configure
make && make install
cd $DIR
mv sqlite-amalgamation-3090200 subversion-1.9.2/sqlite-amalgamation
cd $DIR/subversion-1.9.2
./configure --prefix=/data/svn --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util
make && make install
已经安装好
2.创建svn版本库
svnadmin create /home/svn_data/部门名称(好分辨) 这里可以创建多个(我分别创建了android,ios,chanpin)
cp /home/svn_data/android/conf/authz passwd /home/svn_data
从其中一个版本库中将authz passwd拷贝到根目录下/home/svn_data 方便管理多个版本库,
3.编辑每个版本库的配置文件
vim /home/svn_data/android/conf/svnserver.conf
[general]
anon-access = none 匿名用户权限
auth-access = write 认证用户权限
password-db = /home/svn_data/passwd 指定用根目录下的用户配置文件
authz-db = /home/svn_data/authz 指定用根目录下的版本库权限分配文件
realm = Android 登陆的提示信息
[sasl]
保存退出
4.配置用户账户密码和版本库权限分配
vim /home/svn_data/passwd
用户名 = 密码
test1 = 123
test2 = 123
test3 = 123
vim /home/svn_data/authz
admin = test1,test2 组分配,test1 test2属于admin用户组
admin1 = test3
[android:/] 版本库名称根目录
@admin = rw admin组用户可读写
可以写多个,根据自己公司的需求,
5.开启svn服务
svnserver -d -r /home/svn_data 指定目录为svn根目录,
可以通过svn客户端测试使用
6.在cent os 服务器上做checkout 来同步上传的代码
svn co svn://localhost/android /home/svn_checkout 可做定时任务,现在/home/svn_checkout目录下面就会出现开发人员上传的代码(不在本地做checkout,是看不见代码的)
7.扩展,对版本库下级目录做权限分配
通过客户端,在android下面创建个android1的目录,只想test1用户访问,其他人不允许访问
编辑authz配置文件
vim /home/svn_data/authz
[android:/android1]
@admin1 = rw 这样就可以了, 访问的路径就是svn co svn://localhost/android/android1
以此类推, 可以创建很多目录,并对每个目录做权限分配。
遇到登陆问题,如何换登陆用户,(清空全部认证数据,在登陆就会提示输入用户密码,供测试使用)
下面提供下,svn备份和迁移
svnadmin hotcopy 版本路径 备份路径
例如——
svnadmin hotcopy /data/svn_data/ios /data/back/ios
迁移——
将备份的目录,进行压缩,同步到需要迁移的机器,解压即可,使用svnserver -d -r 目录 启动