安装SVN svr
apt-get update
apt-get install subversion
卸载SVN svr
apt-get remove --purge subversion
查看svn svr版本信息
svnserve --version
创建SVN版本库
sudo mkdir /home/svn
sudo mkdir /home/svn/repository
cd /home/svn/repository
mkdir repository
#mkdir -p /home/svn/repository
sudo chmod -R 777 /home/svn/repository
创建svn仓库
svnadmin create /home/svn/repository
sudo svnadmin create /home/svn/repository
执行命令后,会在repository下生成以下文件:
ls repository
对db进入权限设置
cd /home/svn/repository
sudo chmod -R 777 db
设置访问权限
修改配置文件svnserve.conf
cd /home/svn/repository
cd ./conf
vi svnserve.conf
说明:(去掉前面的#,并且顶格)
anon-access = none 匿名用户不可读
auth-access = write 权限用户可写
password-db = passwd 密码文件为passwd
authz-db = authz 权限文件为authz
添加访问用户
修改password文件,添加访问用户
cd /home/svn/repository
cd ./conf
vi passwd
新增用户格式:名字 = 密码
user = user1234567
给用户增加目录权限
sudo vi authz
对以上进行解释:
# 用户王属于admin权限组
admin = user
# admin权限组的权限是读和写
# @admin = rw
# 所有的组都具有读权限
# * = r
normal = user1
[/]
@admin = rw
@normal = rw
具体意义及说明已经在图中标注写明了,图中的授权方式为对用户组进行授权,这里再提下
[/]
@admin = rw
@normal = r
这个部分的说明,上面的 [/] 表示对根目录进行授权,即用户组成员对所有项目都具有权限共通性,我们如果要针对不同项目去设置不同权限,可以如下操作
[JAVA:/]
user = rw //表示用户 user 对项目 JAVA 的所有内容具有读写权限
Liu = r //表示用户 Liu 对项目 JAVA 的所有内容仅具有读权限
[Python:/]
Ming = rw //表示用户 Ming 对项目 Python 的所有内容具有读写权限
Tao = r //表示用户 Tao 对项目 Python 的所有内容仅具有读权限
上面这种做法可以保证Heath仅拥有JAVA项目的读写权限,没有Python项目的权限,保证项目组成员之间的信息安全和项目安全,也便于项目组成员之间的管理。
精确目录权限控制
[/]
A=rw
A拥有版本库根目录读写的权限
[/Android]
A=rw
B=r
A拥有Android目录读写的权限
B拥有Android目录读的权限,但没有写的权限
[/Android/Project1]
A=rw
*=r
A拥有/Android/Project1目录读写的权限
所有人都拥有/Android/Project1目录读的权限
svn srv启停
启动SVN服务器
svnserve -d -r /home/svn/repository
svnserve -d -r /home/svn/repository --listen-port 81
-d:表示在后台运行
-r:指定服务器的根目录
如果提示:权限不够。

切换到root权限
命令:sudo su
重试启动svn:svnserve -d -r /home/svn --listen-port 81
查看是否启动成功
ps aux | grep svnserve
netstat -alnt
停止服务器
killall svnserve
如下图 说明已经关闭了
ps aux | grep svnserve
远程访问
这样访问服务器时就可以直接用"svn://服务器ip/repository"来访问了。
svn://ip:port
svn://192.168.1.15:81