是Subversion的简称,是一个开放源代码的版本控制系统
运行方式
独立服务器
借助apache运行
工作流程
集中式代码管理的核心是服务器,所有开发者在开始新一天的工作之前必须从服务器获取代码,然后开发,最后解决冲突,提交。所有的版本信息都放在服务器上。如果脱离了服务器,开发者基本上可以说是无法工作的。下面举例说明:
开始新一天的工作:
1、从服务器下载项目组最新代码。
2、进入自己的分支,进行工作,每隔一个小时向服务器自己的分支提交一次代码(很多人都有这个习惯。因为有时候自己对代码改来改去,最后又想还原到前一个小时的版本,或者看看前一个小时自己修改了哪些代码,就需要这样做了)。
3、下班时间快到了,把自己的分支合并到服务器主分支上,一天的工作完成,并反映给服务器。
这就是经典的svn工作流程,从流程上看,有不少缺点,但也有优点。
我们做运维只需要熟悉环境,简单更新发布提交就可以了。
SVN 环境搭建(介绍安装支持http访问方式的SVN)
效果图
yum install httpd
yum install subversion mod_dav_svn
1.创建仓库目录
mkdir -p /var/www/svn ###先创建目录
svnadmin create /var/www/svn/project ###制作成svn仓库,如果需要多个svn实例就再create一个工作目录。
2.配置改仓库的配置文件
vim /var/www/svn/project/conf/svnserve.conf
3.禁用匿名用户并开启验证用户权限。
anon-access = none
auth-access = write
4.编辑authz文件,设置guest组包含user用户。
[groups]
guest = user
#配置组权限,设置根目录下guest组为可读写,其他用户为可读。
[/]
guest = rw
* = r
5.导入svn项目
svn import /www/project -m “project” //192.168.0.162/project/
6.整合Apache
vi /etc/httpd/conf.d/subversion.conf 加入以下:
<Location /project> ###/project是svn项目
DAV svn
SVNPath /var/www/svn/project/ ###/project是svn项目的根目录即路径
AuthType Basic
AuthName "svn"
AuthUserFile /var/www/svn/project/conf/passwd ###/project是svn项目的认证密码文件
Require valid-user
</Location>
给svn目录权限。
chown apache.apache /var/www/svn -R
chmod 777 /var/www/svn -R
创建认证账号。
cd /var/www/svn/project/conf
htpasswd -c passwd user
输入密码
7.开启svn服务访问。
svnserve -d -r /var/www/svn/project
如果是多个实例:加--listen-port参数开启不同的监听端口号
svnserver -d --listen-port 3691 -r /var/www/svn/project
8.更新代码流程
(1)创建工作目录,从服务器上checkout代码
(2)更新服务器代码svn update
(3)开发人员修改代码,然后提交svn commit -m "project"
8.补充知识点
配置用户认证htpasswd -c passwd qinyj
导入项目: svn import /www/download/project -m "project" file:///var/www/svn/project/ --force-log
svn co //svn.qinyj.top/sh project #checkout代码。
svn up svn目录 --username aaa svn代码目录。 #更新代码库。会根据隐藏文件.svn 与服务器更新代码,如果本地工作目录没有会Add。
svn ci -m "备注信息" --username aaa svn代码目录。#提交到代码库。或者到svn目录里面svn ci -m "备注" --username aaa
写成shell脚本发布到svn服务器上: