目录
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
源 :basesubversion-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
源 :basesubversion-1.7.14-16.el7.x86_64 : A Modern Concurrent Version Control System
源 :basesubversion-1.14.1-1.x86_64 : A Modern Concurrent Versioning system.
源 :WandiscoSVNsubversion-1.14.2-1.x86_64 : A Modern Concurrent Versioning system.
源 :WandiscoSVNsubversion-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-gnuCopyright (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如下图
点击 SVN检出
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一个文件,查看服务端是否同步