您的位置:首页 > 运维架构 > Linux

Centos7上搭建SVN服务器并实现自动同步至web目录

2017-08-04 15:30 465 查看

搭建svn环境并创建仓库

安装Subversion

yum install -y subversion


检测是否安装成功

svnserve --version


创建版本库

#先建目录
mkdir /var/svn
cd /var/svn
#创建版本库
svnadmin create /var/svn/project
#进入project目录会看到自动生成的版本库文件
cd project
conf  db  format  hooks  locks  README.txt


配置用户组及用户权限

进入版本库的conf目录,此目录有三个文件: svn服务综合配置文件(svnserve.conf)、 用户名口令文件(passwd)、权限配置文件(authz)。

cd /var/svn/project/conf


设置账号密码

vim passwd


#在passwd文件里面添加以下文件以设置账号密码
[users]
andrew=andrew
joe=joe
harry=harry


修改权限配置文件

vim authz


#在authz中添加以下内容
#创建一个组,用户是一定要在passwd中已配置的
[groups]
developer=andrew,joe
#安装组或者用户配置权限
[/]
@developer=rw
harry=rw


配置svnserve.conf,下面所有配置都需要顶格,前面不能留空格

#匿名用户访问权限:无
anon-access = none
#普通用户访问权限:读、写
auth-access = write
#设置密码文件,可用绝对路径或者相对路径
password-db = passwd
#设置权限配置文件,路径设置同上
authz-db = authz
#版本库所在位置
realm = /var/svn/project


启动svn服务器

启动svn服务

# -d 表示以守护进程的方式启动服务
# -r 设置版本库的主目录
svnserve -d -r /var/svn


-r 参数的设置非常重要,如果project工程的路径为/var/svn/project,那么-r 参数设置成 /var/svn/project而不是上面那样是其父目录的话,客户端通过svn://localhost/project是会提示版本库不存在的

在客户端checkout

svn checkout svn://svn服务器域名或IP/project
#然后根据提示输入svn账号密码即可


关闭svn服务器,删除版本库

直接通过kill命令进行关闭

#查看svn服务详情
ps aux | grep svn
kill -9  svn进程ID


如需删除版本库,直接删除其对应的文件夹即可

实现svn更新自动同步到web目录

在web目录(/data/src)中checkout版本库

cd /data/src
svn co svn://localhost/project
#按照提示输入svn账号密码,此时会在src目录下新增project的文件夹,但是这样在/data/src目录下执行svn update是不行的,要进入project目录,然后再执行svn update才能进行更新


进入版本库的hooks文件夹下,建立post-commit(==只能是这个名称==)文件

cd /var/svn/project/hooks
vim post-commit


#在该文件下添加以下代码
#!/bin/sh
export LANG=en_US.utf8
SVN_PATH=/usr/bin/svn
WEB_PATH=/data/src/project#记得带上project,因为在/data/src目录下执行svn update是不行的
$SVN_PATH update $WEB_PATH --username andrew --password andrew --no-auth-cache


修改post-commit用户为web目录用户

chown root:root post-commit


给post-commit用户赋执行权限

chmod 755 post-commit


设置完后直接执行脚本看是否没问题

./post-commit
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  svn