资源预览内容
第1页 / 共41页
第2页 / 共41页
第3页 / 共41页
第4页 / 共41页
第5页 / 共41页
第6页 / 共41页
第7页 / 共41页
第8页 / 共41页
第9页 / 共41页
第10页 / 共41页
亲,该文档总共41页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
SVN实训与版本管理田新国数据及应用软件中心 E-mail: Tianxgszkingdom.com课程结构 一、前言二、SVN介绍三、TSVN常用命令四、并行开发之SVN版本管理五、常见问题&答疑前 言 学习前思考一下以下问题:u你是否遇到一个项目多人协作,文档共享的问题呢? u你是否遇到一个项目多人开发,代码同步的问题呢? u你是否和同事一起编辑同一个文档,而由于你后打开此文档而导致你无法编辑或是你 编辑了而无法保存的问题呢? u你的项目组是否有想过提取你们开发过程中某一阶段的代码呢?或者想让你的项目回 到过去某一个运行正常阶段的代码呢? u你是否为阶段性的项目文档或代码备份而发愁呢 u项目经理是否还在为多人同时开发一系统不同的模块最终合并代码而发愁呢?是否遇 到过别人的代码覆盖你的代码呢? u你是否带着以上的问题,我们来开始今天的内容,让你 见证SVN的强大SVN介绍1、什么是SVN(Subversion)? 有一个简单但不十分精确比喻: SVN = 版本控制 + 备份服务器 简单的说,您可以把SVN当成您的备份服务器,更好的是,他可以帮您记 住每次上传到这个服务器的档案内容。并且自动的赋予每次的变更一个版 本。 通常,我们称用来存放上传档案的地方就做Repository。用中文来说,有 点像是档案仓库的意思。不过,通常我们还是使用Repository这个名词。基 本上,第一次我们需要有一个新增(add)档案的动作,将想要备份的档案放 到Repository上面。日后,当您有任何修改时,都可以上传到Repository上 面,上传已经存在且修改过的档案就叫做commit,也就是提交修改给SVN server的意思。针对每次的commit,SVN server都会赋予他一个新的版 本。同时,也会把每次上传的时间记录下来。日后,因为某些因素,如果 您需要从Repository下载曾经提交的档案。您可以直接选择取得最新的版本 ,也可以取得任何一个之前的版本。如果忘记了版本,还是可以靠记忆尝 试取得某个日期的版本。2、为甚么要用SVN? 版本备份:SVN Repository可以是自己计算机上的一个目录, 或者是随身碟(不建议这样用)。当然也可以是公司的服务 器。 版本控制:SVN有很棒的版本控管机制。所有上传的版本都会 帮您记录下来。日后您可以随时取得某一个时刻的版本。而且 ,也有版本分支及合并等好用的功能。 数据同步:SVN可以让不同的开发者存取同样的档案,并且利 用SVN Server作为档案同步的机制。也就是说,您有档案更新 时,无须将档案寄给您的开发成员。只需要告诉他新的版本已 经在SVN Server上面,请他自己去SVN Server上面就可以取得 最新版本。而且,SVN Server也可以做到当您上传新版本后, 自动发信给相关的成员。 节省备份的磁盘空间:SVN的存放档案方式是采用差异备份的 方式。也就是说,他只会备份有不同的地方。所以很省硬盘空 间。此外,他也可以针对所谓的非文字文件进行差异备份。TSVN常用命令1.Repo-browser(本地): 输入URL访问SVN版本库。 2.Check out: 从版本库中取出一个工作拷贝到本地。本 地目录产生.svn隐藏文件夹,里边保存服务器以及本 地的很多相关信息,可以与服务器进行数据交互。 3.Commit(本地): 从本地拷贝提交到版本库中。 4.Update(本地): 从版本库中更新到本地拷贝。 5.Export(导出): 从版本库中取出文件或目录。本地不可 以与服务器直接进行数据交互,类似于我们常说的下 载。 6.Show log, create folder, delete, rename, add file/folder。 7.Resolved(本地): 解决冲突。 8.Update to revision (本地): 可以恢复到以前某一版本。 9.Switch(本地):切换提交或更新到服务器的目录。. 浏览SVN版本库目录: Repo-browser. Check out从版本库中取出一个工作拷贝到本地。. commit 提交本地修改2.4 update 从版本库中更新到本地2.5 export从版本库中取出文件或目录本地不可以与服务器直接进行数据交互,类似于我们常说的下载。注意:没有.svn的隐藏文件夹,不与SVN直接联系。在TSVN的目录上点右键还有很多命令,比如: Show log, create folder, delete, rename, add file/folder。2.6 TSVN上的其它命令当在本地运行update命令弹出如下图所示的消息框的时候,说 明产生冲突了。2.7 resolved 解决冲突冲突文件里边的冲突部分会以: .r31 标识。本地会多出一些以冲突文件名为前缀的其它文件,这些文件 可以先不用管,等后面运行resolved命令后会自动消失。解决冲突:解决冲突通常有两种办法,一种直接在文 件上改,另一种用TortoiseMerge工具。解决冲突要 与其它同事协商。如下图直接在文件上改,并同时要把冲突部分的标识也要删掉。冲突内容修改前:冲突内容修改后:解决冲突的两种办法使用TortoiseMerge工具解决冲突在弹出的冲突消息框右键单击下图的蓝色部分,这时会弹出一 个TortoiseMerge的界面。 (或者:选中文件-右键菜单TortoiseSVNEdit conflicts (解决冲突)。左上角是版本库里对应文件的内容,右上角是本地冲突文件的内容,下 边是合并(解决冲突)后的内容。 红色部分表示是冲突的内容,要对 这部分内容进行修改。可以在左上角(版本库里的文件)或右上角(本地的文件 )的红色部分(冲突部分)右键单击,会弹出一个白色小 框。 Use this text block: 表示合并后用这部分内容; use this whole file:表示合并后完全用这个文件。 后面两个命令用得少。上图中我在左上角的红色区域选择了Use this text block,这时 我们发现下边的合并框的红色部分没有了,变成了绿色,而里边 的内容也变成了左上角我们选择的内容。我们还可以在下边的框里直接编辑合并后的内容。编辑完后 保存关闭TortoiseMerge。解决完冲突以后运行resolved命令运行resolve命令后会出现左上角的框,选中冲突的文件 ,点击OK。这时我们发现前面多出的几个以文件名为前 缀的几个文件消失了。到此为止,冲突完全解决,可以正 常提交(commit)。2.8 Update to revision 可以恢复到以前某一版本。我们可以在本地用update to revision命令恢复到版本库中以前的某一 版本。我们可以用show log命令查看以前的版本信息。这时我们发现 填写log信息非常重要。如下图我们看到的log信息,我们在本地恢复 到14版本。恢复到14版本后,我们发现c.txt不见,因为那个时候版 本库中还没有这个文件。并行开发之SVN版本管理1.创建分支的意义 创建分支的意义,比如我们在一个基础平台上进行开发,每个技术小组负责一个子 项目, 而基础平台也是有可能会继续更改的,这个时候,如果不创建分支,子项目 之间会相互影响,影响最大的就是后期的测试和版本发布,子项目A已经结束,但 测试却 受到正在进行的子项目B的影响,测试通不过,就别说版本发布了。所以, 我们需要从目前的项目(主干trunk)中创建分支(branch),隔离子项目间 的相 互影响。 2.svn创建分支原理 在svn中,创建分支,实际上就是一个版本拷贝(对应copyto.注意: 绝不是简单在 客户端上copy一个目录,而是svn仓库中copy,文件版本号会增加。),两边做任 何修改发生的版本变化,是一套机制。举例:目前主干版 本是100,分支版本是 101,主干中增加一个文件,版本为102,分支中再增加一个文件,版本就为103 了。两边的版本号是一套,不会重复。3.1 Tag/branch 创建基线蓝色标出的是打基线的目的路径,红色标出的是 基线的文件夹名字,注意这个文件夹是打基线的 时候自动创建的,不是先前创建好的。打基线前:打基线后:3.2 版本合并1)从分支合并到主干 分支开发结束之后,往往需要合并回主干去测试、发布,但分支和主干可能有很 多冲突的地方,在合并时经常需要手工解决。 被操作对象:主干 From:主干的打出分支时的版本 To:分支的Head版本(最新版本) 怎么理解这个From和To呢?似乎跟我们的想当然不太一样:因为我们理解,把分 支合并到主干,肯定是From分支,To主干。怎么搞反了呢? 实际上,Svn认为,我们要合并的,是从主干的某个版本开始,到分支的某个版 本结束。两边的版本号实际上是一套系统,不会有重复。2)从主干合并到分支 试想这样的情况:一个项目里面,要独立出来一个子项目,需要单独发布版本,用到 了基础框架代码,而基础框架在主干中不断修改完善,这就需要从主干合并到分支。 被操作对象:分支 From:分支的第一个版本(最旧版本) To:主干的Head版本(最新版本) 相当于从分支的第一个版本开始一直到主干最后一个版本结束合并之后,替换分支。 实际上,SVN分支与合并,在管理上是有较大的意义不同,但对于svn系统技术层面 来讲,二者是平等的,可互为主干和分支。常见问题1、SVN服务器配置及权限控制?2、为什么使用SVN的服务器对系统性能影响很大?3、为什么提交成功,而图标却没有变化?4、不小心保存了默认密码和用户如何更改?谢谢大家!
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号