一.简单介绍

1、什么是软件配置管理

软件配置管理是指通过运行版本号控制、变更控制的规程。以及使用合适的配置管理软件。来保证全部配置项的完整性和可跟踪性。

配置管理是对工作成果的一种有效保护。

2、为什么须要配置管理

假设没有软件配置管理,最大的麻烦是工作成果无法回溯。随着工作的进展新的程序覆盖了老的程序,当突然发现新程序有问题而老程序正确时怎么办?那仅仅能重写老的程序来覆盖新的程序。过一段时间又发现原来的老程序有问题,而解决方法在原来的新程序中……您是不是快要发疯了。

为了避免成果被覆盖。包含我自己在内的非常多人早期採用手工管理版本号的方式。比如当一个新版本号产生时用当时的日期来命名目录大发生然后再复制一下以后的改动在复制的目录内进行。这样上一个版本号就被保存下来了,周而复始不同的版本号不会被覆盖。

尽管这样的方式能够从某种程度上解决版本号的回溯问题,但他存在的缺点是显而易见的:第一点假设保留结果过于频繁,将会导致产生大量的有着反复内容的目录。庞大的物理空间,管理起来非常麻烦;假设保留旧版本号的时间间隔太长,可能产生某些实用的老程序无法回溯。拿我近期开发的一个程序来说程序仅仅有几十兆,经过一年的开发各版本号累计到1G。第二easy产生版本号的混乱,假设是团队开发软件,这样的简单的方法更难解决这个问题的本质了。

3、人的问题

配置管理的方法是成熟的,并且对应的软件工具也是成熟的,基本上不存在看不懂、不会用的问题。

配置管理的运行效果怎样。全然是事在人为。

妨碍配置管理的主要问题是人们嫌麻烦和侥幸心理作怪。

在没出乱子的情况下,运行版本号控制看起来有些麻烦。每次改动工作的时候总是要GetLatest Version。接着Check Out。改动完后又要Check In,多做了三步。

事实上这三步加起来也就十几秒钟。并且不费脑子,根本没有加入多少麻烦。不过个人感觉不爽而以。

然而不运行版本号控制的话。万一发生工作成果被覆盖或丢失等问题,麻烦就大了。

4、软件配置管理规范

软件研发和管理过程中会产生许很多多的工作成果,比如文档、程序和数据等,他们都应当妥善地保管起来。以便查阅和改动。

假设把全部文件一股脑的塞进计算机里,那么使用起来非常麻烦。

凡是纳入配置管理范畴的工作成果统称为配置项配置项主要有两大类:一类是属于产品的组成部分,比如需求文档、设计文档、源码、測试用例等等;还有一类是在管理过程中产生的文档。比如各种计划、报告等。每一个配置项的主要属性有名称、标识符、文件状态、版本号、作者、日期等。配置项及历史纪录反映了软件的演化过程。

版本号控制的目的是依照一定的规则保存配置项的全部版本号,避免发生版本号丢失或混乱等现象。配置项的状态有三种:“草稿”、“正式公布”和“正在改动”

配置项的版本与配置项的状态紧密相关:

(1)处于“草稿”状态的配置项的版本格式为:0.YZ

(2)处于“正式公布”状态的配置项的版本格式为:X.Y。

一般仅仅是Y值递增,当Y值到达一定的范围时X值才发生变化。

(3) 处于“正在改动”状态的配置项的版本格式为:X.YZ。 一般仅仅增大Z值,当配置项改动完成。状态又一次变成“正式公布”时,将Z值变为0,添加X.Y值。

二.初识SVN

1.在进行TortoiseSvn(管理员client)+ AnkhSvn(VS2008插件) +VisualSvn Server(版本号控制server)进行源码版本号控制前,有必要先了解下Subversion(Svn)。

Svn(Subversion)是近年来崛起的版本号管理工具,是CVS的接班人。

眼下。绝大多数开源软件都使用Svn作为代码版本号管理软件。

Svnclient

Subversion的client有两类,一类是webSvn等基于web的,一种是以TortoiseSvn为代表的client软件。前者须要webserver的支持,后者须要用户在本地安装client。

Svnserver

Subversion支持linux和windows,很多其它是安装在linux下。

Svnserver有2种执行方式:独立server和借助apache。

2种方式各有利弊。

Svn存储版本号数据也有2种方式:BDB和FSFS。由于BDB方式在server中断时。有可能锁住数据,所以还是FSFS方式更安全一点。

VisualSvn 、VisualSvn Server

VisualSvn是Svn的client,和VisualStudio集成在一起。可是是商业软件,收费;VisualSvn Server是基于Windows平台上的Subversionserver。它是免费的。他详细包含了Subversion、Apache和一个对应的管理界面。所以推荐使用免费的TortoiseSvnclient以及VS插件AnkhSvn 。

为什么要用Svn,而不用Vss?

同样点:都能集成在VS2008下进行源码管理,都能全然内网开发。

不同点:Vss是基于“锁定--编辑—解锁”模式的,这个模式有一个弊端。就是当其它人在编辑相关单元文件的时候,此单元文件处于锁定状态,其它人假设想编辑这个单元文件的话。仅仅能处于等待状态。

后来在持续集成中我使用的Subversion替代Vss,Subversion是基于“改动—冲突—合并”的一个模式,也就是说多个人能够同一时候签出一个单元文件,编辑然后提交,假设多个人都改动了同一文件的某一行的话。就会发生冲突。手工解决冲突。

Internet开发,和离线开发,VisualSvn会比Vss更胜一筹。

为什么要用VisualSvn Server,而不直接用Subversion?

由于假设直接使用Subversion,那么在Windows 系统上,要想让它随系统启动,就要封装Svn Server为windws service,还要通过改动配置文件来控制用户权限,另外假设要想以Web方式【http协议】訪问,一般还要安装配置Apache。假设是新手,岂不是非常头痛?而VisualSvn Serve集成了Subversion和Apache,省去了以上全部的麻烦。安装的时候Svn Server已经封装为windws service,Apacheserver的配置也仅仅是在图像界面上,指定认证方式、訪问port等简单操作;另外,用户权限的管理也是通过图像界面来配置。

VisualSvnServer是全然开源和免费的,当然它的官方client(VisualSvn)并不免费,只是没关系, VisualSvn Serveclient有太多的免费版本号供我们选择,TortoiseSvn就是一个不错的选择。

2.TortoiseSvn 是 Subversion 版本号控制系统的一个免费开源client。能够超越时间的管理文件和文件夹。文件保存在中央版本号库,除了能记住文件和文件夹的每次改动以外,版本号库很像普通的文件server。

你能够将文件恢复到过去的版本号,而且能够通过检查历史知道数据做了哪些改动。谁做的改动。

这就是为什么很多人将 Subversion 和版本号控制系统看作一种“时间机器”。

3.AnkhSVN是一款在VS中管理Subversion的插件,您能够在VS中轻松的提交、更新、加入文件,而不用在命令行或资源管理器中提交。并且该插件属于开源项目。

三.学习小结

经过对于软件管理的学习。从总体上认识了软件管理的必要性和重要性,非常大程度上攻克了设计过程中的版本号回溯问题,非常是为设计人员考虑。这也是大家学习的必要性。

有好的管理方法,使得我们的项目设计过程更为灵活和多元化。

而相对于SVN的学习就比較的抽象了,仅仅是装上了软件和看看了教学的视频,还未进行使用,接下来的时间里,从实践中去认识SVN吧!

软件配置管理中的SVN的更多相关文章

  1. SLS编写规范

    SLS编写规范 规范要点说明 首先,状态的执行不可回滚,执行完了就是执行完了,并不会中断回滚,其次,状态的执行,可以反复执行,也就是说一个状态文件,可以多次来进行调用. 在编写状态文件过程中,有以下几 ...

  2. 使用Maven+Nexus+Jenkins+Svn+Tomcat+Sonar搭建持续集成环境(二)

    前言     上一篇随笔Maven+Nexus+Jenkins+Svn+Tomcat+Sonar搭建持续集成环境(一)介绍maven和nexus的环境搭建,以及如何使用maven和nexus统一管理库 ...

  3. svn比对

    svn版本管理, 先要把你项目添加到svn版本管理中,添加完之后,文件夹就有一个绿色的勾,已经被svn进程管理了. 文件夹里面,每一层级,都有一个.svn文件夹,这个很重要,就是靠这个存放原有的文件, ...

  4. [.net 面向对象程序设计进阶] (24) 团队开发利器(三)使用SVN多分支并行开发(下)

    [.net 面向对象程序设计进阶] (24) 团队开发利器(三)使用SVN多分支并行开发(下) 本篇导读: 接上篇继续介绍SVN的高级功能,即使用分支并行开发.随着需求的不断变更,新功能的增加.特别是 ...

  5. Jenkins+svn+maven

    首先我们在我们的服务器上安装好svn和maven 这里在前两步骤基本上没有啥问题,主要就是在Jenkins的步骤我弄了好长时间,这里记录一下 Jenkins的问题我是在这个网址解决的:http://b ...

  6. linux下svn的co如何排除目录

    某些原因想在svn co的时候排除某些目录,可以绕个圈子,分三步来完成: co外层目录: svn checkout --depth empty $URL [$LOCATION] 完成之后,会有一个只包 ...

  7. 极速地将git项目部署到SAE的svn服务器上

    本文最初发布于我的个人博客:http://jerryzou.com/posts/gitForSAE/ 我花了一些时间自己写了一个能够极速地将一个git项目部署到SAE的svn服务器上的脚本.代码不是复 ...

  8. Maven+Nexus+Jenkins+Svn+Tomcat+Sonar搭建持续集成环境(二)

    上一篇随笔Maven+Nexus+Jenkins+Svn+Tomcat+Sonar搭建持续集成环境(一)介绍maven和nexus的环境搭建,以及如何使用maven和nexus统一管理库文件和版本,以 ...

  9. 使用 svn+maven+jenkins(hudson)+Publish Over SSH plugins 构建持续集成及自动远程发布体系(转)

    1.安装jenkins 2.浏览器访问jenkins主页 http://192.168.0.1:8080/,点击“系统管理” 3.在插件管理中,安装Publish Over SSH插件 4.在系统设置 ...

随机推荐

  1. 使用Intellij加载Spark源代码

    如何使用Intellij加载Spark源代码 转载注明原文http://www.cnblogs.com/shenh062326/p/6189643.html 查看Spark源代码或修改Spark源代码 ...

  2. SSIS实践入门2:批量包的调度和SQLServer代理作业配置

    趁着上一篇文章的余温,我们继续研究一下SSIS中多个包如何调度,难道需要一个包一个包的配置调度程序吗?显然不是的,接下来我们就说一说在SSIS应用中如何批量的调度所有的作业,本文只讲述一个基本的逻辑过 ...

  3. (C++)C++类继承中的构造函数和析构函数

    思想: 在C++的类继承中, 建立对象时,首先调用基类的构造函数,然后在调用下一个派生类的构造函数,依次类推: 析构对象时,其顺序正好与构造相反: 例子: #include <iostream& ...

  4. static对象

    1.static对象包括: global对象 namespace作用域下的对象 在class,function,file作用域内的static对象 2.在方法内的static对象成为 local st ...

  5. 软件开发工具GCC

    重点掌握以下知识点: 了解gcc编译器的下载和安装方法,包括嵌入式交叉编译平台搭建的方法 重点掌握gcc的基本编译流程和编译方法 重点掌握gcc编译的高级操作及选项 了解gcc编译器性能分析工具,包括 ...

  6. Python 访问dict

    访问dict 1:可以if判断元素是否存在 2:dict.get('key')我们已经能创建一个dict,用于表示名字和成绩的对应关系:d = { 'Adam': 95, 'Lisa': 85, 'B ...

  7. 在 HTML 中使用JavaScript

    <script>元素 属性     async:可选.async 属性规定一旦脚本可用,则会异步执行,表示应该立即下载脚本,但不妨碍页面中的其他操作,比如下载其他资源或等待加载其他脚本.a ...

  8. (二)hibernate进阶

    1.hibernate.cfg.xml常用配置以上节代码为例 <session-factory> <property name="connection.username&q ...

  9. PHP SOCKET编程(未完)

    转 http://blog.csdn.net/hguisu/article/details/7448528

  10. CentOS 5.5 下修改Apache默认端口80

    打开  /etc/httpd/conf/httpd.conf  文件 修改两个地方     #Listen 12.34.56.78:80     Listen 80 #把80改为你设置的端口,我设置端 ...