在实际项目应用中,主要存在三个问题:
1)协作开发(多人同时开发一个项目)
2)异地开发(开发者可能不在同一个地区)
3)版本回退(源代码返回到最初的某个状态)
解决方案:
scm(softwareconfiguration management):软件配置管理
软件配置管理:所谓的软件配置管理实际就是对软件源代码的管理。
基于scm出现了很多优秀的产品:
cvs版本控制软件:很古老的版本控制软件,也被称之为“开源奇葩产品”
vss版本控制软件:微软公司开发的基于Windows平台的版本控制软件,入门简单
clearcase版本控制软件:IBM公司的产品,功能非常强大,但是学习门槛高,而且是收费软件,但是其有良好的技术支持
svn版本控制软件:目前主流的版本控制软件
SVN属于C/S结构软件,分为两端:服务器端与客户端
1)配置SVN服务器,安装SVN服务器端软件
2)创建一个项目(在SVN中项目也称之为仓库),主要由SVN服务器完成
3)由项目经理开发项目的核心框架(如:Application.class.php)
4)在客户端计算机安装SVN客户端软件(TortoiseSVN)
5)与服务器端软件建立连接服务(第一次牵手),称之为Checkout(检出)
Checkout在应用中只在第一次链接时运行一次,主要执行两个工作
①连接SVN服务器②把服务器端的代码更新到本地
6)把本地的源代码上传到服务器端(Commit提交指令)
7)告之SVN服务器地址给其他程序猿
8)安装客户端软件,安装完成后,通过Checkout指令连接并下载服务器端的源代码到本地
9)程序猿编写项目模块
10)然后使用客户端软件Commit提交本地代码到服务器端
11)项目经理可以通过Update指令下载服务器端的最新文件到本地(查看项目进度)
通过以上流程可知:SVN常用的指令只有三个:
Checkout(检出指令),只在第一次链接时使用,以后都不会使用
程序猿每天需要执行的两个指令就是Commit与Update,一般是上班Update,下班Commit
Commit(提交指令)
Update(下载指令)
SVN服务器端软件的安装与配置
首先rpm-qa|grepsubverson一下看看有没有装过,装了的删掉就好
centos可以使用yum源安装,redhat系列则需要使用RPM安装
这里我们使用yum安装
yum install subversion
创建仓库目录
使用mkdir命令进行文件夹创建
mkdir /usr/share/nginx/svn
然后创建项目
svnadmin create /usr/share/nginx/svn
检查是否创建成功
conf目录可以看到配置文件,有英文注释,可以读一下
打开svnserve.conf关闭匿名用户的访问权限
开启认证文件
开启授权文件
这里需要注意,删除注释符之后要把代码回删,使其顶格,否则会报语法错误。
打开passwd来设置密码
然后进行用户设置,配置用户组
任何一个用户都需要配属分组,每个分组可以设置不同权限
这里给了三个用户组,分别是manager、server、client
每个组只给了一个用户,如果有多个用户使用逗号隔开
这里 r代表可读 w代表可写,rw即可读写
下来就是配置svn的自动启动并查看是否启动成功
-d表示以daemon方式(后台运行)运行
-r /usr/share/nginx/svn指定根目录是/usr/share/nginx/svn
关闭进程使用kill-all命令
关于SVN钩子
由于svn并不能直接将提交的代码放到项目中,这里我们可以使用svn钩子程序