代码发布架构方案(SVN)

问题:html

  • 安装优化软件环境nginx,lvs 
  • 程序代码(不断更新)
  • 配置更新(不断变动)

一、SVN介绍

1.1 什么是SVN(Subversion)?

        SVN(Subversion)是近年来崛起的很是优秀的版本管理工具,与CVS管理工具同样,SVN是一个跨平台开源的版本控制系统。SVN版本管理工具管理着随时间改变的各类数据。这些数据放置在一个中央资料档案库(repository)中,这个档案库很像一个普通的文件服务器或者FTP服务器。与其余服务器不一样的是,SVN会备份记录每一个文件每一次的修改变更。这样咱们就能够把任意一个时间点的档案回复到想要的某一个旧的版本,也能够直接浏览指定文件的更新历史记录。nginx

        为何会有SVN这样一个项目?git

官方解释:为了接管CVS的用户基础,确切的说,咱们写了一个新的版本控制系统,他和CVS很类似,可是它修正了CVS所没有解决的问题。详情见官网。web

        SVN是一个很是通用的软件管理系统,它常被用来管理程序源码,可是它也能够管理任何类型的文件,如文本、视频,图片等等。数据库

        SVN相关站点:apache

Subversion官网:https://subversion.apache.orgwindows

SVN客户端:http://tortoisesvn.sourceforge.net/后端

SVN中文网站:http://svndoc.iusesvn.com/安全

中文常见问题解答:https://subversion.apache.org/faq.zh.html服务器

官方手册:http://svnbook.red-bean.com/

截止当前常见的版本管理软件有:VSS、CVS、StarTeam、SVN、GIT。

1.2 SVN与GIT的区别

1.2.1 SVN是集中式版本控制系统

        SVN版本控制系统是集中式的数据管理,存在一个中央版本库,全部开发人员本地开发所使用的代码都是来自于这个版本库,提交代码也必须提交到这个中央版本库。

        SVN版本控制系统工做流程以下:

1.在中央版本库上建立或冲主干复制一个分支。

2.从中央版本库上check out 下这个分支的代码。

3.进入本身的分支,进行开发工做。每隔一段时间提交一次代码。

4.在快下班的时候commit代码,假设有人在刚刚的分支上面提交了代码,你就会被提示代码过时,你得先update你的本地代码而后在更新提交。update时若是出现冲突,须要解决好冲突后(代码合并)后在进行提交,把本身的分支代码提交到主干。

    优势:

1.对于某些项目的核心代码或者是一些重要的保密性要求较高的项目,svn比git更适合。

2.svn支持空目录

3.svn有更好的windows平台支持

4.svn能够check out/clone一个子树(sub-tree)

5.svn支持特权访问控制svn lock,在处理很难合并的文件时很是有用

6.svn支持二进制文件,更容易处理大文件(不须要把老版本拷来拷去)

7.学习简单、使用简单

 

    缺点:

1.无网的状况下:没法提交代码,没法查看代码的历史版本、没法同步代码

2.代码要按期作备份(全部的代码数据及版本变动记录)

3.分支切换缓慢

4.因为每次提交都会保留一个原始副本,所以SVN的数据库容量会暴增。尤为是在开发人员很是多的状况下。

1.2.2 GIT是分布式版本控制系统

        工做模式:

        git没有中央版本库,可是为了方便开发小组的成员们进行代码共享,咱们一般会搭建一个远程的git仓库。和svn不一样的是开发者本地也包含一个完成的git仓库,从某种程度上来讲本地的仓库和远程的仓库在身份上是等价的,没有主从。

        若是你的项目是一个闭源的项目,或者你习惯于以往的集中式管理,那么在git下你也能够向svn那样工做,还不过流程会增长一些步骤。

1.你在本地建立一个git仓库,并将其add到远程的git仓库中

2.你在本地增删改文件,而后commit,这里的commit是提交到本地的git仓库中了(其实就是提交到,本地的git目录下的object目录中)

3. 将本地的git仓库的分支push到远程git的仓库的分支,若是这个时候远程git仓库中已经有别人push过,那么远程的git仓库是不肯徐你push的,这个时候你要先pull,若是有冲突,处理好冲突,commit到本地git仓库后,在push到远程的git库。

    优势:

1.比svn方便和快捷的切换分支

2.书写的代码能够随时提交

3.丰富的命令行操做和组合

4.能够一人一个仓库,仓库能够有多个分支

    缺点:

1.没有一个较好的桌面集成工具

2.不支持二进制文件

3.学习成本高

1.3 运维人员对版本管理系统须要掌握的

  • 安装、部署、维护、排障
  • 简单使用,不少公司都是由开发来管理,包括创建仓库和添加删除帐号
  • 对于版本控制系统,运维人员要至关于开发商,开发人员是业主,运维搭建的系统为开发人员服务

1.4 SVN服务运行方式和访问方式

1.4.1 SVN服务端运行方式

1.独立服务器访问

    访问地址如:svn://svn.test.com/test

2.借助Apache等http服务

    访问地址如:http://svn.test.com/test 

        a.单独安装Apache+svn

         b.CSVN(Apache+SVN)是一个单独的整合的软件,带web界面管理的SVN软件

3.本地直接访问

    访问地址如:file:///application/svndata/test

1.4.2 SVN客户端访问方式

    svn客户端能够经过多种方式访问服务器端,例如:本地磁盘访问,或各类各样的网络协议访问,可是一个版本库地址永远都是只有一个URL,URL反映了访问方法

访问方式 说明
file:/// 直接经过本地磁盘或者网络磁盘访问版本库
http:// 经过WebDAV协议访问支持Subversion的Apache服务器
https:// 与http://类似,可是用SSL加密访问
svn:// 经过TCP/IP自定义协议访问是SVN服务器
svn+ssh:// 经过认证并加密的TCP/IP自定义协议访问svn服务器

1.5 SVN档案数据格式

    svn服务器存储的数据格式有2种方式:BDB(一种事物安全型表类型)和FSFS(一种不须要数据库的存储系统)。由于BDB方式在服务器中断时,有可能锁住数据,因此仍是FSFS更安全一点。

    BDB:

    伯克利DB(Berkeley DB),版本库可使用的一种通过充分测试的后台数据库实现,不能再经过网络共享的文件系统上使用,伯克利DB是Subversion1.2版本之前的缺省版本库格式

    FSFS:

    一个专用于Subversion版本库的文件系统后端,可使用网络文件系统(例如:NFS或SMBFS)。是1.2版本及之后的缺省版本库格式。

    CVS是个基于RCS文件的版本控制系统。每一个CVS文件都不过是普通的文件,加上一些额外的信息。这些文件会简单的重复本地文件的树结构。所以,没必要担忧有什么数据损失,若是必要的话能够手工修改RCS文件。

    svn是基于关系型数据库的BDB或一系列二进制文件的FSFS。这解决了许多问题(如:并行读写共享文件)以及添加了许多新功能(如:运行时的事物特性)。然而另外一方面,数据存储由此变得不透明,不能像ftp,samba,nfs等能看到实体的文件。

1.6 SVN版本系统逻辑学架构原理图

 SVN系统逻辑架构图

1.7 SVN版本管理工做流程

svn工做流程图

        集中式代码管理的核心是SVN服务器,开发者在开始新一天工做以前必须如今本地update一下代码,而后开发、解决冲突、合并。全部的版本信息都放在SVN上面。

相关文章
相关标签/搜索