乐趣区

linux 搭建svn服务器

一:安装 svn
yum install -y subversion

二:创建仓库 1:创建仓库目录
mkdir -p /var/project/test

2:创建仓库
svnadmin create /var/project/test

创建成功后,在 /var/project/test 目录下如下目录:
drwxr-xr-x. 2 root root 51 1 月 30 13:26 conf
drwxr-sr-x. 6 root root 4096 1 月 30 13:26 db
-r–r–r–. 1 root root 2 1 月 30 13:26 format
drwxr-xr-x. 2 root root 4096 1 月 30 13:26 hooks
drwxr-xr-x. 2 root root 39 1 月 30 13:26 locks
-rw-r–r–. 1 root root 229 1 月 30 13:26 README.txt

conf 目录下是 svn 的配置目录,其中包括:
-rw-r–r–. 1 root root 1080 1 月 30 13:26 authz #权限控制
-rw-r–r–. 1 root root 309 1 月 30 13:26 passwd #密码管理
-rw-r–r–. 1 root root 3090 1 月 30 13:26 svnserve.conf #SVN 服务进程配置

三:svn 配置 1:权限配置(/var/project/test/conf/authz)
#用户分组(admin-> 管理员,development -> 开发 other-> 其他)
[groups]
admin = test1 #管理员用户 test1
development = test2,test3 #开发用户 test2,test3
other = test4,test5,test6 #其他用户 test4,,test5,test6
#权限配置
[/]
@admin = rw #管理员读写权限
@development = rw #开发读写权限
@other = r #其他读权限
test7 = rw #test7 用户读写权限

2:密码配置(/var/project/test/conf/passwd)
#密码配置, 格式为用户名 = 密码,密码为明文
[users]
test1 = test1
test2 = test2
test3 = test3
test4 = test4
test5 = test5
test6 = test6
test7 = test7

3:SVN 服务进程配置(/var/project/test/conf/svnserve.conf)
[general]
anon-access = none #匿名用户无权访问
auth-access = write #认证用户可读写
password-db = passwd #指定用户认证密码文件
authz-db = authz #指定权限配置文件

四:启动 svn 服务(默认端口号 3690)
svnserve -d -r /var/project #-d 服务后台运行 -r 指定工作目录,/var/project 表示指定工作目录,注意不能指定仓库名地址(/var/project/test)

指定端口启动 svn
svnserve -d -r /var/project –listen-port 3691

五:关闭防火墙,或开启指定端口号 1:关闭防火墙
systemctl stop firewalld

2:开启指定防火墙
#开启 3690 端口
firewall-cmd –zone=public –add-port=3690/tcp –permanent
#刷新配置
firewall-cmd –reload
六:客户端连接并上传文件 windows 上连接 svn1:新建一个目录,右击选择 svn 检出
2:在版本库上填写 linux 的 svn 地址 svn://ip:3690/ 仓库名 (这里的仓库名不是 /var/project/test 而是 /test)
2: 填写用户名密码这时候我们可以看到此目录下生成了一个.svn 文件,说明我们已经连接上了 linux 上的 svn 服务器 3:上传文件现在我们新建一个 test.txt 文件,在里面随便填一些信息 (1) 右击选择 add 然后选择 test.txt 文件,点击确定,这时候我们会看到 test.txt 文件上会多了一个加号(2):上传右击选择提交填写备注选择要上传的文件后点击确定这时候我们可以看到 test.txt 文件上的加号会变成绿色的对号,表示上传成功但是这时候我们发现我们在 /var/project/test 目录下根本就没有找到我们上传的文件,这是为什么呢?难道我们没有上传成功,这是由于把文件上传到 SVN 版本库后, 上传的文件不再以文件原来的格式存储, 而是被 svn 以它自定义的格式压缩成版本库数据, 存放在版本库中,svn 服务器版本库有两种格式, 一种为 FSFS, 一种为 BDB 这时候我们就需要在 linux 中实现检出 4:检出
svn checkout svn://192.168.11.201/test /data/test #svn://192.168.11.201/test 表示需要检出的仓库地址 /data/test 表示需要检出到哪个目录下
这是我们可以在 /data/test 目录下看到我们之前在客户端上传的文件,但是现在问题又来了,我们在客户端上传文件之后,不可能每次都在服务器进行检出操作吧,那么如何进行自动检出呢?5:自动检出配置在 /var/project/test/hooks 目录下新建一个 post-commit 文件,post-commit 文件添加内容为:
#!/bin/sh
REPOS=”$1″ #仓库
REV=”$2″ #版本号
export.UTF-8 #编码
SVN=/usr/bin/svn #svn 地址
WEB=/data/test #要更新的项目目录
$SVN update $WEB –username test1 –password test1 #–username test1 表示设置用户名 –password test1 表示设置密码

将 post-commit 设置为可执行
chmod +x /var/project/test/hooks/post-commit

到此自动检出配置完成,不过注意,第一次的时候需要手动检出,之后就不需要了, 到此 linux 搭建 svn 服务器完成

退出移动版