代码发布架构方案(SVN)

问题:

  • 安装优化软件环境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上面。

时间: 2025-01-31 03:52:10

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

SVN版本管理与代码上线架构方案

SVN是Subversion的简称,是一个开放源代码的版本控制系统,可以超越时间的管理文件和目录.文件保存在中央版本库,除了能记住文件和目录的每次修改以外,版本库非常像普通的文件服务器.你可以将文件恢复到过去的版本,并且可以通过检查历史知道数据做了哪些修改,谁做的修改.这就是为什么许多人将 Subversion 和版本控制系统看作一种"时间机器".说得简单一点SVN就是用于多个人共同开发同一个项目,共用资源的目的. svn与git的区别svn   svn版本控制系统是集中式的数据管理,

代码上线架构方案

小型企业上线架构方案 1.开发人员需在个人电脑搭建LAMP环境测试开发好的网站代码,并且在办公室或IDC机房的测试环境测试通过,最好有专职测试人员. 2.程序代码上线规定时间,由网站业务性质而定,原则就是影响用户体验最小. 3.代码上线之前需备份,网站程序出了问题方便回退,另外,从上线技巧上将,上传代码时尽可能先传到服务器网站临时目录,传完整后一步mv过去,或者通过ln做软连接. 线上更新代码的思路.如果严格更新,把应用服务器从集群节点平滑下线,然后更新. 4.尽量由运维人员管理上线,对于代码的

01.Svn版本管理与代码上线架构方案

空杯心态,从零开始. 应用运维->实操最重要. 每个业务至少有一种解决方案:每个方案至少会一个软件实现. 系统架构师实际是软件架构师. 系统运维架构师. 架构师主要是架构思想,不是某一个软件个体. 制造子弹->系统开发级别. 组装坦克飞机->凤毛麟角. Linux系统架构师->一期 软件架构师->二期 能力要求: 系统架构相关的知识和经验: 很强的自学能力.分析能力.解决问题的能力: 写作.沟通表达.培训: 原文地址:https://www.cnblogs.com/lzp12

Linux系统架构师之代码发布解决方案

我今年19了!人生有多少22K? 所有实验环境初始化: 创建本地光盘Yum源,安装tree lrzsz vim,关闭iptables和selinux. 定义别名cls='clear',ll='ls -Alh'. 代码发布解决方案: 1.安装优化软件环境 2.程序代码 3.配置变更 SVN是跨平台的开源版本控制系统.SVN会备份并记录文件每一次的修改更新的变动. SVN是通用的软件系统,常用来管理程序代码.常见的版本控制软件有:VSS.CVS.SVN.Git. Git与SVN的区别: SVN是一个

代码保存、配色、发布整体方案---一段代码的配色

一 着色 二 换一种着色方式 三 添加横栏 四 添加行线 五:添加竖栏 六:添加背景色 七:背景图 重点代码标注 八:更惬意的读 更舒心的写 更轻松的发布 九 代码发布 对于支持XMLRPC的网站 均可一键发布 方式一:以所见所得方式发布 函数名: abort 功 能: 异常终止一个进程 用 法: void abort(void); 程序例: #include <stdio.h> #include <stdlib.h> int main(void) { printf("C

大型系统的发布部署方案

动态应用,是相对于网站静态内容而言,是指以c/c++.php.Java.perl..net等服务器端语言开发的网络应用软件,比如论坛.网络相册.交友.BLOG等常见应用.动态应用系统通常与数据库系统.缓存系统.分布式存储系统等密不可分. 大型动态应用系统平台主要是针对于大流量.高并发网站建立的底层系统架构.大型网站的运行需要一个可靠.安全.可扩展.易维护的应用系统平台做为支撑,以保证网站应用的平稳运行. 大型动态应用系统又可分为几个子系统: 1)Web前端系统 2)负载均衡系统 3)数据库集群系

LAMP网站架构方案解剖

LAMP网站架构方案解剖 2011-03-18 10:46 月光 网络转载 字号:T | T 网站架构是比较考研技术的一件事,所以要对一种好用的工具,那么网站架构就会事半功倍,LAMP具有通用.跨平台.高性能.低价格的优势,因此LAMP无论是性能.质量还是价格都是企业搭建网站的首选平台. AD:2014WOT全球软件技术峰会北京站 课程视频发布 LAMP 用LAMP进行网站架构是非常容易的. 对于大流量.大并发量的网站系统架构来说,除了硬件上使用高性能的服务器.负载均衡.CDN等之外,在软件架构

【转】微信、陌陌 架构方案分析

来源:http://www.wubiao.info/401 作者:wubiao 微信.陌陌 架构方案分析 近两年.手机应用.莫过于微信.陌陌之类最受欢迎.但实现原理,分享文章甚少. 故,提出两种方案,供分享:不正确之处.敬请留言学习. 目标 解决大型应用(微信.陌陌级别)中.用户经纬度在不断更新.用户查找频繁的问题. (每分钟1000W级) ==============================================================================

自动化代码发布系统实现

日常运维问题 在我日常运维工作中,代码发布可能是最普遍的一项工作之一,尤其是网页代码的更新,碎片化发布需求非常频繁.在前期开发人员比较少时,还可以由自己来上服务器通过脚本来发布代码.但随着公司项目的增多,更多的开发人员加入到公司,发布代码需求开始增多,这就占用了我大部分时间,经常的被打断其它工作来发布代码,非常地不爽,然后开始想解决方法. 尝试解决问题 当然,发布代码肯定是运维的职责之一了,但频繁的发布导致运维大部分时间浪费在重复的操作上,非常的不值得.基于此,开始限制代码发布频率,要求把不是很