一、搭建SVN服务器
1、安装SVN
yum -y install subversion
2、查看是否安装成功
svn --version
3、创建版本库目录
这个版本库是svn仓库的目录,不是项目文件的目录。 我一般选择放在系统根目录下的home文件夹下
[root@VM-0-2-centos ~]# cd /home
[root@VM-0-2-centos home]# mkdir svn
4、创建新仓库
svnadmin create /home/svn/xxx (xxx为版本库的名字,我一般以项目名称命名)
5、配置修改
下面以 wxGame 仓库名字做说明
[root@VM-0-2-centos ~]# cd /home/svn/wxGame
[root@VM-0-2-centos wxGame]# ls
conf db format hooks locks README.txt
5.1、进入conf目录
[root@VM-0-2-centos wxGame]# cd conf/
[root@VM-0-2-centos conf]# ls
authz passwd svnserve.conf
authz:负责账号权限的管理,控制账号是否读写权限
passwd:负责账号和密码的用户名单管理
svnserve.conf:svn服务器配置文件
5.2、修改authz文件,在文件末尾增加访问权限,增加如下图红框内的配置(记得前面一定要加[/])
- 账号1 = rw
- rw表示赋予此账号可读写的权限
5.3、修改passwd文件,添加账户和密码
- 账号1 = 密码1
5.4、修改svnserve.conf(重要)
原始文件内容,都被注释掉的,我们只需要去掉如下图红框内的注释即可(注意前面一点都不能留空格)
6、启动svn服务器
如果之前已经启动则需先关闭再启动
killall svnserve (杀掉所有svn服务的进程)
svnserve -d -r /home/svn (启动svn服务)
7、在本地检出
svn://xxx.xx.xxx.xx/wxGame (xxx.xx.xxx.xx为服务器的ip地址)
8、常见问题
8.1、有修改相关配置文件后,都需重启svn服务
8.2、把项目文件上传到SVN版本库后,上传的文件不再以文件原来的格式存储,而是被SVN以它自定义的格式压缩成版本库数据,存放在版本库中。
所以下面会说明,如何把svn版本库中的文件同步更新到自己的项目文件中呢? 可以通过svn的钩子来实现自动更新
二、SVN钩子配置
所谓钩子就是与一些版本库事件触发的程序,例如新修订版本的创建,或是未版本化属性的修改。每个钩子都会被告知足够多的信息,包括那是什么事件,所操作的对象,和触发事件的用户名。通过钩子的输出或返回状态,钩子程序能让工作继续、停止或是以某种方式挂起。
我们要在svn版本库中配置钩子来实现,就是创建一个post-commit的配置文件,对其进行简单的配置,简简单单的五步就可以实现Linux下SVN自动更新到web目录配置。
1、进入钩子目录(hooks), 钩子的子目录中包含各种版本库钩子模板
[root@VM-0-2-centos wxGame]# cd hooks/
[root@VM-0-2-centos hooks]# ls
post-commit.tmpl post-unlock.tmpl pre-revprop-change.tmpl
post-lock.tmpl pre-commit.tmpl pre-unlock.tmpl
post-revprop-change.tmpl pre-lock.tmpl start-commit.tmpl
2、新建一个post-commit文件
[root@VM-0-2-centos hooks]# mkdir post-commit
[root@VM-0-2-centos hooks]# ls
post-commit post-revprop-change.tmpl pre-lock.tmpl start-commit.tmpl
post-commit.tmpl post-unlock.tmpl pre-revprop-change.tmpl
post-lock.tmpl pre-commit.tmpl pre-unlock.tmpl
3、编辑该文件,增加以下内容(可以直接复制以下完整内容再修改)
- DeployPath:是你的项目路径
- SVNRepository:是svn版本库的路径
- User:访问svn版本库的用户账号(在5.3步骤中添加过的账户)
- Password:访问svn版本库的用户密码(在5.3步骤中添加过的密码)
- svn://127.0.0.1/wxGame:wxGame是svn版本库的仓库名字
#!/bin/bash
DeployPath='/www/wwwroot/xxx'
SVNRepository='/home/svn/wxGame'
User='xxx'
Password='xxx'
export LANG='zh_CN.UTF-8'
cd $DeployPath
svn cleanup
svn checkout svn://127.0.0.1/wxGame . --username $User --password $Password
svn revert --recursive .
svn update .
4、编辑完成后 保存退出,并设置该文件的权限,权限最少要 755
[root@VM-0-2-centos hooks]# ls
post-commit post-revprop-change.tmpl pre-lock.tmpl start-commit.tmpl
post-commit.tmpl post-unlock.tmpl pre-revprop-change.tmpl
post-lock.tmpl pre-commit.tmpl pre-unlock.tmpl
[root@VM-0-2-centos hooks]# chmod -R 755 post-commit
5、重启svn服务(参考步骤6)一般就可以了~