• 浅谈软件配置管理工具(github & SVN)


    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):存放待发布/已发布发布给外部客户(一般为合同方/最终用户)的工作产品

  • 相关阅读:
    数组里的数据绑定到dataset中
    有关字符串匹配的方法
    sql语句全集
    Dialog 的6中提示方式
    android开源项目和框架
    MyEclipse DB Browser使用图文全攻略
    省市县联动(转)
    LRU算法
    Java 性能优化小细节
    HashMap
  • 原文地址:https://www.cnblogs.com/shenxiaolin/p/5264358.html
Copyright © 2020-2023  润新知