部署subversion,使用post-commit实现代码同步更新

目录

1.情况说明

2. 部署svn服务端

2.1更新svn下载源

2.2安装svn服务端

2.3创建项目代码仓库

2.4查看项目svn的URL

3.svn客户端

4.svn代码自动更新同步


1.情况说明

svn服务端:部署在Linux服务器上,svn版本: 1.14.2

svn客户端(windows):TortoiseSVN 1.14.5

例如:实现在windows端svn commit代码时,svn服务端的代码自动同步更新

2. 部署svn服务端

Linux系统默认的subveriosn的版本较低,需要更新subversion的yum源

[root@kmaster ~]# yum provides subversion
已加载插件:fastestmirror
Repodata is over 2 weeks old. Install yum-cron? Or run: yum makecache fast
Determining fastest mirrors
 * base: mirrors.aliyun.com
 * epel: mirror.dimensi.cloud
 * extras: mirrors.aliyun.com
 * updates: mirrors.aliyun.com
subversion-1.7.14-16.el7.i686 : A Modern Concurrent Version Control System
源    :base

subversion-1.7.14-16.el7.x86_64 : A Modern Concurrent Version Control System
源    :base

[root@kmaster ~]# 
 

2.1更新svn下载源

[root@kmaster ~]# vim /etc/yum.repos.d/wandisco-svn.repo 

[WandiscoSVN]
name=Wandisco SVN Repo
baseurl=http://opensource.wandisco.com/centos/7/svn-1.14/RPMS/$basearch/
enabled=1
gpgcheck=0

[root@kmaster ~]# yum clean all
[root@kmaster ~]# yum makecache fast

[root@kmaster ~]# yum provides subversion
已加载插件:fastestmirror
Determining fastest mirrors
 * base: mirrors.aliyun.com
 * epel: mirror.01link.hk
 * extras: mirrors.aliyun.com
 * updates: mirrors.aliyun.com
subversion-1.7.14-16.el7.i686 : A Modern Concurrent Version Control System
源    :base

subversion-1.7.14-16.el7.x86_64 : A Modern Concurrent Version Control System
源    :base

subversion-1.14.1-1.x86_64 : A Modern Concurrent Versioning system.
源    :WandiscoSVN

subversion-1.14.2-1.x86_64 : A Modern Concurrent Versioning system.
源    :WandiscoSVN

subversion-1.14.2-1.x86_64 : A Modern Concurrent Versioning system.
源    :@WandiscoSVN

2.2安装svn服务端

#直接安装最新版本,也可以安装指定的版本

[root@kmaster ~]# yum install -y subversion

[root@kmaster ~# svnserve --version
svnserve,版本 1.14.2 (r1899510)
   编译于 Oct 25 2022,10:40:16 在 x86_64-redhat-linux-gnu

Copyright (C) 2022 The Apache Software Foundation.
This software consists of contributions made by many people;
see the NOTICE file for more information.
Subversion is open source software, see http://subversion.apache.org/

下列版本库后端(FS) 模块可用: 

* fs_fs : 模块与文本文件(FSFS)版本库一起工作。
* fs_x : Module for working with an experimental (FSX) repository.
* fs_base : 模块只能操作BDB版本库。

Cyrus SASL 认证可用。

2.3创建项目代码仓库

cd /data/svn
svnadmin create /data/svn/test-code
##修改以下三个配置文件

cd /data/svn/test-code/conf

#配置用户的读写权限

vim  authz

[/]

test = rw

#配置用户的密码

vim passwd

test = test2023@!

#svnserve.conf配置文件

vim svnserve.conf

anon-access = none

auth-access = write

password-db = passwd

authz-db = authz

#开启svn服务
svnserve -d -r /data/svn

##checkout项目根目录,根据需要选择其中一个方式

#1.co 默认根目录
cd /data/svn/test-code
svn co svn://10.10.20.42/test-code

#2.改变co 的根目录
svn co svn://10.10.20.42/test-code /data/testcode

2.4查看项目svn的URL

svn info

3.svn客户端

TortoiseSVN download | SourceForge.net

直接访问该地址,下载即可,安装点解一下步。。。略

安装完成后,鼠标右键看都svn如下图

部署subversion,使用post-commit实现代码同步更新_第1张图片

点击 SVN检出 

部署subversion,使用post-commit实现代码同步更新_第2张图片

svn检出完成后,可在电脑本地对该项目进行操作

4.svn代码自动更新同步

一般来说,服务器端的SVN客户端自动更新都是通过post-commit这个钩子实现的,这个钩子存放在SVN服务器对应的版本库存储路径(不是指checkout出来的文件夹,指的是服务器端的存储文件夹)下的hooks文件夹内

post-commit这个钩子是当每次成功commit时,SVN服务器自动调用执行的,通过这个钩子就可以 实现svn客户端commit时实时更新服务器上的服务端。

[root@kmaster hooks]# pwd
/data/svn/test-code/hooks
[root@kmaster hooks]# ll -h
总用量 40K
-rwxr-xr-x 1 root root 2.6K 8月  29 11:52 post-commit.tmpl
-rwxr-xr-x 1 root root 2.7K 8月  29 11:52 post-lock.tmpl
-rwxr-xr-x 1 root root 2.9K 8月  29 11:52 post-revprop-change.tmpl
-rwxr-xr-x 1 root root 2.5K 8月  29 11:52 post-unlock.tmpl
-rwxr-xr-x 1 root root 3.9K 8月  29 11:52 pre-commit.tmpl
-rwxr-xr-x 1 root root 3.6K 8月  29 11:52 pre-lock.tmpl
-rwxr-xr-x 1 root root 3.4K 8月  29 11:52 pre-revprop-change.tmpl
-rwxr-xr-x 1 root root 3.3K 8月  29 11:52 pre-unlock.tmpl
-rwxr-xr-x 1 root root 3.6K 8月  29 11:52 start-commit.tmpl
[root@kmaster hooks]# vim post-commit
#!/bin/bash
S="$1"
REV="$2"

#避免无法识别中文
export LC_ALL="zh_CN.UTF-8"
export LANG="en_US.UTF-8"

SVN_PATH=/usr/bin
WEB_PATH=/data/svn/test-code
SVN_USER=test
SVN_PASS=test2023@!
LOG_PATH=/tmp/svn.log
echo "------------Start Commit -----------" >> $LOG_PATH
echo "Time:"`date '+%Y-%m-%d %T'`>>$LOG_PATH
$SVN_PATH/svn update $WEB_PATH --username $SVN_USER --password $SVN_PASS >>$LOG_PATH
[root@master hooks]#chmod +x post-commit

##实现svn客户端提交后,svn服务端自动更新###

验证:可在客户端commit一个文件,查看服务端是否同步

你可能感兴趣的:(Linux,svn)