一、svn有两种版本库授权方式:
1、创建多个版本库:一个版本库代表一个项目,只能单独访问。并且只能单独备份,每次登录只能查看单个项目
2、只创建一个版本库: 通过TortoiseSVN在版本库中创建子目录当作项目目录。只需要备份这一个版本库。每次登录可以浏览所有项目,然后对子目录单独授权。
二、svn的安装:
1、安装svn
# yum -y install subversion subversion-devel java
# svnserve --version|head -1
svnserve, version 1.6.11 (r934486
2、centos6启动svn
# mkdir /home/svndata #创建存放版本库的父目录(版本库存放位置)
# svnserve -d -r /home/svndata --config-file=/home/svndata/conf/svnserve.conf #启动时需要指定版本库父目录,这个目录用于存放所有svn版本库(此目录是访问者看不到的,只有通过命令:svnadmin create创建出来的目录才能被访问者看到)
# 写一个svn启动脚本(也可以不写,yum安装的会自动生成启动脚本/etc/init.d/svnserve)
[root@localhost shell]# cat svnrun11.sh
#!/bin/bash
svn_command=$1
case "$svn_command" in
start)
svnserve -d -r /home/svndata/ --config-file=/home/svndata/conf/svnserve.conf
echo "svn start ok."
;;
stop)
kill -9 `ps -ef |grep "svnserve -d -r" |grep -v "grep" |awk -F " " '{print $2}'`
echo "svn stopd."
;;
restart)
kill -9 `ps -ef |grep "svnserve -d -r" |grep -v "grep" |awk -F " " '{print $2}'`>/dev/null 2>&1
echo "svn stoping..."
sleep 1
svnserve -d -r /home/svndata/ --config-file=/home/svndata/conf/svnserve.conf
echo "svn restart ok."
;;
status)
ps -ef |grep "svnserve -d -r" |grep -v "grep"
[[ "$?" -ne 0 ]] && echo "svn not runing" # 如果上面的命令执行失败说明svn没有运行
;;
*)
echo "start|stop|restart|status"
;;
esac
2.1、centos7 配置systemctl 启动svn 006-自定义systemctl启动svn
3、创建svn版本库项目 (需要在版本库父目录下创建)
# svnadmin create /home/svndata/project1 #创建版本库根目录
# svnadmin create /home/svndata/project2 #创建版本库根目录
# tree /home/svndata/project1/ #版本库目录结构(每个版本库都会自动建立配置文件和认证文件)
/home/svndata/project1/
├── conf #主要用到的配置文件目录
│ ├── authz #svn用户权限文件
│ ├── passwd #svn用户密码文件
│ └── svnserve.conf #svn主配置文件
├── db
│ ├── current
│ ├── format
│ ├── fsfs.conf
│ ├── ........
│ ├.........
............
..........
10 directories, 28 files
4、单独创建配置文件来管理所有版本库,并启动svn
# mkdir /home/svndata/conf #在版本库父目录下创建svn配置文件存放目录
# cp /home/svndata/project1/conf/* /home/svndata/conf/ #拷贝一份配置文件
# vi /home/svndata/conf/svnserver.conf #编辑svn配置文件
[general]
anon-access = none #禁止匿名用户访问
auth-access = write #允许授权用户访问svn
password-db = /home/svndata/conf/passwd #指定用户密码文件存放路径
authz-db = /home/svndata/conf/authz #指定用户认证文件存放路径
realm = mysvn #svn认证域,随便写
# vi /home/svndata/conf/passwd #编辑用户名密码文件
[users]
wenqiang = 123456
alex = 123456
wusir = 123456
# vi /home/svndata/conf/authz #编辑用户认证文件
[groups]
yunwei = wenqiang,alex # 创建组
[/] # 允许yunwei组访问[/]根目录下的所有资源,访问时需要指定访问的具体名称比如,svn://ip/版本库1
@yunwei = rw
[project:/] # 允许wenqiang访问project项目目录,冒号表示这是一个项目目录
wenqiang = rw
[project2:/] # 允许alex访问project2项目目录,冒号表示这是一个项目目录
alex = r
[project:/dir1] # 允许alex访问project项目目录下的dir1文件夹,dir1是通过svn客户端创建的文件夹
alex = rw
[project:/dir2] # 允许wusir访问project项目目录下的dir2文件夹,dir2是通过svn客户端创建的文件夹
wusir = rw
5、启动svn并访问
# svnserve -d -r /home/svndata/ --config-file=/home/svndata/conf/svnserve.conf
--config-file 指定配置文件