Linux环境下搭建SVN实现版本控制+Hook钩子

一、简介

本文以Centos8为例,介绍如何在Linux服务器上搭建SVN服务,本地window使用SVN+TortoiseSVN进而实现对代码/项目的版本控制,附配置Hook钩子实现服务器自动拉取代码同步更新到服务器端。

二、准备工作

2.1服务器安装SVN

yum install -y subversion

2.2本地安装SVN+TortoiseSVN

自行百度下载SVN及TortoiseSVN客户端安装到window即可。

三、创建SVN版本库

Centos服务器下创建SVN版本库。

假设我们本次项目名称为Demo,如下,在服务器/根目录下的svnRepositories文件夹下创建我们的Demo项目SVN版本库:

# 根目录的svnRepositories下创建项目SVN版本库文件夹,demo为你的项目名称。
mkdir -p /svnRepositories/demo
# 创建项目SVN版本库
svnadmin create /svnRepositories/demo

四、配置服务器SVN版本库

创建了我们的SVN版本库后,SVN会在/svnRepositories/demo目录下创建以下几个文件夹:conf、db、hooks、locks,我们主要配置conf目录下配置文件。

配置目录 conf 主要有三个文件:

  • authz:仓库访问权限文件
  • passwd:仓库用户名和密码文件
  • svnserve.conf:综合服务配置文件

4.1配置用户名密码文件 passwd

全选删除,配置如下信息。

[users]
zhangsan = 123456

其中,zhangsan为本版本库下的用户的用户名,123456为该用户的密码,同一版本库下可配置多个可使用用户。

4.2配置权限配置文件 authz

全选删除,配置如下信息。

[groups]
[/]
zhangsan=rw

即用户zhangsan用户该版本库的rw读写权限,按需配置即可。

4.3配置综合配置文件 svnserve.conf

保留如下配置信息即可。

[general]
# 匿名访问的权限,可以是read、write,none,默认为read
anon-access = read
# 使授权用户有写权限
auth-access = write
# 密码数据库的路径
password-db = passwd
# 访问控制文件
authz-db = authz
[sasl]

五、启动SVN服务

# 启动svn服务,若服务器重启,需要重新开启。
svnserve -d -r /svnRepositories/demo 

若启动失败,优先检查路径及3690端口,或关闭防火墙后尝试。

六、服务器Checkout项目

在服务器实际项目的路径下checkout到我们刚创建的版本库。

# 假设项目在www/wwwroot/demo下:
svn checkout svn://xxx.xx.xxx.xx/demo ./ --username zhangsan

其中xxx.xx.xxx.xx为服务器的ip地址,demo为我们刚创建的版本库名称,zhangsan为用户名。

七、服务器提交项目代码到版本库

# 项目路径下,如www/wwwroot/demo,把项目加入到SVN版本库
svn add *

上述命令会将目录下所有文件添加到SVN版本库中,也可以选中部分添加,如下。

# 添加app目录下所有
svn add app/
# 添加某个文件
svn add index.php
# 遍历当前目录下的所有未添加的文件,添加到版本库
svn add . --no-ignore --force

添加到版本库后,还需要进行提交。

# 还是在项目路径下,""内是我们的提交附加信息
svn commit -m "提交"

八、window本地Checkout项目

指定文件夹下右键选择checkout(没有此指令请检查前期准备)

 填写所需信息,其中xxx.xx.xxx.xx还是我们服务器IP地址,demo为版本库名称,并非项目目录名称。

点击ok 等待checkout完毕后,在目录下update版本库代码。

 等待update完成后,即可看见本地已经将刚刚在服务提交的项目代码完整拉取下来了。 

九、配置Hook钩子

回到我们的服务器demo版本库,还记得版本库下那几个文件夹吗,我们一开始只修改了conf文件夹,现在我们打开hooks文件夹,里面有好几个文件,我们只取其中的一个即可:post-commit.tmpl。

1.复制post-commit.tmpl并改名为post-commit(即去掉后缀),或者直接修改为post-commit。

2.全选删除,配置内容如下:

export LC_CTYPE="zh_CN.UTF-8"
SVN=/usr/bin/svn                      #svn的安装路径
WEB_PATH=/www/wwwroot/demo            #要执行hook更新的目录
SVN_USER=zhangsan                     #svn账户
SVN_PASS=123456                       #svn密码
$SVN update $WEB_PATH --username $SVN_USER --password $SVN_PASS            #执行更新

修改完毕后,本地修改项目代码或文件,commit提交到服务器后,SVN会自动拉取修改内容并同步更新到我们的项目中去,从而减少我们二次手动在服务器端update的工作,很赞!

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值