1   配置管理名词定义

1.1 配置项

软件生存周期各个阶段活动的产物经审批后即可称之为软件配置项。

软件配置项包括:

①与合同、过程、计划和产品有关的文档和资料;

源代码目标代码可执行代码

③相关产品,包括软件工具、库内的可重用软件、外购软件及顾客提供的软件等。

1.2 配置项标识

配置标识是定义各类配置项、建立各种基线、描述相关软件配置及其文档的过程。

配置标识是指为了方便对软件配置的各个片段进行管理,必须对每一个配置项进行标识。其原则为:

(1)用易于理解和推测的方式定义文件的标识;

(2)当需要修改时,提供进行修改和跟踪它们的方法;

(3)为了便于控制与管理,要隐含如下内容:配置项内容、版本、完成时间等。

1.3 版本

软件版本一般只在软件开发公司内部运行,不对外公开。主要是开发者自己对产品进行测试,检查产品是否存在缺陷、错误,验证产品功能与说明书、用户手册是否一致。Alpha版本的产品仍然需要完整的功能测试,而其功能亦未完善,但是可以满足一般需求。因为它是整个软件释出周期中的第一个主要阶段,所以它的名称是“Alpha”,希腊字母中的第一个字母。

1.4 基线

在计算机术语中,基线是项目储存库中每个工件版本在特定时期的一个“快照”。它提供一个正式标准,随后的工作基于此标准,并且只有经过授权后才能变更这个标准。建立一个初始基线后,以后每次对其进行的变更都将记录为一个差值,直到建成下一个基线。

1.5 配置库

存放配置项的数据库,常用两种形式:按配置项类型分类建库和按任务建库。

一般包括以下几种:

开发库:用于存放项目期间处于开发状态的相关文档和代码。以及存放项目组工作期间的相关沟通记录等

受控库:用于存放经过验证后的产品(包括基线产品);建立测试区,用于存放开发工作结束后需要进入测试的配置项,以及为变更实施提供工作空间。

产品库:存放发布后的产品。

2   SVN操作说明

2.1 相关操作:

(1)add:将文件或目录加入SVN库。

注意:如果添加目录的话,目录下的所有文件会同时被添加

(2)check out:将SVN服务器上的项目文件下载到本地目录

注意:在checkout 时有一个检出深度,有如下选项:

①全递归(默认选择):检出完整的目录树,包含所有的文件或子目录。

②直接节点,包含目录:  检出目录,包含其中的文件或子目录,但是不递归展开子目录。

③仅文件子节点:检出指定目录,包含所有文件,但是不检出任何子目录。

④.仅此项:只检出目录。不包含其中的文件或子目录。

(3)update:更新工作副本使其成为版本库中的最新版本

(4)commit:将在工作副本做的修改进行提交

注意:为了以后能更清晰的看到自己所做的每一次更改的原因,在提交时应该写上注释

(5)delete:删除文件或目录

(6)revert:撤销本地所有未提交的修改

注意:还没有执行commit操作之前执行此命令才可以,否则无效

(7)rename:修改文件名

(8)branch:建立分枝

3   GitHub操作说明

3.1 GitHub的基本简介:

Git是一个分布式的版本控制系统,最初由Linus Torvalds编写,用作Linux内核代码的管理。在推出后,Git在其它项目中也取得了很大成功,尤其是在Ruby社区中。目前,包括Rubinius、Merb和Bitcoin在内的很多知名项目都使用了Git。Git同样可以被诸如Capistrano和Vlad the Deployer这样的部署工具所使用。

3.2  GitHub的基本操作:

(1)注册账号以及创建仓库:

注册 GitHub账号:http:// github.com

(2)安装客户端msysgit:

github是服务端,还需要一个git客户端msysgit,这个只是提供了git的核心功能。装完msysgit 后右键鼠标会多出一些选项来,在本地仓库里右键选择 git init here ,会多出来一个.git 文件夹,这就表示本地git 创建成功。

(3)配置SSH :

SSH 是一种连接方式,一方面免于总是在连接时输入用户和密码,另一方面增加安全性。

SSH是两段很长的字符,一段是锁,另一段是钥匙。

1)第一步,生成密钥和锁

2)第二部,将锁放置到github的账户里

C:/users/用户名(windows用户)/.ssh/文件夹中,用记事本打开其中的id_rsa.pub文件,全部内容复制。回到https://github.com ,进入Account Settings,左边选择SSH Keys ,Add SSH Key,title 随便填,粘贴key。

3)第三步,测试是否成功

为了验证是否成功,在git bash下输入:ssh-T git@github.com

若是第一次的会提示是否continue,输入yes 会看到:

You’ve successfully authenticated,but GitHub does not provide shell access.

此即表示已经成功连上github

(4)设置用户信息:

Global user,name”your name ”

Global user.email”your email”

(5)工作区和暂存区:

工作区(working directory):即在电脑里能看到的目录

版本库(repository):工作区有一个隐藏目录.git,这个是git 的版本库。

暂存区(stage 或者 index):存于git 的版本库里。

(6)远程仓库:

1)创建远程仓库

在github 首页,点击页面右上角“new repository”;填写项目信息(project name和description );点击“create  repository”,在github上创建一个仓库。

2)在本地创建一个相同的仓库

在电脑上任意一个文件夹,新建一个目录,目录名与在github上所建库的名字相同。然后右击文件夹,在弹出菜单中选择git bash,弹出命令行窗口,输入:git init,此时git 会在这个文件夹下创建一个隐藏目录,此即为本地库。

3)绑定本地库和远程库

将本地库传到github 上去,后添加远程地址:

git  remote add origin git@github.com:yourname/yourrepo.git

添加完之后进入.git,打开config,这里会多出一个remote“origin”内容,此即为刚刚添加的远程地址,亦可直接修改config来配置远程地址。

4)提交、上传

$ git add //添加文件

$ git commit-m’first commit’//提交更新,并注释信息’first commit’

$ git push origin master //git push 命令会将本地仓库推送到远程服务器。

5)从远程库克隆

登陆GitHub,创建一个新的仓库,名为gittest;

勾选Initialize this repository with a README,自动创建一个 README.md文件;

用命令git clone 克隆一个本地库:$git clone git@github.com:yourname/gittest.git

(7)分支管理

1)创建和合并分支

查看分支:git branch

创建分支:git branch<name>

切换分支:git checkout<name>

创建+切换分支:git checkout-b<name>

合并某分支到当前分支:git merge<name>

删除分支:git branch-d<name>

2)分支策略(基本原则)

一是 master分支是非常稳定的,其仅用来发布新版本;

二是dev分支是不稳定的。

(8)协作开发

第一步:进行Fork

第二步:进行克隆:利用右侧边栏中的URL对repo进行克隆

第三步:添加上游远程仓库:Git remote add upstream

第四步:检查主分支

第五步:提交

第六步:推送

第七部:创建pull request

4   GIT与SVN比较

1.GIT是分布式的,SVN不是:

SVN属于集中式的版本控制系统,而GIT是分布式的。对于SVN来说,每个版本库有唯一的URL,每个用户都从这个地址获得数据的更新,提交时必须授权以及网络的连接。而在GIT中每个克隆的版本库是平等的,可以从任何一个版本库的克隆来创建自己的版本库,GIT的提交完全在本地完成,无需授权,并且可以脱离网络

2.GIT把内容按元数据方式存储,而SVN是按文件

所有的资源控制系统都是把文件的元信息隐藏在一个类似.svn,.cvs等的文件夹里。如果你把.git目录的 体积大小跟.svn比较,你会发现它们差距很大。因为,.git目录是处于你的机器上的一个克隆版的版本库,它拥有中心版本库上所有的东西,例如标签,分 支,版本记录等

3.GIT分支和SVN的分支不同:

SVN和GIT的分支不同分支在SVN中一点不特别,就是版本库中的另外的一个目录。如果你想知道是否合并了一个分支,你需要手工运行像这样的命令svn propget svn:mergeinfo,来确认代码是否被合并。然而,处理GIT的分支却是相当的简单和有趣。你可以从同一个工作目录下快速的在几个分支间切换。你很容易发现未被合并的分支,你能简单而快捷的合并这些文件。

4.GIT没有一个全局的版本号,而SVN有:

SVN的版本号实际是任何一个相应时间的源代码快照,SVN是全局版本号,GIT是全球版本号。

5. SVN的工作区和版本库是截然分开的,而GIT的:

工作区和版本库是如影随形的。SVN的企业级部署中,版本库在服务器上,工作区是一份版本库在某个历史状态下的快照。GIT的根目录有一个.git的子目录,这个子目录就是版本库本身。

5  配置库结构设计

推荐的典型的配置库结构:

  开发库:项目成员的工作环境,保存正处于开发/变更的工作产品(文档/源代码)。开发库内的工作产品处于存档控制/版本控制之下,其信息可能进行频繁的修改

  受控库:保存开发过程中某个阶段工作结束时释放的阶段产品,即配置项的基准版本。受控库的配置项处于基准控制下

  产品库:保存对内/对外发布的产品,等待外部测试组测试,或者等待用户安装和验收,产品库的配置项处于基准控制下

  在现实操作中,开发库一般分为开发库(DevelopLibrary)和管理库(ManagementLibrary),受控库一般称为基准库(BaselineLibrary),产品库一般称为发布库(ReleaseLibrary)/产品库(ProductLibrary),他们的具体组成和作用如下:

  【管理库(ManagementLibrary)】:存放各种管理类文档

  01.项目计划(ProjectPlaning):存放计划类相关文档如项目管理计划、进度计划、评审计划等

  02.项目管理(ProjectManagement):存放项目度量、管理类报告如周报、月报等

    01.软件估算(SoftwareEstimate):存放软件估算表等

    02.周报(WeeklyReport):存放项目周报

    03.里程碑报告(MiletoneReport):存放项目里程碑报告

    04.决策分析报告(DecisionAnalysisReport):存放项目决策分析报告

    05.外部报告(ExternalReport):存放针对外部人员(如客户)的报告

  03.质量保证(QualityAssurance):存放质量保证计划等质量保证相关内容

    01.周报(QAWeeklyReport):存放项目QA周报

    02.审计记录(QAAuditRecord):存放QA审计记录

  04.配置管理(ConfigurationManagement):存放配置管理计划等配置管理相关内容

    01.配置周报(CMWeeklyReport):存放配置管理周报

    02.基准申请(BaselineRequest):存放各种基准建立申请

    03.变更申请(ChangeRequest):存放各种基准变更申请

  05.评审管理(ReviewManagement):存放评审管理相关内容

    01.评审通知(ReviewNotify):存放评审通知

    02.评审记录(ReviewRecord):存放评审记录

    03.评审分析(ReviewAnalyse):存放评审结果分析

  06.项目培训(ProjectTraining):存放项目培训相关内容

    01.培训教材(TrainingMaterial):存放各类培训教材

    02.培训记录(TrainingRecord):存放培训记录、签到表等

  07.项目总结(ProjectSummary):存放项目总结相关内容

    01.里程碑总结(MileoneSummary):存放项目里程碑总结

    02.结项总结(ClosingSummary):存放项目结项总结

    03.个人总结(PersonalSummary):存放项目成员个人总结(结项后)

  08.缺陷预防(DefectPrevention):

    01.检查表(CheckList):存放各类检查表

    02.检查结果(CheckResult):存放各类检查表的检查结果

  09.会议记录(MeetingRecord):存放各类会议记录

  【开发库(DevelopLibrary)】:存放项目开发过程中的工作产品

  01.需求分析(RequirementAnalyse):存放需求分析文档、原型页面等

  02.系统设计(SystemDesign):存放系统设计文档等

  03.系统测试(SystemTest):存放系统测试计划、方案、用例等

  04.概要设计(PreliminaryDesign):存放概要设计文档等

  05.集成测试(IntegrationTest):存放集成测试计划、方案、用例等

  06.详细设计(DetailDesign):存放详细设计文档等

  07.单元测试(UnitTest):存放单元测试设计、结果等

  08.系统代码(SystemCode):存放系统代码

  09.确认测试(AssuranceTest):存放确认测试计划、用例、结果等

  10.用户手册(UserManuals):存放用户手册等

  11.支持工具(SupportTools):存放项目使用到的支持工具,如PowerDesigner、SQLManager等

  12.外部产品(ExternalProducts):存放项目使用到的外部组件,如extjs等

  13.其它(Other):存放开发过程中的其他工作产品

  【基准库(BaselineLibrary)】:存放基准化的工作产品,内容可参照开发库中的说明

  01.项目计划(ProjectPlaning):存放基准化的计划类相关文档如项目管理计划、进度计划、评审计划等

  02.需求分析(RequirementAnalyse):存放基准化的需求分析文档、原型页面等

  03.系统设计(SystemDesign):存放基准化的系统设计文档等

  04.系统测试(SystemTest):存放基准化的系统测试计划、方案、用例等

  05.概要设计(PreliminaryDesign):存放基准化的概要设计文档等

  06.集成测试(IntegrationTest):存放基准化的集成测试计划、方案、用例等

  07.详细设计(DetailDesign):存放基准化的详细设计文档等

  08.单元测试(UnitTest):存放基准化的单元测试设计、结果等

  09.系统代码(SystemCode):存放基准化的系统代码

  10.确认测试(AssuranceTest):存放基准化的确认测试计划、用例、结果等

  11.用户手册(UserManuals):存放基准化的用户手册等

  12.支持工具(SupportTools):存放基准化的项目使用到的支持工具,如PowerDesigner、SQLManager等

  13.外部产品(ExternalProducts):存放基准化的项目使用到的外部组件,如extjs等

  【发布库(ReleaseLibrary)】:存放待发布/已发布的产品

  01.内部发布(InternalRelease):存放待发布/已发布发给内部客户(一般为测试部门)的工作产品

  02.外部发布(ExternalRelease):存放待发布/已发布发布给外部客户(一般为合同方/最终用户)的工作产品

浅谈软件配置管理工具(github & SVN)的更多相关文章

  1. 浅谈java反序列化工具ysoserial

    前言 关于java反序列化漏洞的原理分析,基本都是在分析使用Apache Commons Collections这个库,造成的反序列化问题.然而,在下载老外的ysoserial工具并仔细看看后,我发现 ...

  2. 浅谈java构建工具的选择

    在学校的时候还总是自己用eclipse自带的jar导出工具,然后人工来给项目打包,那是相当的原始. 而后工作了,项目中都是用ant,慢慢的开始学会使用这个工具.感觉就和脚本一样,很容易读懂,做项目构建 ...

  3. 浅谈kali : arpspoof工具原理

    Arpspoof工具 介绍 arpspoof是一个通过ARP协议伪造数据包实现中间人攻击的kali工具. 中间人攻击虽然古老,但仍处于受到黑客攻击的危险中,可能会严重导致危害服务器和用户.仍然有很多变 ...

  4. 浅谈中大型企业CMDB的建设

    作者:嘉维蓝鲸产品总监,贺勇 针对CMDB这个主题,之前一直想写一篇文章来表达我的看法,但是之前一直不敢写,为什么?因为CMDB这个主题属于一提大家都懂,但是深入讨论大家都晕菜的一个话题:在2018年 ...

  5. 开发工具--浅谈Git

    工具|浅谈Git Git这个工具,是我一直想写文章,终于我实现了我的想法.在我开始写之前,发表一下自己的看法,git只是一个工具,既然已经认定是一个工具,那么一定具备工具这类的共同特征,请用面向对象的 ...

  6. 【转载】浅谈游戏开发之2D手游工具

    浅谈游戏开发之2D手游工具 来源:http://www.gameres.com/459713.html 游戏程序 平台类型: iOS Android  程序设计: 其它  编程语言:   引擎/SDK ...

  7. Linux的文本处理工具浅谈-awk sed grep

    Linux的文本处理工具浅谈 awk   老大 [功能说明] 用于文本处理的语言(取行,过滤),支持正则 NR代表行数,$n取某一列,$NF最后一列 NR==20,NR==30 从20行到30行 FS ...

  8. 【转】.NET(C#):浅谈程序集清单资源和RESX资源 关于单元测试的思考--Asp.Net Core单元测试最佳实践 封装自己的dapper lambda扩展-设计篇 编写自己的dapper lambda扩展-使用篇 正确理解CAP定理 Quartz.NET的使用(附源码) 整理自己的.net工具库 GC的前世与今生 Visual Studio Package 插件开发之自动生

    [转].NET(C#):浅谈程序集清单资源和RESX资源   目录 程序集清单资源 RESX资源文件 使用ResourceReader和ResourceSet解析二进制资源文件 使用ResourceM ...

  9. 软件配置管理及SVN的使用

    一.配置管理   1. 管理整个软件生命周期中的配置项    配置项:软件生命周期中产出的各种输出成果,如需求文档.设计文档.代码.测试相关文档   2.管理配置项的变化(核心)   3.使用配置管理 ...

随机推荐

  1. With Visual Studio, Open Same File In Two Windows, Updates Reflected in Both

    I’ve always been frustrated in Visual Studio (all versions I can remember including latest vs2012) w ...

  2. how to configure logback for Mybatis to print my SQL

    To log SQL statements for particular mybatis mapper set DEBUG (TRACE to see query parameters and res ...

  3. otl中遇到的一些字符数组长度问题

    最近做的项目中对于数据库的操作为了有一个统一的操作,所以采用了otl技术作为中间媒介,当然,由于是用了别人的库,所以还是出现了很多问题.通过对问题进行分析,也形成了一些常用问题的处理方法. 在用otl ...

  4. 玩转OpenStack

    一.OpenStack包含那些内容 1.预备知识 首先会有虚拟化和云计算的“预备知识”,会介绍 KVM,IaaS 等技术. 2.OpenStack核心 包含OpenStack的架构和和各个核心组件. ...

  5. asp.net中使用ueditor 1.3.6上传图片问题

    在asp.net中使用ueditor 1.3.6版本上传图片时,出现上传成功但是,图片无法正常显示的问题,解决方法如下: 只需要将imageUp.ashx中的info = up.upFile(cont ...

  6. 页面的缓存设置与meta的作用详细解释

    网上转的,来自JSP的,但是原理大同小异哦,有时间 写个asp.net版的 HTML的HTTP协议头信息中控制着页面在几个地方的缓存信息,包括浏览器端,中间缓存服务器端(如:squid等),Web服务 ...

  7. 利用CSS、JavaScript及Ajax实现图片预加载的三大方法及优缺点分析

    预加载图片是提高用户体验的一个很好方法.图片预先加载到浏览器中,访问者便可顺利地在你的网站上冲浪,并享受到极快的加载速度.这对图片画廊及图片占据很大比例的网站来说十分有利,它保证了图片快速.无缝地发布 ...

  8. 再谈javascript图片预加载技术

    图片预加载技术的典型应用: 如lightbox方式展现照片,无疑需要提前获得大图的尺寸,这样才能居中定位,由于javascript无法获取img文件头数据,必须等待其加载完毕后才能获取真实的大小然后展 ...

  9. chm格式文件,win7下用c:/windows/hh.exe打开

    chm格式文件,win7下用c:/windows/hh.exe打开

  10. 在Foreda8中整合Apche httpd2.4.6和Tomcat7.0.42(使用tomcat-connectors-1.2.37)

    本地Apche httpd2.4.6(http://pan.baidu.com/share/link?shareid=4003375081&uk=34256769)和Tomcat7.0.42是 ...