安装svn
使用yum安装
yum install subversion -y
安装成功后查看版本库
svnserve --version
生成目录
cd /var
mkdir svn
cd svn
创建版本库
svnadmin create /var/svn/project
cd project
查看目录下的所有文件
ls -a
README.txt conf db format hooks locks
cd conf
进入版本配置目录conf,此目录下有authz passwd svnserve.conf三个文件
vi authz //添加用户组并使用户组具有读写权限
[groups]
# harry_and_sally = harry,sally
# harry_sally_and_joe = harry,sally,&joe
用户组名 = 用户名1,用户名2 //添加用户组,并设置用户组下的用户,用户名之间用 , 隔开
[project:/] // 版本库名:/
@用户组名 = rw //添加用户组读写权限
vi passwd //配置用户以及密码
[users]
# harry = harryssecret
# sally = sallyssecret
用户名1 = 用户名1的密码
用户名2 = 用户名2的密码
vi svnserve.conf //配置SVN服务综合配置文件svnserve.conf
//找到以下配置项,将前面的#号去掉,然后做相应的配置
anon-access = none//匿名用户访问权限:无
auth-access = write //普通用户访问权限:读、写
password-db = passwd //密码文件
authz-db = authz //权限配置文件
realm = /var/svn/project //版本库所在
启动svn
svnserve -d -r /var/svn
如果提示
svnserve: E000098: Can't bind server socket: Address already in use //此时svn已经启动
重启svn
//查看svn服务详情
ps aux | grep svn //将svn服务强制停止 其中790为svn服务的ID号,-9是kill的参数
kill -9 790
或者使用 ps -ef|grep svn //查看svn进程
kill 进程号
还有 killall svnserve //结束svn所有进程
测试svn服务
mkdir /home/www
cd /home/www
svn co svn://服务器ip地址/project /home/www //回车后,此时可能会提示密码验证,先填写服务器用户名和密码,后面是svn用户名和密码
如果现实Checked out revision 1.则表示成功
我们添加新文件来测试是否提交成功
cd /home/www
touch index.php
svn add index.php //成功的话会显示 A index.php
svn commit index.php -m "测试提交文件"
假如最后提示:
Adding index.php
Transmitting file data .
Committed revision 2.
则表示我们svn服务器搭建成功!文件已经能够推送了。
本地拉取服务器上的版本库(本地window)
右键检出
按照如图所示地址拉取,点击确定后再输入用户名和密码即可
最后,本地推送到svn并同步更新至web目录
cd /var/svn/project/hooks
vi post-commit
//在该文件里添加如下代码,保存
#!/bin/sh #设定环境变量,如果没有设定可能会出现update报错
#设定语言,根据系统语言设置,如果是GBK就设置为 LANG=zh_CN.GBK
export LANG=en_US.utf8
SVN_PATH=/usr/bin/svn //这里不用改
WEB_PATH=/home/www //web目录,如果你的不同,可以改
//这里的用户随便一个就好
$SVN_PATH update $WEB_PATH --username '用户名' --password '密码' --no-auth-cache
//修改post-commit权限
chmod 755 post-commit
在本地检出时,如果不能连接svn可能是3690端口未开放
firewall-cmd --zone=public --add-port=3690/tcp --permanent
systemctl restart firewalld //重启firewall防火墙