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. 浅谈软件开发工具CASE在软件项目开发中发挥的作用认识

    浅谈软件开发工具CASE在软件项目开发中发挥的作用认识 内容摘要:阐述了CASE工具作为 一种开发环境在软件项目开发中所起到的开发及管理作用.CASE工具实际上是把原先由手工完成的开发过程转变为以自动 ...

  2. 浅谈计算机实用教学工具应用的体会,浅谈计算机常用工具软件教学心得.doc

    浅谈计算机常用工具软件教学心得 浅谈计算机常用工具软件教学心得 摘 要:随着计算机技术的普及,社会对掌握计算机技术的人才不断提出新的要求,人们所需要掌握的计算机技术也越来越多.<计算机常用工具软 ...

  3. 浅谈软件性能测试中关键指标的监控与分析(转)

    浅谈软件性能测试中关键指标的监控与分析 一.软件性能测试需要监控哪些关键指标? 软件性能测试的目的主要有以下三点: Ø  评价系统当前性能,判断系统是否满足预期的性能需求. Ø  寻找软件系统可能存在 ...

  4. 常用的软件配置管理工具

    常用的软件配置管理工具分为两大类:一类是付费商业软件,一类是开源软件 1.常用付费软件配置管理工具有: .Rational ClearCase .Perforce .CA CCC/Havest .Me ...

  5. java学习方法-浅谈软件开发的神速进步

    中国人大都喜欢用武侠小说来比较软件开发,但是在实战武功中,只有葵花宝典才是最厉害的,也只有掌握了葵花宝典,才能称为"不败". 1浅谈软件开发的神速进步 1.1什么才是软件开发的葵花 ...

  6. 图解Git:一个软件配置管理工具(简介)

    1.    Git 是由linux内核的开发者linus Torvalds于2005年发行的软件配置管理工具,用于管         理软件进化过程中的变化. 2.    Git 仓库: (1)由三个 ...

  7. 「软件项目管理」一文浅谈软件项目风险计划

    一文浅谈软件项目风险计划 序言 一.风险基本概念 1. 风险的定义及特性 2. 风险三要素 3. 风险图示 3. 风险类型 (1)预测角度 (2)范围角度 二.风险管理过程 三.风险识别 1. 定义 ...

  8. ClearCase是全球领先的软件配置管理工具

    ClearCase是全球领先的软件配置管理工具,而Visual Studio 2005是微软推出的强大的.Net开发工具.微软的VSIP计划为Visual Studio提供了界面的可扩展性,通过VSI ...

  9. 计算机辅助翻译工具的主要作用,浅谈计算机辅助翻译工具TRADOS在翻译中的积极作用.pdf...

    浅谈计算机辅助翻译工具TRADOS在翻译中的积极作用.pdf z v n h @ r rn N 0 0 0 : . , o v e r s e a e ll ll e tt t h p w v r n ...

最新文章

  1. 教你用Python爬取图虫网
  2. php5.4.16执行shell脚本
  3. UA MATH566 统计理论 QE练习题1
  4. linux maven .m2文件夹,Maven .m2文件夹创建(示例代码)
  5. echart label 不随值变化位置_炼丹神器来了! 模型结构、训练日志、特征提取都能可视化,调参不慌了!...
  6. Python---冒泡排序、选择排序
  7. DataGridView 控件中至少有一列没有单元格模板的解决
  8. java class文件常量池_JAVA程序员谈谈class文件结构中的常量池-class文件
  9. 前后端分离html ssm,前后端分离请求ssm返回数据
  10. ctypealpha php_php中Ctype函数用法详解
  11. 静态变量和实例变量的区别。
  12. BOOST库介绍(二)——BOOST多线程相关库
  13. mysql 优化代码_Mysql语句-优化代码
  14. html5商品列表页tab,基于vue的tab-list类目切换商品列表组件的示例代码
  15. MathType6.0安装教程
  16. lammps输出模拟结果的4种方法
  17. ICH E2B | ICSR 电子传输网关对接解决方案
  18. 【Rust blog】Rust + Flutter 高性能的跨端尝试
  19. Pycharm使用技巧:Split Vertically/Horizontally(垂直/水平拆分窗口)
  20. c语言钟表程序,制作一个电子时钟C语言版

热门文章

  1. 西门子S7-1200PLC结构化编程5轴伺服项目 三轴机械手X轴-Y轴-Z轴联动取放料PTO脉冲定位控制台达B2伺服
  2. 汉字的内码和区位码与显示汉字原理
  3. tomcat 日志分割 按天输出
  4. 查杀感染exe的顽固病毒
  5. vb程序设计——多态
  6. 使用‘net.sf.ehcache.CacheManager‘进行Shiro配置时报错
  7. win10系统安装eNSP
  8. matlab调频解调,(很实用,很好)用MATLAB实现信号的调制与解调调频调相等
  9. excel条件格式使用_如何使用条件格式在Excel中创建进度栏
  10. [python]使用python实现蜡烛图绘制