问题:

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

1、SVN介绍

1.1 什么是SVN(Subversion)?

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

        为什么会有SVN这样一个项目?

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

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

        SVN相关站点:

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

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版本系统逻辑学架构原理图

 

1.7 SVN版本管理工作流程

        集中式代码管理的核心是SVN服务器,开发者在开始新一天工作之前必须现在本地update一下代码,然后开发、解决冲突、合并。所有的版本信息都放在SVN上面。

代码发布架构方案(SVN)的更多相关文章

  1. 一键自动发布ipa(更新svn,拷贝资源,压缩资源,加密图片资源,加密数据文件,加密lua脚本,编译代码,ipa签名,上传ftp)

    一键自动发布ipa(更新svn,拷贝资源,压缩资源,加密图片资源,加密数据文件,加密lua脚本,编译代码,ipa签名,上传ftp) 程序员的生活要一切自动化,更要幸福^_^. 转载请注明出处http: ...

  2. jenkins配置记录(2)--代码发布流程

    在我们的日常运维工作中,使用jenkins来完成业务代码发版上线是至关重要的一环.前面已经提到在jenkins上添加用户权限的操作,今天重点说下如何在jenkins下构建项目工程进行代码发布? 在此简 ...

  3. LAMP网站架构方案解剖

    LAMP网站架构方案解剖 2011-03-18 10:46 月光 网络转载 字号:T | T 网站架构是比较考研技术的一件事,所以要对一种好用的工具,那么网站架构就会事半功倍,LAMP具有通用.跨平台 ...

  4. BAE3.0上的java+tomcat代码发布

    ---------------------------------2016/01/25更新-------------------------------------- 最近两天去百度开放云,发现它再也 ...

  5. Walle,一个开源的web代码发布管理系统

    前言 Walle 一个web部署系统工具,可能也是个持续发布工具,配置简单.功能完善.界面流畅.开箱即用!支持git.svn版本管理,支持各种web代码发布,静态的HTML,动态PHP,需要编译的JA ...

  6. 几种常见的微服务架构方案简述——ZeroC IceGrid、Spring Cloud、基于消息队列

    微服务架构是当前很热门的一个概念,它不是凭空产生的,是技术发展的必然结果.虽然微服务架构没有公认的技术标准和规范草案,但业界已经有一些很有影响力的开源微服务架构平台,架构师可以根据公司的技术实力并结合 ...

  7. redis集群主流架构方案分析

    Redis在互联网大数据平台有着广泛的应用,主要被用来缓存热点数据,避免海量请求压垮数据库,同时可以提升服务节点的响应速度和并发量.随着数据量的增多,由于redis是占用单台物理机或虚机的内存,内存资 ...

  8. Walle代码发布

    一.概述 Walle 一个web部署系统工具,配置简单.功能完善.界面流畅.开箱即用!支持git.svn版本管理,支持各种web代码发布,PHP,Python,JAVA等代码的发布.回滚,可以通过we ...

  9. 几种常见的微服务架构方案——ZeroC IceGrid、Spring Cloud、基于消息队列、Docker Swarm

    微服务架构是当前很热门的一个概念,它不是凭空产生的,是技术发展的必然结果.虽然微服务架构没有公认的技术标准和规范草案,但业界已经有一些很有影响力的开源微服务架构平台,架构师可以根据公司的技术实力并结合 ...

随机推荐

  1. Search in Rotated Sorted Array II——LeetCode

    Follow up for "Search in Rotated Sorted Array":What if duplicates are allowed? Would this ...

  2. 汉洛塔递归实现的思考(C语言)

    汉洛塔是古印度神话产生的智力玩具,他的玩法是,有三个柱子分别为A,B,C,A柱上面有n个盘子上面小下面大堆叠放在一起,现在要求激将A柱上的盘子全部移到C柱上面,并且一次只能移动一个盘子,必须是小盘在大 ...

  3. mac下的改装人生——把主硬盘换成ssd

    这两天搞得最多的事情就是我的这两块硬盘,基本上的时间都被他们占用去了,但是最后的结果也是让我很开心--开机瞬秒,程序瞬秒,生活质量瞬间高了很多哈. 关于ssd的各种事情,我的另外一篇博客有讲,算是比较 ...

  4. Jenkins 六: 构建中执行shell或者 windows的批处理程序

    Shell/ bat Jenkins 可以在构建中执行shell命令或者windows的batch 命令. 1. 选择一个项目,点击“配置”. 2. 找到“构建” –> “增加构建步骤”.选择 ...

  5. poj1017

    一个工厂制造的产品形状都是长方体,它们的高度都是h,长和宽都相等,一共有六个型号,他们的长宽分别为1*1, 2*2, 3*3, 4*4, 5*5, 6*6.这些产品通常使用一个 6*6*h 的长方体包 ...

  6. sql server常用查询

    最近在做一些练习,觉得数据的查询是一个很有意思的,在做的过程中一些好的查询方法也使自己感觉到数据库的强大,于是乎就会想到要把这些方法记下来,以后就懒得再去想了 1.查询是整百的倍数 SELECT 实缴 ...

  7. pythonQQ邮件

    http://www.cnblogs.com/lonelycatcher/archive/2012/02/09/2343463.html http://blog.csdn.net/imzoer/art ...

  8. Qt 学习之路 :进程间通信

    上一章我们了解了有关进程的基本知识.我们将进程理解为相互独立的正在运行的程序.由于二者是相互独立的,就存在交互的可能性,也就是我们所说的进程间通信(Inter-Process Communicatio ...

  9. Linux基础系列—Linux内核源码目录结构

    /** ****************************************************************************** * @author    暴走的小 ...

  10. POJ 1011 sticks 搜索

    Sticks Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 125918   Accepted: 29372 Descrip ...