《版本控制管理系统(SVN精讲).ppt》由会员分享,可在线阅读,更多相关《版本控制管理系统(SVN精讲).ppt(64页珍藏版)》请在三一办公上搜索。
1、主讲人:韩磊2011年6月,Subversion,版本控制管理系统,配置管理简介Subversion简介Subversion基础SVN基本操作(演示)SVN其他操作SVN高级操作,内容简介,1 配置管理简介,配置管理的概念配置管理的一般术语配置管理的关键活动配置管理工具简介,配置管理的概念,配置管理(Configuration Management,CM)是通过运用配置标识、配置控制、配置状态统计和配置审计,建立和维护工作产品的完整性和一致性。配置管理是对工作成果的一种有效保护。配置管理作为CMMI 2级的一个关键过程域,在整个研发活动中占有很重要的位置。配置管理与任何一位项目成员都有关系,因
2、为每个人都会产生工作成果。配置管理是否有成效取决于三个要素:人、规范、工具。,配置管理的一般术语,1:配置项 研发和管理过程中会产生许许多多的工作成果,例如文档、程序和数据等,它们都应当被妥善地保管起来,以便查阅和修改。凡是纳入配置管理范畴的工作成果统称为配置项(Configuration Item,CI)。配置项主要有两大类:属于产品组成部分的工作成果,例如源代码、需求文档、设计文档、测试用例等等。在管理过程中产生的文档例如各种计划、监控报告等等,这些文档虽然不是产品的组成部分,但是值得保存。每个配置项的主要属性有:名称、标识符、文件状态、版本、作者、日期等。所有配置项都被保存在配置库里,确
3、保不会混淆、丢失。配置项及其历史记录反映了产品的演化过程。,配置管理的一般术语,2:配置库 配置管理的相关环境,包括项目成员用户组、文档服 务器上的目录、源代码配置库、缺陷管理库等等。3:基线基线(Baseline)由一组配置项组成,这些配置项构成了一个相对稳定的逻辑实体。基线中的配置项被“冻结”了,不能再被任何人随意修改。基线通常对应于开发过程中的里程碑(Milestone),一个产品可以有多个基线,也可以只有一个基线。基线的主要属性有:名称、标识符、版本、日期等。,配置管理的关键活动,1:配置项识别 所有配置项都都应按照相关规定统一编号,在引入配置管 理工具进行管理后,这些配置项都应以一定
4、的目录结构 保存在配置库中。所有配置项的操作权限应由配置管理 员严格管理。2:工作空间管理 在引入了配置管理工具之后,所有开发人员都会被要求 把工作成果存放到由配置管理工具所管理的配置库中去。每个开发人员按照任务的要求,在不同的开发阶段,工作在不同的工作空间上。,配置管理的关键活动,3:版本控制 版本控制是配置管理的核心功能。所有置于配置库中的元素都应自 动予以版本的标识,并保证版本命名的唯一性。通过配置管理工具 可以避免发生版本丢失或混淆等现象,并且可以快速准确地查找到 配置项的任何版本。4:变更控制 变更控制就是通过结合人的规程和自动化工具,以提供一个对变化 控制的机制。保证成果物在复杂多
5、变的开发过程中真正的处于受控 的状态,并在任何情况下都能迅速的恢复到任一历史状态。变更控 制的目的是防止配置项被随意修改而导致混乱。当配置项状态为“正式发布”,或者该配置项已经成为某个基线的一部分(即被“冻 结”)时,如果要修改配置项的话,那么按照变更控制规则执行。,配置管理的关键活动,5:状态报告 配置状态报告就是根据配置项操作记录来向管理者报告 研发活动的进展情况。这样的报告应该是定期进行,配 置状态报告应根据报告着重反映当前基线配置项的状态,以作为对研发进度报告的参照。同时也能从中根据开 发人员对配置项的操作记录来对开发团队的工作关系作 一定的分析。6:配置审计 配置审计的主要作用是作为
6、变更控制的补充手段,来确 保某一变更需求已被切实实现。,常用的配置管理工具,VSS.(Visual SourceSafe).简单易用、方便高效、与Windows操作系统及微软开发工具高度集成。但仅支持Windows操作系统,不能胜任企业级的开发工作。Clearcase:IBM旗下Rational公司(2003年被IBM收购)的一款重量级的配置管理工具。Clearcase支持现有的绝大多数操作系统,但它的安装、配置、使用相对较复杂,并且需要进行团队培训。CVS.(Concurrent Versions System).开放源代码世界的一个伟大杰作,CVS功能强大,跨平台,支持并发版本控制,而且免
7、费,所以它在全球中小型企业中得到了广泛使用。CVS是一个典型的服务器/客户端软件,诞生于 1986 年。SVN.(Subversion)CVS的替代品,采用了更先进的分支管理系统。保留CVS的基本特性但去除CVS的bug和不好的特性。,2 Subversion简介,Subversion的作用Subversion的历史Subversion的工作原理Subversion相关软件,Subversion的作用,一个自由,开源的版本控制系统一个通用系统,不是简单的一个SCM系统以替代CVS为目标可以管理任何类型文件,并且追踪变更不具有某些和开发紧密结合的特性,如支持某种特定的编程语言,集成构建工具等应用
8、:版本管理,Subversion的历史,2000年,CollabNet公司的协作软件采用CVS作为版本控制系统,因为CVS本身一些局限性,从而需要一个代替品2月,邀请了Karl Fogel(Open Source Development with CVS)参与开发3月,Subversion开始详细设计和编码2001年8月31日,Subversion第一个完整版本问世经过1.0,1.1,1.2直到现在的1.6.16版,SVN工作原理,SVN,可以实现文件及目录的保存及版本回溯。SVN将文件存放在中心版本库里,它可以记录文件和目录每一次的修改情况,这样我们就可以籍此将数据恢复到以前的某个版本,并可
9、以查看更改的细节。也就是说,一旦一个文件被传到SVN上面,那么不管对它进行什么操作,SVN都会有清晰的记录,即使它在N天前被删除了,也可以被找回来。SVN是一种集中的分享信息的系统,它的核心是版本库,储存所有的数据,版本库按照文件树形式储存数据包括文件和目录,任意数量的客户端可以连接到版本库,读写这些文件。通过写数据,别人可以看到这些信息;通过读数据,可以看到别人的修改。,Subversion相关软件,基于Subversion和TortoiseSVN的版本控制系统Subversion:是一个开源的版本控制系统,拥有CVS的大部分特征,并在CVS的基础上有更强的扩展,用来代替 CVS 系统。To
10、rtoiseSVN:SVN的客户端工具,和资源管理器完美集成,基于TortoiseCVS的代码开发,使用上与TortioseCVS极其相似。,3 Subversion基础,SVN基本概念SVN工作模式TortoiseSVN的安装TSVN的使用基本流程SVN使用图标说明,SVN基本概念,配置库(Repository)SVN的核心是配置库,储存所有的数据,配置库按照文件树形式储存数据包括文件和目录,任意数量的客户端可以连接到配置库,读写这些文件。通过写数据,别人可以看到这些信息;通过读数据,可以看到别人的修改。最特别的是 Subversion 会记录配置库中的每一次更改,不仅针对文件也包括目录本身
11、,包括增加、删除和重新组织文件和目录。,SVN基本概念,工作副本(WorkSpace)与位于中央配置库相对应的是每个人的工作空间,它是每个程序员工作的地方,程序员从配置库拿到源代码,放在本地作为工作副本,在工作副本上进行查看、修改、编译、运行、测试等操作,并把新版本的代码从这里提交回配置库库中。,SVN基本概念,Checkout,Commit,修订版本(Revision),SVN的提交(Commit)操作是把工作拷贝的更改发布到版本库的一个原子操作。每当一次提交完成后,版本库的文件系统就进入了一个新的状态,叫做一次修订(Revision),每一次修订都会赋予一个独一无二的版本号,一般是从0开始
12、的递增自然数,一个比一个大。初始修订版本是0,这只是一个空目录,没有任何内容。随着每次的提交,版本库里仿佛就多了一个当前内容的“快照”。在版本库中,最新的一个修订版本称为HEAD,SVN的工作模式,复制-修改-合并方案(Subversion默认的模式)在这种模型里,每一个客户读取项目配置库建立一个私有工作副本版本库中文件和目录的本地映射。用户并行工作,修改各自的工作副本,最终,各个私有的复制合并在一起,成为最终的版本,这种系统通常可以辅助合并操作,但是最终要靠人工去确定正误。锁定-修改-解锁方案 在这样的模型里,在一个时间段里配置库的一个文件只允许被一个人修改。此模式不适合软件开发这种工作。,
13、TortoiseSVN的安装,需要安装客户端安装完毕后,在“资源管理器”里点击右键,会有如下菜单出现:,TSVN的使用基本流程,SVN使用图标说明,一个新检出的工作副本使用绿色的对勾做重载。表示Subversion状态正常.当我们开始编辑一个文件后,图标将变成红色感叹号。通过这种方式,可以很容易地看出我们对哪些文件进行了修改操作,但是还没有提交到版本库中;如果在提交的过程中出现了冲突,图标将变成黄色感叹号。如果我们拥有了一个文件的锁,并且Subversion状态是正常,这个重载图标将提醒我们:如果不使用该文件的话,请进行释放锁操作,允许其他成员提交对该文件的修改。,SVN使用图标说明,这个图标
14、表示当前文件夹下的某些文件或文件夹已经被计划从版本控制中删除,或是该文件夹下某个受控的文件丢失了。加号告诉我们有一个文件或是目录已经被计划加入版本控制。,4 Subversion基本操作,安装客户端 访问SVN 认证 取出工作副本 更新工作副本 添加、修改、删除、重命名文件或文件夹,安装客户端,1、下载安装文件TortoiseSVN.2、双击以上安装文件,逐个点击下一步即可完成安装3、默认安装路径为C:Program FilesTortoiseSVN,也可以自己指定对应的安装路径点击安装LanguagePack_1.6.15.21042-win32-zh_CN.msi.4、安装完毕后,点击鼠标
15、右键即可看到以下界面,如图:,访问SVN,http方式访问SVN 打开浏览器,输入对应的url地址及认证信息,界面显示如图 该方式的优点:用户不安装客户端工具即可对SVN库内资源进行浏览查阅。,访问SVN,TortoiseSVN工具访问SVN1、点击鼠标右键,选择Repo-browser,如图:2、在URL框中输入SVN库的URL地址,如图:,访问SVN,TortoiseSVN工具访问SVN3、点击OK,在认证框输入认证信息即可进入,如下图:4、该方式的优点:可以通过TSVN客户端工具对SVN库进行编辑管理。,认证,1、当你访问一个有密码保护的库,一个认证对话框会跳出来,如图2、输入你的用户名
16、和密码,点击OK即可进入SVN库。3、在认证框中勾中,则登录后对其进行操作和再次登录后不需再次输入认证信息(注:如果不勾中该选项则对SVN库的每一步操作都会提示你输入认证信息)。4、按上步勾中后,要删除认证信息,请选择settings对话框,并且点击Clear Auth Cache按钮。,取出工作副本,假如已在服务端(192.168.33.137)建立一个该项目的版本库Project,取出工作副本的步骤为:1、比如,在E盘下新建个文件夹名为Project(命名随意),在Project文件夹上,右键单击鼠标。选择SVN checkout,会出现如下窗口,如图,取出工作副本CheckOut,2、在
17、checkout directory中如果你输入一个不存在的目录名,该目录会自动创建。3、在Revision中,选中HEAD revision,这样将会下载版本库的最新版本。如果想下载库中的旧版本文件,可选中Revision,然后填入版本号即可。4、单击OK,输入用户名和密码。注意:你只能取出到一个空目录。假如你想要取出到先前导入的原始目录,Subversion会抛出一个错误。你必须取出到另外的一个目录或者先把原始目录删掉。,Update(更新),如果其它用户对SVN库拥有写权限,则每次在工作区文件夹下修改本地工作副本的文件之前,必须首先对本地工作副本执行一次更新,即右键单击工作区,选择SVN
18、 Update如图,将最新的版本下载到本地,然后再进行其它操作。,工作副本中创建文件夹,本地的工作区文件夹,即Project上会有绿色对勾出现,工作区下的文件也会带有绿色对勾。新建文件夹的步骤为:1、在本地工作区中,新建一个文件夹,新建的文件夹没有绿色对勾。2、在Project文件夹里面点右键,选择SVN Commit,如图。,工作副本中创建文件夹,3、弹出对话框,勾选我们新建的文件夹,点击ok,如图。,TortoiseSVN工具中创建文件夹,1、通过TortoiseSVN工具进入SVN库,选择要创建的文件夹的上级目录,点右键,选Create folder,如图:2、在弹出的窗口中写上新建的文
19、件夹名字,点击OK 即可。,工作副本中添加文件夹或文件,1、将要添加的文件夹或文件放到工作副本的相应目录下(这里我放到workspace)。2、在workspace 文件夹里面点右键,选择SVN Commit,如图:,工作副本中添加文件夹或文件,3、在弹出对话框中,勾选我们添加的的文件夹和文件,点击ok,如图:,TortoiseSVN工具中添加文件夹或文件,添加文件夹的步骤:通过TortoiseSVN工具进入SVN库,选择要添加的文件夹的上级目录,点右键,选择Add folder,如图,再选择要添加的文件夹即可,TortoiseSVN工具中添加文件夹或文件,添加文件的步骤为:通过Tortois
20、eSVN工具访问SVN,进入SVN库,选择要添加的文件的上级目录,点击右键,选择Add file,如图,然后选择要添加的文件即可。,修改文件内容,如果在工作副本中对库的某一个文件进行了修改,系统会自动为这个文件和这个文件所在的各级父文件夹加上红色叹号,代表该文件或目录已经在本地被修改,如图:当所有对版本库的修改操作完毕后,右键单击工作区文件夹,选择SVN commit在弹出的窗口中勾选修改的文件或文件夹,点击OK即完成对版本库的更新。,工作副本中删除文件或文件夹,1、在本地工作区文件中删除你要删除的文件或文件夹。2、右键单击工作区文件夹,选择SVN commit。3、在弹出对话框中,勾选删除的
21、文件夹或文件,点击ok即可。,TortoiseSVN工具中删除文件或文件夹,1、通过TortoiseSVN工具进入SVN库,选中要删除的文件夹或文件,点击右键选Delete,如图:2、在弹出的窗口中点击OK即可。,工作副本中重命名文件,1、在本地工作区中,修改要重命名的文件的名称,此时该文件的绿色对勾消失。2、右键单击工作区文件夹,选择SVN commit提交新版本。3、在弹出对话框中,勾选重命名的文件和原始名称文件,点击ok,如图。注意:在工作副本中不能重命名文件夹,TortoiseSVN工具中重命名文件夹或文件,1、通过TortoiseSVN工具进入SVN库,选中要重命名的文件夹或文件,点
22、击右键选Rename,如图:在弹出的窗口中输入修改后的名称,再单击OK即可。,5 SVN其它操作,填写日志查看日志ADD(添加)Revert(还原)Add to Ignore List(忽略文件)历史版本回溯版本分支图,日志信息填写规则,好的日志信息和糟糕的日志信息 日志信息主要记录的是每次的修改内容。建议把一些重要数据、关键操作写到日志信息中。注:修改人和提交时间由软件自动记录,无需人工写入日志信息,Show log(显示日志),如果想查看一个文件的日志,右键单击这个文件,选择show log,系统会弹出一个窗口,并在窗口中显示文件版本的log,如图:,ADD(添加),选中文件/文件夹(在新
23、文件/文件夹所在父文件夹点击右键),在菜单中选择“添加Add”命令。不需要受SVN控制的文件请取消打钩。,Revert(还原),作用:撤销本地所有未提交的修改注意:还没有执行Commit操作之前执行此命令才可以,否则无效。,Add to Ignore List(忽略文件),添加忽略文件 右键一个单独的未进入版本控制文件TortoiseSVN(加入忽略列表)Add to Ignore List,会出现一个子菜单允许你仅选择该文件,或者所有具有相同后缀的文件。删除忽略文件:如果你想从忽略列表中移除一个或多个条目,右击这些条目,选择TortoiseSVN 从忽略列表删除。已进入版本控制的文件或目录不
24、能够忽略,如何得到历史版本,工作副本右键显示日志选择所需的版本号更新项目至版本,版本分支图,这个版本历史分析图能够显示分支/标签从什么地方开始创建,以及什么时候删除。版本分支图将显示以下内容:(1)增加文件/文件夹(2)已删除文件/文件夹(3)分支最新版本(4)一般的文件/文件夹,6 SVN高级操作,如何创建分支(Branch)冲突导入、导出、重新定位、清理,如何创建分支(Branch),两种方式:1.在版本库浏览器中创建分支,如何创建分支(Branch),2.在工作副本创建分支,冲 突,什么是冲突冲突产生的原因解决冲突关于避免冲突的建议,什么是冲突,冲突是指团队协同工作时,当多位团队成员同时
25、修改同一个文件,造成本地文件与SVN系统中的文件版本不一致,而导致文件无法提交的情况,冲突产生的原因,产生原因当团队协同工作的时候,多位团队成员同时操作一个文件。团队成员A操作完成后,将该文件提交到SVN上。此时,其他团队成员的本地文件与SVN上的文件版本不一致。当团队成员B操作完成并对文件进行提交操作时,就会产生冲突。,用revert放弃所做的修改,选择SVN还原(revert)放弃自己所做的修改。,关于冲突的建议,修改文件之前,先进行一次update操作修改完成后,及时commit,不要在本地停留过长时间在多位团队成员协作时,尽量修改自己撰写的部分,尽量不要修改不属于自己撰写的部分出现冲突很正常,可以通过前面的方法解决,不要相互覆盖。,其他SVN的功能,Export(导出)导出你需要的文件,导出后不在受SVN控制;而checkout检出的文件仍受SVN控制;Import(导入)将需要的文件导入到版本库中;Relocated(重新定位)当服务器上的版本库目录已经改变,我们可以把工作复本重新定位;CleanUp(清理)递归的清理工作副本,删除锁定和保留的未完成操作,如果你得到工作副本已经锁定的错误,运行这个命令删除无用的锁定,并将工作副本恢复到可用的状态;,欢迎交流MSN:QQ群:225306372,