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

来源:互联网 发布:淘宝会员卡封面设置 编辑:程序博客网 时间:2024/06/06 04:49

搭建svn环境并创建仓库

  • 安装Subversion
yum install -y subversion
  • 检测是否安装成功
svnserve --version
  • 创建版本库
#先建目录mkdir /var/svncd /var/svn#创建版本库svnadmin create /var/svn/project#进入project目录会看到自动生成的版本库文件cd projectconf  db  format  hooks  locks  README.txt

配置用户组及用户权限

  • 进入版本库的conf目录,此目录有三个文件: svn服务综合配置文件(svnserve.conf)、 用户名口令文件(passwd)、权限配置文件(authz)。
cd /var/svn/project/conf
  • 设置账号密码
vim passwd
#在passwd文件里面添加以下文件以设置账号密码[users]andrew=andrewjoe=joeharry=harry
  • 修改权限配置文件
vim authz
#在authz中添加以下内容#创建一个组,用户是一定要在passwd中已配置的[groups]developer=andrew,joe#安装组或者用户配置权限[/]@developer=rwharry=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 svnkill -9  svn进程ID
  • 如需删除版本库,直接删除其对应的文件夹即可

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

  • 在web目录(/data/src)中checkout版本库
cd /data/srcsvn co svn://localhost/project#按照提示输入svn账号密码,此时会在src目录下新增project的文件夹,但是这样在/data/src目录下执行svn update是不行的,要进入project目录,然后再执行svn update才能进行更新
  • 进入版本库的hooks文件夹下,建立post-commit(==只能是这个名称==)文件
cd /var/svn/project/hooksvim post-commit
#在该文件下添加以下代码#!/bin/shexport LANG=en_US.utf8SVN_PATH=/usr/bin/svnWEB_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
阅读全文
0 0
原创粉丝点击