一,svn
1,通过yum 安装subversion
yum install subversion
查看安装路径
which svnserve
#/usr/bin/svnserve
查看是否安装成功
svnserve --version
#svnserve, version 1.7.14 (r1542130)
# compiled Apr 11 2018, 02:40:28
#Copyright (C) 2013 The Apache Software Foundation.
...
2,建立版本库目录
a,如果创建的版本库目录不是/var/svn/则需修改OPTIONS参数的值为创建的版本库目录路径
因subversion 默认以/var/svn作为数据根目录,可以通过/etc/sysconfig/svnserve修改这个默认位置
vim /etc/sysconfig/svnserve
# OPTIONS is used to pass command-line arguments to svnserve.
#
# Specify the repository location in -r parameter:
OPTIONS="-r /var/svn"
b,建立版本库目录
mkdir -p /var/svn/
c,创建版本库项目
svnadmin create /var/svn/svnrepos
3,配置 创建用户组或用户
cd /var/svn/svnrepos/conf
a,添加用户和密码 admin admin
vim passwd
添加admin = admin
b,编辑用户admin的权限
vim authz
#添加如下两行
[/]
admin = rw
c,修改该版本库的配置文件-打开注释,修改realm的版本库目录
注意:每一行顶格写,没有空格
vim svnserve.conf
[general]
anon-access = none #控制非鉴权用户访问版本库的权限
auth-access = write #控制鉴权用户访问版本库的权限
password-db = passwd #指定用户名口令文件名
authz-db = authz #指定权限配置文件名
realm = /var/svn/svnrepos #指定版本库的认证域,即在登录时提示的认证域名称
4,开启svn服务
systemctl start svnserve.service
检查svn服务是否启动成功。
ps aux | grep svn
通过netstat可以看到SVN打开了3690端口。
netstat -tnlp
设置成开机启动
systemctl enable svnserve.service
5,win 测试连接
如果显示
用systemctl检查服务器的防火墙配置:
firewall-cmd --list-all
如果没有telnet服务和3690端口。增加telnet服务器和3690端口:
firewall-cmd --permanent --add-service=telnet
firewall-cmd --permanent --add-port=3690/tcp
firewall-cmd --reload
客户端再用telnet,就可以了
二,svn更新自动同步到web目录
1、在项目目录(/home/wenroot/demo)中checkout版本库
svn co svn://localhost/project /home/webroot/demo --username lsgoweb1 --password lsgoweb1
#进入/var/svn/project/hooks下,建立post-commit文件:
cd /var/svn/project/hooks
cp post-commit.tmpl post-commit #复制tmpl文件为钩子文件
vim post-commit
#在该文件里添加如下代码并保存
#!/bin/sh
#设定环境变量,如果没有设定可能会出现update报错
#设定语言,根据系统语言设置,如果是GBK就设置为 LANG=zh_CN.GBK
export LANG=en_US.utf8
SVN_PATH=/usr/bin/svn
WEB_PATH=/home/webroot/demo
$SVN_PATH update $WEB_PATH --username 'lsgoweb1' --password 'lsgoweb1' --no-auth-cache
#添加后wq保存退出
####post-commit添加的代码解释####
#!/bin/sh #设定环境变量,如果没有设定可能会出现update报错
export LANG=en_US.utf8 #设定语言,根据系统语言设置,如果是GBK就设置为 LANG=zh_CN.GBK
SVN_PATH=/usr/bin/svn #这里不用改
WEB_PATH=/home/webroot/demo #web目录(项目目录),如果你的不同,可以改
$SVN_PATH update $WEB_PATH --username 'lsgoweb1' --password 'lsgoweb1' --no-auth-cache #填写自动更新使用的用户账号密码,这里的用户随便选一个就好
2.修改post-commit文件的属主属组与你的项目目录属主属组相同(一般不用改 都是root)
chown root:root post-commit
3.给post-commit 执行权限:
chmod 755 post-commit
4.Checkout一份代码到web服务器上
cd /home/repos
/var/svn/svnrepos checkout svn://127.0.0.1/svnrepos