此处不讨论svn和git的优劣,目的只有一个,使用svn搭建开发、测试、生产环境, 使用svn进行代码的管理和发布,并探索基于svn的工作流。
文章将会介绍一下内容:
- 搭建开发、测试、生产环境
- 一个简单的开发、测试、线上部署例子
1、 搭建开发、测试、生产环境
1.1、安装svn服务器
sudo yum install subversion
从镜像下载安装svn服务器端
中间会提示是否ok,输入y,确认
安装成功提示:…..complete!
1.2、创建项目源码仓库
cd /usr/local/
sudo mkdir svnRepo #创建svn仓库目录
sudo chmod 777 -R svnRepo/ #修改仓库权限
svnadmin create /usr/local/svnRepo/first #创建项目仓库目录,名字随便取
1.2.1、修改配置文件
每个svn项目仓库都有三个配置文件:conf/authz、conf/passwd conf/svnserve.conf
cd svnRepo/first/conf/
(1) svnserve.conf //配置版本库信息和用户文件和用户密码文件的路径、版本库路径
anon-access = none #默认是只读read
auth-access = write #认证后有写入权限
password-db = passwd #帐号密码配置文件
authz-db = authz #权限配置文件
realm = first #生效范围 改成自己的项目版本库名
(2) passwd //创建或修改用户密码
[users]
aa= 123456 //用户名 = 密码
bb= 123456 //。。。
(3) authz //文件,创建svn组和组用户的权限
[group]
first = aa,bb //创建一个first的组,并制定两个用户aa和bb
[/] //制定根目录下的权限
@first = rw //first组用户权限为读写
# tom具有读写权限
#tom= rw
不要使用 *= r,不知为何,就是报错
1.3、启动项目版本库
项目的版本仓库准备好之后就可以启动了,这样svn客户端才可能连接仓库并进行相应的操作。
svn服务根目录
如下,当前svnRepo目录有两个svn项目仓库:
-bash-4.2$ pwd
/usr/local/svnRepo
-bash-4.2$ ll
total 8
drwxr-xr-x 6 hjs root 4096 Jul 2 12:46 first
drwxr-xr-x 6 hjs root 4096 Jul 2 14:27 second
以svnRepo作为服务根目录启动svn服务:
svnserve -d -r /usr/local/svnRepo/
svn客户端资源路径:
svn co svn://IP地址/first #checkout first仓库
svn co svn://IP地址/second #checkout second仓库
svn服务和http网页服务一样,因为上述svnserve -d -r /usr/local/svnRepo/
以svnRepo作为服务器根目录,因此客户端访问资源的时候就是从svnRepo开始,比如checkout first项目代码就是svn co svn://IP地址/first
经常听到有的博客说什么单版本库启动、多版本库启动的,还说-r是区别,那是错误的,-d是以后台进程运行,-r是指定svn服务器的根目录!具体可以执行
svnserve --help
1.3、编写post-comit脚本
#!/bin/sh
REPOS="$1" #项目仓库的绝对地址
REV="$2" #第n次提交中的n
export PATH="/usr/local/svn/bin:$PATH" #由于代码是apache的进程用户www运行,所以需要设置环境变量
export LANG=zh_CN.UTF-8
#测试脚本
#echo ${1}" " ${2} 'hello woeld \n' >> /home/aa/test/post-commit.log
#脚本开始
2、一个简单的开发、测试、线上部署例子
参考资料:
http://www.cnblogs.com/mitang/p/4309762.html
http://www.open-open.com/lib/view/open1376871583553.html