《SVN使用指南——Windows环境版.ppt》由会员分享,可在线阅读,更多相关《SVN使用指南——Windows环境版.ppt(60页珍藏版)》请在三一办公上搜索。
1、SVN使用指南Windows环境版,内 容 概 要,问题与案例SVN简介应用环境客户端安装简单应用复杂应用,问题与案例(一),电脑发生故障,文件没有备份而丢失了由于人员离职,导致某些资料丢失了我怎么知道手头的公共资料是不是最新版呢?想要追溯几个月前的某个状态,却发现那个版本的文件已经被当作垃圾删除了每天要花费很多时间来向别人提供需要共享的资料,Back,问题与案例(二),相似的应用系统,每次都重复开发,难以复用一个软件被用于多个项目,发现其中存在一个BUG,所有这些项目都要进行修复人员分布在两地开发,版本如何同步甲乙两人为不同目的修改了同一份文件,乙的提交在甲提交之后,导致甲修改的内容丢失了客
2、户测试发现了BUG,开发人员却无法重现出来,Back,SVN简介(一),Back,SVN简介(二),一个开源的版本管理软件可架设在Apache上,使用http或https协议访问;也可使用内置的svn协议访问在Windows环境下,最常用的客户端为TortoiseSVN(简称TSVN)在Linux/Unix环境下,用命令行方式操作SVN的版本号指的不是某个文件的状态,而是整个库的状态,Back,应用环境,服务器端:CollabNet的SVN服务器端安装包(内含Apache2.2)Windows客户端:推荐使用TortoiseSVN(以下简称TSVN)可通过TSVN进行读、写操作可通过IE浏览器
3、进行读操作可通过各种插件与开发工具集成,Back,客户端安装(一),安装文件:TSVN客户端:TortoiseSVN-1.6.8.19260-win32-svn-1.6.11.msiTSVN中文语言包:LanguagePack_1.6.8.19260-win32-zh_CN.msi全部选择默认安装,安装完成后重启电脑TSVN通过右键菜单与Windows资源管理器集成,没有自己的窗口界面,Back,客户端安装(二),TSVN通过右键菜单与Windows资源管理器集成,没有自己的窗口界面,Back,简单应用,TSVN右键菜单与图标创建版本库检出更新提交增加删除改名移动,Back,TSVN右键菜单(
4、一),Back,TSVN右键菜单(二),Back,TSVN图标,Back,创建版本库,在SVN服务器端操作在相应文件夹内新建一个文件夹,用于存储数据在新建文件夹上点右键,选择“TortoiseSVN在此创建版本库”,TSVN会在此文件夹内建立若干控制文件,Back,检出(一),“检出”用于客户端第一次从SVN服务器上下载版本库数据在客户端新建一个文件夹用于存放下载的数据在新建文件夹上点右键,选择“SVN检出”,Back,检出(二),在弹出窗口的“版本库URL”处填入版本库的访问地址,如:http:/10.50.22.35:8080/svn/XXX部门/XXXX项目/点“确定”开始从SVN服务器
5、下载数据,Back,更新,“更新”用于客户端从SVN服务器下载最新版本在受SVN控制的某层文件夹上(或文件夹内空白处)点右键,选择“SVN更新”,TSVN自动比较该文件夹客户端与服务器的版本差异,并下载最新版本到客户端,Back,提交(一),“提交”用于将客户端的改动上传到SVN服务器在受SVN控制的某层文件夹上(或文件夹内空白处,或某文件上)点右键,选择“SVN提交”,Back,提交(二),TSVN自动检查该文件夹客户端的改动,并将其列在弹出窗口的“变更列表”栏在弹出窗口的“信息”栏写上对此次提交的注释,以便将来追溯点击“确定”将客户端的改动上传到服务器,Back,增加(一),“增加”用于将
6、新文件或文件夹纳入SVN的控制之下在受SVN控制的某层文件夹上(或文件夹内空白处,或新增的某文件上)点右键,选择“TortoiseSVN增加”,Back,增加(二),如果“增加”是对文件夹进行操作,则会弹出窗口列出该文件夹下未受控的文件,点击“确定”将其纳入SVN控制“增加”后文件图标从 变成“增加”仅是对客户端的文件进行标注,并不上传到服务器,需要执行“提交”操作才会上传,Back,删除(一),“删除”用于从当前版本中删除文件或文件夹在受SVN控制的文件夹中,通过Windows直接删除子文件夹或文件或:在受SVN控制的某层文件夹或文件上点右键,选择“TortoiseSVN删除”,Back,删
7、除(二),“删除”仅是对客户端的文件进行操作,并不改变服务器上的内容,需要执行“提交”操作才会将删除操作上传到服务器将“删除”操作“提交”到服务器后,仅是从服务器的最新版本中删除了此文件或文件夹,在历史版本中仍可找回此文件或文件夹,Back,改名(一),“改名”用于在受SVN控制的状态下,对文件或文件夹改名在受SVN控制的某层文件夹或文件上点右键,选择“TortoiseSVN改名”,Back,改名(二),“改名”仅是对客户端的文件进行操作,并不改变服务器上的内容,需要执行“提交”操作才会将改名操作上传到服务器不要用Windows“重命名”来实现改名,因为这个操作不受SVN控制,SVN会将其理解
8、为删除原文件、增加一个新文件,从而导致文件改名后不能跟踪到改名前的状态,Back,改名(三),改名的另一种方法:在受SVN控制的某层文件夹或文件上点右键,选择“TortoiseSVN版本库浏览器”在弹出窗口右键点击要改名的文件夹或文件,选择“改名”由于是对服务器版本库直接操作,改名后将自动执行一次“提交”操作改名完成后需要在客户端执行一次“更新”,以下载最新状态,Back,移动(一),“移动”用于在受SVN控制的状态下,移动文件或文件夹的位置在受SVN控制的某层文件夹或文件上点右键,选择“TortoiseSVN版本库浏览器”在弹出窗口拖动文件夹或文件到需要的位置由于是对服务器版本库直接操作,移
9、动后将自动执行一次“提交”操作移动完成后需要在客户端执行一次“更新”,以下载最新状态,Back,移动(二),不要用Windows的拖动操作或“剪切”、“粘贴”来实现移动,因为这些操作不受SVN控制,SVN会将其理解为在原位置删除文件、在新位置增加文件,从而导致文件移动后不能跟踪到移动前的状态,Back,复杂应用,更新至版本还原复原(回滚)冲突及解决分支/标记合并锁定/解锁权限管理,Back,更新至版本,“更新至版本”用于取出文件的某历史版本在受SVN控制的某层文件夹或文件上点右键,选择“TortoiseSVN更新至版本”在弹出窗口中填写要取的版本号,点“确定”取回该版本,Back,还原(一),
10、“还原”用于放弃“增加”、“删除”、“改名”以及修改文件内容等客户端的本地操作,将客户端的数据恢复到改动前的版本状态在受SVN控制的某层文件夹或文件上点右键,选择“TortoiseSVNSVN还原”,Back,还原(二),在弹出窗口中查看要还原的内容,点击“确定”还原客户端数据“还原”只能用于执行“提交”操作之前,即未将客户端的改变上传到服务器之前,Back,复原(回滚)(一),复原(回滚)用于将项目恢复到之前的某个版本状态,并在此版本基础上继续后面的工作在受SVN控制的某层文件夹或文件上点右键,选择“TortoiseSVN显示日志”,Back,复原(回滚)(二),在弹出的日志窗口中,右键点击
11、要复原的版本,选择“复原到此版本”复原结束后,执行“提交”操作,将此版本作为版本库的最新版本,Back,冲突及解决(一),冲突的产生:当两人从同一个版本出发,修改同一份文件并提交时,这两个修改版本就会发生冲突,后提交的人会收到发生冲突的提醒,且提交失败,要求先进行更新操作,Back,冲突及解决(一),Back,不会导致冲突,可能导致冲突,冲突及解决(三),发生冲突后,执行“更新”操作后:对于发生冲突的文件,TSVN会加上冲突标记如果发生冲突的文件是二进制文件(如doc文件、jpg文件),TSVN会增加2个文件,分别是起始版本和发生冲突的版本如果发生冲突的文件是文本文件(如c文件、txt文件),
12、TSVN会将工作副本中的原文件改名增加“.mine”后缀,将两个版本的冲突写入原名文件(文件中用加以标识),并另外增加2个文件,分别是起始版本和发生冲突的版本,Back,冲突及解决(四),例如:两人从第213版开始对start.c和SRS.doc进行修改,甲先修改完成并提交形成217版,乙随后提交时发生冲突,则在乙的该文件夹下将会存在七个文件:start.c:自动合并了甲和乙的修改内容的start.cstart.c.r213:甲乙修改前的start.cstart.c.r217:甲修改后的strat.cstart.c.mine:乙修改后的start.cSRS.doc:乙修改后的SRS.docSR
13、S.doc.r213:甲乙修改前的SRS.docSRS.doc.r217:甲修改后的SRS.doc,Back,冲突及解决(五),解决冲突:手工将前一版本中的修改整合到自己的文件中在冲突的文件或文件夹上点右键,选择“Tortoise已解决的”,标记为冲突已解决(此时会自动删除多余的文件),然后再次“提交”,Back,分支/标记(一),分支:“分支”通常用于在不同的线上同时工作的情况“分支”通常设置为分支的所有者拥有读写权限,其他人员仅有读取权限标记“标记”通常用于版本发布、标识基线状态等情况“标记”通常设置为配置管理员拥有读写缺陷,其他人员只有读取权限SVN使用同样的操作进行“分支”和“标记”,
14、Back,分支/标记(二)推荐的目录结构,Back,分支/标记(三)案例一,Back,分支/标记(四)案例二,Back,分支/标记(五)案例三,Back,分支/标记(六)创建分支,在受SVN控制的某层文件夹上点右键,选择“TortoiseSVN分支/标记”在弹出窗口的“至URL”栏,填写分支的存放地址,通常将其存放到branches目录下,并加上分支的名称,如:http:/10.50.22.35:8080/svn/软件中心/project/branches/工行版,Back,分支/标记(七)创建分支,在弹出窗口的“从此复制到版本库”处选择从“最新版本”或“指定版本”或“工作副本”(工作副本可能
15、是个混合版本)复制在弹出窗口的“日志信息”栏填写注释信息,然后点击“确定”在对应的文件夹执行“更新”操作,下载分支到客户端,之后对分支的操作均在此文件夹进行,Back,分支/标记(八)创建标记,创建标记与创建分支类似,只是通常将其存放到tags目录下,如:http:/10.50.22.35:8080/svn/软件中心/project/tags/Release_V1_0标记实际是为某个版本做了个标签,不会为另存一份而消耗服务器的存储空间,Back,合并(一),合并:对两个版本树进行比较,然后将区别应用到本地副本(合并后需进行“提交”操作)例如:在分支A上进行了一系列修改,现在要将这些修改合并到主
16、干上,则可比较建立A分支的版本与A分支最终版本之间的差异,并将差异应用到主干上可从分支合并到主干,也可从主干合并到分支,也可从分支A合并到分支B可选择合并创建分支以来的所有改变,也可选择合并创建分支以来的某几个版本的改变,Back,合并(二),在目标文件夹上点右键,如要将“branches/工行版”分支的内容合并到主干上,则在“trunk”文件夹上点右键,选择“Tortoise合并”在弹出窗口选择“合并一个版本范围”(常用选择)点击“下一条”,Back,合并(三),在“合并的源URL”处选择要合并进来的分支地址,如:http:/10.50.22.35:8080/svn/软件中心/project
17、/branches/工行版在“待合并的版本范围”处填入合并的版本范围,可点击边上的“显示日志”选择版本点击“下一条”,Back,合并(四),合并深度选择默认的“工作副本”“比较空白字符”、“忽略空白字符的变化”等选择用于对文本文件的比较“测试合并”可在正式合并之前测试合并结果,比如是否存在冲突等点击“合并”若未发生冲突,可在合并后执行“提交”操作,Back,合并(五),若合并时发生冲突,通常可在弹出窗口选择“以后解决”,在本地副本中冲突的文件处将增加2个文件(对二进制文件)或3个文件(对文本文件)手动解决冲突后,使用“Tortoise已解决的”标记冲突已解决,然后执行“提交”操作,Back,锁
18、定/解锁(一),为了便于多人协作,SVN不提倡“锁定修改解锁”的方式由于存在冲突解决的机制,通常多人可对同一份文件进行修改,而不会导致严重问题但在某些情况下,比如对一张图片进行修改时,两份冲突的图片文件将很难被整合到一起,这时建议用锁定/解锁的方式,Back,锁定/解锁(二),锁定方法一在需要锁定的文件夹或文件上点右键,选择“Tortoise属性”在弹出的“属性”窗口选择“新建”,在弹出的“增加属性”窗口,选择“svn:needs-lock”属性,并点“确定”增加属性执行“提交”操作,将属性的改变上传到服务器,若他人执行更新操作,将看到文件被设置为只读,Back,锁定/解锁(三),在设置了ne
19、eds-lock属性的文件或文件夹上点右键,选择“SVN获取锁定”,以获取锁的拥有权在弹出窗口输入锁定的原因等注释信息,然后点击“确定”获取锁定获取锁的拥有权后,文件将被标识为,Back,锁定/解锁(三),锁定方法二在要锁定的文件或文件夹上点右键,选择“Tortoise 获取锁定”,即可锁定并拥有其所有权,文件将被标识为采用此锁定方法时,并不会自动设定svn:needs-lock属性,别人更新后也看不到此标记,但可阻止别人的提交,Back,锁定/解锁(四),锁定后,他人提交时将被报告文件已被锁,并提交失败解锁:对应锁定方法一:在锁定的文件夹或文件上点右键,选择“Tortoise属性”,删除svn:needs-lock属性,然后提交对应锁定方法二:当拥有锁的人提交被锁定文件时,锁将被自动取消(而且当前拥有的所有锁都将被解除);也可通过“解除锁定”来解锁窃取锁:他人可通过“获取锁定”(勾选“偷取此锁定”)来窃取锁的拥有权强制解锁:当拥有锁的人忘记解锁时,他人可通过SVN命令行强制解锁(TSVN目前不提供该功能,可通过窃取锁解锁实现),Back,权限管理,管理员可通过修改服务器上的权限文件,实现对权限的控制权限分为三种:无权限、只读权限和读写权限权限的控制以文件夹为最小单位可对单个用户的权限进行控制,也可以对用户组的权限进行控制,Back,Q&A,谢谢!,