您好,欢迎访问三七文档
软件版本管理报告人:刘全明2020/3/20内容•版本管理的必要性•版本管理工具•VisualSourceSafe如何支持并行开发版本管理的必要性•软件项目完全由一个人来完成是难以想象的,通常是有一个研发小组来共同分析、设计、编码和维护•许多因素都有可能导致对软件的修改,小的可能只是对某个源文件中的某个变量的定义改动,大到重新设计程序模块甚至可能是整个需求分析变动•由于软件开发所固有的特征,可能会形成众多的软件版本,而且我们并不能保证不出现错误的修改•必须进行版本管理•以往的那种被誉为具有良好编程风格的做法,诸如在对他人的源程序进行修改时注释修改原因,修改人和日期,如果是多个成员同时进行了修改,那么需要进行及时的人工的差异比较和综合以便形成一个统一的新版本•这种做法在当前的大型软件的开发中已经越来越没有空间了,可以说是一种以小作坊的形式来面对软件的社会化大生产,再也不可能行得通了•出现版本控制问题出现的版本控制问题•代码管理混乱•解决代码冲突困难•在代码整合期间引入深层BUG•无法对代码的拥有者进行权限控制•特别是对产品的开发,你会频繁的进行版本发布,这时如果没有一个有效的管理产品版本的工具,一切将变得非常艰难问题具体化•1.怎样对研发项目进行整体管理;•2.项目开发小组的成员之间如何以一种有效的机制进行协调;•3.如何进行对小组成员各自承担的子项目的统一管理;•4.如何对研发小组各成员所作的修改进行统一汇总;•5.如何保留修改的轨迹,以便撤销错误的改动;•6.对在研发过程中形成的软件的各个版本如何进行标识,管理及差异识辨•我们必须要引进一种管理机制,一个版本管理机制,而且是广义上的版本管理,它不仅需要对源代码的版本进行管理,而且还要对整个项目进行管理•使用版本控制工具主流版本控制工具介绍•Starteam•PVCSVersionManager•ClearCase(CC)•CVS(ConcurrentVersionsSystem)•VisualSourceSafe(VSS)VisualSourceSafe•VSS是一种版本控制管理工具•可以有效地管理工程•简单易用、方便高效、与Windows操作系统及微软开发工具高度集成VSS的简单工作原理•将所有的项目源文件(包括各种文件类型)以特有的方式存入数据库–开发组的成员不能对该数据库中的文件进行直接的修改,而是由该版本管理器将该项目的源程序或是子项目的源程序拷贝到各个成员自己的工作目录下进行调试和修改,然后将修改后的项目文件作Checkin提交给VSS,由它进行综合更新•VSS也支持多个项目之间文件的快速高效的共享–每个成员对所有的项目文件所作的修改都将被记录到数据库中,小组的成员可能得到该项目的最新版本,对它进行修改,并保存一个新的版本•VSS可以很容易地其他的开发工具集成在一起–一旦VSS集成到开发环境中,就可以象控件一样使用,能够很好地体现出VSS的易用性和强大功能VSS中的几个重要概念•项目–所谓的项目是一组存在VSS中的文件,可以在项目中或是项目之间进行文件的添加、删除、编辑和共享。•工作目录–用户真正对项目文件进行调试修改的地方–当用户Checkout或提取一个文件时,VSS将该项拷贝到用户的工作目录下–当用户修改了该文件并将其Checkin签入时,VSS再将它从用户的工作目录拷回到VSS的数据库中–在用户作Checkout签出时,VSS将会自动管理他的工作目录,诸如创建必要的子目录,而且工作目录可以随时创建或修改管理员部分•维护用户列表(MaintaintheUserList)–添加用户(AddaUser)–更改密码(ChangePasswords)–创建用户列表(CreateaUserList)–删除用户(DeleteaUser)–编辑用户属性(EditUserAttributes)数据库打包/恢复(Archive/RestoreDatabases)•定期地备份VSS数据库,或者数据库的某一部分•节省VSS数据库服务器的磁盘空间•加快显示历史记录操作的速度•便于在多个VSS数据库间传递文件和工程,保持历史记录完整无缺。•备份全部或部分VSS数据库内容并压缩成文件。管理员部分(续)清除临时目录(CleanTemporaryFolder)•VSS通常在运行时把临时结果放在临时目录里,并在退出前将之删除•由于某些原因,例如非正常重启,可能导致临时内容残留在目录中•当没有任何用户运行VSS或VSSAdministrator时,请清除临时目录的内容管理员部分(续)权限(Rights)•权限的传递(RightsPropagation)•安全访问权限(SecurityAccessRights)•缺省安全设置–当添加新用户时,你只有两种级别的访问权限可供选择:•只读权限(Read-onlyrights):•可读写权限(Read/writerights):•更高级别的安全控制•通过制定用户访问权限来实现的。–每个工程仅能被那些具有相应权限的用户访问到,每个命令仅能被那些具有相应权限的用户使用普通用户部分•对工程、文件的一般性使用•打开/关闭数据库(Open/CloseaDatabase)•创建新工程(CreateNewProjects)•添加文件、目录、工程•删除和恢复文件、工程•移动文件和工程(MoveFilesandProjects)•重命名文件、工程(RenameFilesorProjects)•设置工作目录签入、签出、获取、查看及相关操作(CheckIn/Out、Get、ViewandOtherRelatedUse)•签入签出操作(CheckInandCheckOutFiles)•撤销签出(UndoCheckOut)•获取最近版本(GetLatestVersion)•获取早期版本(GetEarlierVersion)•获取和查看文件、工程(GetandViewFilesandProjects)•多人同时签出一个文件(CheckOutMultipleFiles)•排他性签出(ExclusiveCheckOut)•对工程的Cloak操作(CloakProjects)普通用户部分(续)Branch、Share、Label和Pin操作•通过Share操作,一个文件可以被多个项目共享,在任何一个项目中对该文件的更改,都将反映到其他相关项目里。•Branch操作则消除这种共享,每次将一个被共享的文件拆成两个分支•给文件、工程指定标签(LabelFilesandProjects)–当使用Label功能时,表明你在所选工程的历史记录里创建了一个新的版本•Pin操作(Pin)–当你对一个文件实施Pin操作后,你将不能对之做任何修改普通用户部分(续)VisualSourceSafe支持并行开发•需要并行开发的情形需要并行开发的情形•所做的工作涉及到许多文件•其它的小组成员占有了你希望处理的文件•想修改项目早期版本中的某个bug处理方法•你选择一个分支流就可以避免经常打乱别人的工作。同时你可以将所有的工作测试完后再将它们集成到你的项目中。•要求:项目规定你不能够在主线上工作。相反地,项目被分成许多小的部件,每个部件是一个分支,只有该部件完成后,才会将它合并到主线中。文件共享(sharefiles)•在VSS的数据库中有且仅有文件的唯一拷贝--主控拷贝(mastercopy),因此共享文件也就是在不同的项目里建立了指向该主控拷贝的链接。•如果你在其中一个项目中改变此文件,那么其他项目中所有的共享也随之改变。此外,如果选择共享某个项目中的所有文件,我们也可以称之为共享该项目文件共享(sharefiles)•演示•文件共享机制可以减少数据库中文件的数量,能够实现文件的重用分支操作(branching)•与共享操作不同的是,分支操作实际上是将文件放在不同的项目中来实现完全的独立性,此时在一个项目中的文件修改不会影响到其他的项目中的文件•共享操作后形成的位于不同项目里的两个文件拥有一个共同的祖先,也就是他们的历史(history)记录是从同一点分离出来的•演示文件归并(mergefiles)•所谓文件归并就是将由一个文件产生的多个不同拷贝重新形成一个唯一的新的文件版本,一般都是将分支上的改变反映到主线上,所以称之为归并操作•在文件归并过程中VSS并不能去决定文件差异的取舍,它只是将这些文件间的异同提交给你,由你自己来确定最后的文件内容。当然比较的基准就是我们前面提到的它们共同的祖先•投送者(contributor),目标(object)•演示具体应用•假定•我们项目的2.0版本刚刚完成•项目开发小组继续朝着3.0版本前进•试用项目维护人员需要一个临时的2.1版本来修改试用过程中发现的bugs•将当前项目加上标签(Label)--Version2.0•继续在该项目上进行修改,开发新的版本•这个时候在版本2.0的试用过程中发现错误,你需要一个临时的版本来修改错误同时又不影响版本3.0的开发•选择Tools菜单,单击ShowHistory显示ProjectHistoryOptions对话框•选中IncludeLabels复选框•单击OK显示HistoryofProject对话框•选择加有标签Version2.0的版本•单击Share显示ShareFrom对话框•选择将要产生的项目的父项目,我们选择$/。•单击OK显示Share对话框•将此项目命名为bugfixAfterV2.0,单击Close退出HistoryofProject对话框•操作完成后会发现在VSS中增加了一个项目$/bugfixAfterV2.0•选定那些你确实需要修改的文件,然后进行分支操作•这样你就可以任意修改这些文件,而且你会发现图标也恢复到原来的样子•Cloak:若对某工程实行了Cloak操作,则当对该工程的上一级工程进行Get/CheckIn/CheckOut/UndoCheckOut/ProjectDifference操作时,将不会影响该工程及其子工程。而在该工程上进行类似操作时,则和平常得到的结果一样。这一属性将传递给其下的子工程•Pin:对共享文件很有用,尽管它的使用不仅限于共享文件,也包括其他任何文件。当你对一个文件实施Pin操作后,你将不能对之做任何修改。如果一个文件在Pin之后又被实施了Share操作,而被Pin的那个版本同时也是被共享的版本,则所有共享该文件的工程都不能更改该文件
本文标题:软件版本管理
链接地址:https://www.777doc.com/doc-4470808 .html