软件配置管理中的SVN

一.简介

1、什么是软件配置管理

软件配置管理是指通过执行版本控制、变更控制的规程,以及使用合适的配置管理软件,来保证所有配置项的完整性和可跟踪性。配置管理是对工作成果的一种有效保护。

2、为什么需要配置管理

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

为了避免成果被覆盖,包括我自己在内的很多人早期采用手工管理版本的方式,例如当一个新版本产生时用当时的日期来命名文件夹大发生然后再复制一下以后的修改在复制的文件夹内进行,这样上一个版本就被保存下来了,周而复始不同的版本不会被覆盖。虽然这种方式可以从某种程度上解决版本的回溯问题,但他存在的缺点是显而易见的:第一点如果保留结果过于频繁,将会导致产生大量的有着重复内容的文件夹,庞大的物理空间,管理起来很麻烦;如果保留旧版本的时间间隔太长,可能产生某些有用的老程序无法回溯。拿我最近开发的一个程序来说程序只有几十兆,经过一年的开发各版本累计到1G。第二容易产生版本的混乱,如果是团队开发软件,这种简单的方法更难解决问题的本质了。

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(管理员客户端)+ AnkhSvn(VS2008插件) +VisualSvn Server(版本控制服务器)进行源代码版本控制前,有必要先了解下Subversion(Svn)。

Svn(Subversion)是近年来崛起的版本管理工具,是CVS的接班人。目前,绝大多数开源软件都使用Svn作为代码版本管理软件。

Svn客户端

Subversion的客户端有两类,一类是webSvn等基于web的,一种是以TortoiseSvn为代表的客户端软件。前者需要web服务器的支持,后者需要用户在本地安装客户端。

Svn服务器

Subversion支持linux和windows,更多是安装在linux下。

Svn服务器有2种运行方式:独立服务器和借助apache。2种方式各有利弊。

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

VisualSvn 、VisualSvn Server

VisualSvn是Svn的客户端,和VisualStudio集成在一起,但是是商业软件,收费;VisualSvn Server是基于Windows平台上的Subversion服务器,它是免费的。他具体包括了Subversion、Apache和一个相应的管理界面。所以推荐使用免费的TortoiseSvn客户端以及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,Apache服务器的配置也只是在图像界面上,指定认证方式、访问端口等简单操作;另外,用户权限的管理也是通过图像界面来配置。

VisualSvnServer是完全开源和免费的,当然它的官方客户端(VisualSvn)并不免费,不过没关系, VisualSvn Serve客户端有太多的免费版本供我们选择,TortoiseSvn就是一个不错的选择。

2.TortoiseSvn 是 Subversion 版本控制系统的一个免费开源客户端,可以超越时间的管理文件和目录。文件保存在中央版本库,除了能记住文件和目录的每次修改以外,版本库非常像普通的文件服务器。你可以将文件恢复到过去的版本,并且可以通过检查历史知道数据做了哪些修改,谁做的修改。这就是为什么许多人将 Subversion 和版本控制系统看作一种“时间机器”。

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

三.学习小结

经过对于软件管理的学习,从整体上认识了软件管理的必要性和重要性,很大程度上解决了设计过程中的版本回溯问题,很是为设计人员考虑,这也是大家学习的必要性。有好的管理方法,使得我们的项目设计过程更为灵活和多元化。而相对于SVN的学习就比较的抽象了,只是装上了软件和看看了教学的视频,还未进行使用,接下来的时间里,从实践中去认识SVN吧!

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-11-25 15:32:05

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

软件配置管理复习

软件配置管理 第1章    软件配置管理概念与目标 软件配置管理(Software Configuration Management, SCM) (1)    定义(多个): l  软件配置管理是指一套管理软件开发和维护过程中所产生的各种中间软件产品的方法和规则,它是控制软件系统演变的学科. l  软件配置管理是一组针对软件产品的追踪和控制活动,它贯穿于项目生命周期的始终,并代表着软件产品接受各项评审. l  软件配置管理是贯穿于整个软件过程中的保护性活动,它被设计用来:(1) 标识变化:(2)

软件项目管理(SPM)-课后感想

为期8周的软件项目管理课程已接近尾声,下面谈谈我对这几周所学课程的一些总结和感想: 先说说我觉得挺重要的一些知识点: 1. 软件项目管理的基本认识: 软件:是一系列按照特定顺序组织的计算机数据和指令的集合 项目:是为完成某一独特的产品.服务或成果所做的一次性努力 管理:是为了完成一个设定的目标,有效并高效的运用某些资源,而组织一批人进行的活动 2. The Four Phases of Every Project:详细介绍了各个阶段需要完成的工作任务 Phase 1:Should We do t

程序员应该具备的11项基本技能

程序员应该具备的11项基本技能2011-03-14 10:56 陈皓 伯乐在线 字号:T | T软件开发是一个跨度很大的技术工作,在语言方面,有C.C++.Java.Ruby等等等等;在环境方面,又分嵌入式.桌面系统.企业级.WEB.基础系统,或是科学研究.但是,不管是什么的情况,总是有一些通用的基本职业技能.AD:2013云计算架构师峰会课程资料下载 这些最基本的职业技能通常决定了一个程序员的级别,能否用好这些技能,直接关系到了程序员的职业生涯.很多程序新手也是因为缺少.达不到或是不熟悉在这些

程序员需要具备的基本技能

软件开发是一个跨度很大的技术工作,在语言方面,有C,C++,Java,Ruby等等等等,在环境方面,又分嵌入式,桌面系统,企业级,WEB,基础系统,或是科学研究.但是,不管是什么的情况,总是有一些通用的基本职业技能. 这些最基本的职业技能通常决定了一个程序员的级别,能否用好这些技能,直接关系到了程序员的职业生涯.很多程序新手也是因为缺少.达不到或是不熟悉在这些基本技能,所以,他们需要有老手带,需要努力补齐这些技能.而高级程序员应该非常熟悉这些基本技能,而且有能力胜任并带领其他经验不足的程序员.

一个优秀的.net程序员必须要学会的技能 (转)-----参照学习目标

最近室友闲聊的时候告诉我,他在网上收集了做为一个java程序员必须要会的东西,他觉得自己要有个方向,否则一定会在平平凡凡的工作中,不思进取,最终 浑浑噩噩.真是让我猛然惊醒啊,做为一个底层的程序员,如何才能拼得过出来的大学精英和社会老手?学习一定必不可少.虽然自己有点懒,我先把这些记下,待 日后尽量弄懂. Web/WinForm/通吃,包括ASP.NET,WebService,Remoting,Thread,Serializable,ADO.NET等命名空间 精通UML 精通DesignPatt

软件配置管理方针

软件配置管理方针 基本描述 软件配置管理的目的是在贯穿整个软件生命周期中建立和维护项目产品的完整性. 软件配置管理包括识别出在项目的整体运作过程中不同给定实践点的软件配置(即软件产品及其相关描述),系统地控制对软件配置的更改,并且在整个软件生命周期中维持软件配置的完整性和可跟踪性.软件配置管理所管理的项目产品包括将要交付给客户的软件产品(例如,软件需求说明书,程序代码等),也包括那些生成这些项软件产品的必需品(例如,编译器). 一个软件基准库应该在其所包含的软件基准不断完善的同时建立起来. 通过

Jenkins(二) 安装、新建Jobs与删除及SVN配置(转)

官网首页(https://jenkins-ci.org/)就提供了windows版本的Jenkins安装包.可以自己下载一个用于学习.安装后自动打开http://localhost:8080,就可以看见Jenkins的界面. 要运行Jenkins的其它配置: 1,Jenkins是java程序,因此需要安装JDK. 2,同时运行job需要提供repository,也就是存放Jenkins定期poll源代码的地方.可以去github免费注册一个. 3,如果想在Jenkins中使用ant,maven等

svn使用教程各种杂七杂八!

1.svn环境搭建 在应用myEclips 8.5做项目时,svn会成为团队项目的一个非常好的工具,苦苦在网上寻求了一下午,终于整合好了这个环境,在这里简单介绍下,希望能为刚开始用svn的朋友一点点帮助. svn环境需要(1)服务器端(2)客户端(3)应用在myeclipse中的svn插件 第一步,安装svn服务器端.我用的是VisualSVN-Server-2.1.3这个版本的. 安装完后,打开VisualSVN-Server,创建一个根目录test,则这个目录在服务器的地址 为:https:

Java SVN管理工具的使用

1.svn环境搭建 在应用myEclips 8.5做项目时,svn会成为团队项目的一个非常好的工具,苦苦在网上寻求了一下午,终于整合好了这个环境,在这里简单介绍下,希望能为刚开始用svn的朋友一点点帮助. svn环境需要(1)服务器端(2)客户端(3)应用在myeclipse中的svn插件 第一步,安装svn服务器端.我用的是VisualSVN-Server-2.1.3这个版本的. 安装完后,打开VisualSVN-Server,创建一个根目录test,则这个目录在服务器的地址 为:https: