SVN和Tortoise基础培训.ppt

上传人:za****8 文档编号:3399105 上传时间:2019-12-13 格式:PPT 页数:38 大小:679.50KB
返回 下载 相关 举报
SVN和Tortoise基础培训.ppt_第1页
第1页 / 共38页
SVN和Tortoise基础培训.ppt_第2页
第2页 / 共38页
SVN和Tortoise基础培训.ppt_第3页
第3页 / 共38页
点击查看更多>>
资源描述
SVN版本管理初级培训,目录,SVN的基本概念在TortoiseSVN中使用的SVN在Eclipse中使用SVN分支和标签,为什么要进行版本控制,是否发生过这样的情况:当你在修改一个文件时,其他人也在修改这个文件?而你是否因此丢失过自己所作的修改呢?是否曾经保存完一个修改,然后又想把个文件恢复到修改以前的状态?是否曾经希望能够看到一个文件以前某个时间点的状态?是否曾经在项目中发现了一个BUG,然后想调查它是什么时候产生的?你是否在一个团队中工作?,如果这些问题中的任何一个回答“是”的话那么你肯定需要考虑版本控制请集中精力继续后续的培训。,Subversion相关软件,基于Subversion和TortoiseSVN的版本控制系统Subversion:是一个开源的版本控制系统,拥有CVS的大部分特征,并在CVS的基础上有更强的扩展,用来代替CVS系统。TortoiseSVN:SVN的客户端工具,和资源管理器完美集成,基于TortoiseCVS的代码开发,使用上和TortoiseCVS极为相似;Web浏览器目前公司的版本库基于Apache服务器运行,可在浏览器中查看授权过的版本库的信息。,使用SVN之前需要了解的第一个概念,版本库(Repository)SVN的核心是版本库,储存所有的数据,版本库按照文件树形式储存数据包括文件和目录,任意数量的客户端可以连接到版本库,读写这些文件。通过写数据,别人可以看到这些信息;通过读数据,可以看到别人的修改。最特别的是Subversion会记录版本库中的每一次更改,不仅针对文件也包括目录本身,包括增加、删除和重新组织文件和目录。,使用SVN之前需要了解第二个概念,版本模型锁定-修改-解锁方案复制-修改-合并方案:在这种模型里,每一个客户读取项目版本库建立一个私有工作副本版本库中文件和目录的本地映射。用户并行工作,修改各自的工作副本,最终,各个私有的复制合并在一起,成为最终的版本,这种系统通常可以辅助合并操作,但是最终要靠人工去确定正误。Subversion怎么做?Subversion缺省使用复制-修改-合并模型,大多数情况下可以满足你的需求。然而,Subversion1.2后还是支持锁定,如果你有不可合并的文件,或者你只是想实行强制管理策略,Subversion仍然会提供你需要的特性。,SVN的部署、安装和配置,公司的版本库情况介绍基于Apache运行各部门建立各自的版本管理服务器质量管理部统一进行公司层面、部门层面和项目层面的版本管理服务端的安装配置:略TortoiseSVN的安装如何获取安装文件:从下载从公司版本库中获取:默认安装安装后与windows资源管理器完美集成,在服务器端创建版本库,操作执行人员:配置管理员操作步骤:在要创建文件仓库的位置(配置管理服务器中)创建目录;在目录中创建版本库:命令行方式:svnadmincreateD:SVNStore使用TortoiseSVN:资源管理器的右键菜单TortoiseSVN在此创建版本库,版本库结构,操作执行人员:配置管理员Subversion的版本库在你的硬盘上创建一个空的文件夹在那个文件夹下创建你想要的顶级目录千万不要放任何文件进去!(暂时不明白为什么)通过在那个文件夹右键,选择TortoiseSVN导入.将这个结构导入到版本库中。这将导入临时文件夹到版本库的根目录形成一个基本的版本库布局。Subversion的版本库布局中,推荐建立:trunk,tags,branches三个目录,他们不是必须的,但其设置贴合SVN功能,在使用中你将会发现这样设置的好处。Trunk:最新的代码,相当于CVS中的Head版本;Tags:Subversion使用过程中创建的标签;Branches:保存Subversion的工作分支。,TortoiseSVN使用-访问版本库,访问方法:Subversion可以通过多种方式访问本地磁盘访问,或各种各样不同的网络协议,但一个版本库地址永远都是一个URL,URL方案反映了访问方法。,TortoiseSVN使用-checkout,“工作副本”的概念一个Subversion工作副本是你本地机器一个普通的目录,保存着一些文件,你可以任意的编辑文件,而且如果是源代码文件,你可以像平常一样编译,你的工作副本是你的私有工作区,在你明确的做了特定操作之前,Subversion不会把你的修改与其他人的合并,也不会把你的修改展示给别人。工作副本的结构普通的文件目录.svn文件夹:管理目录,这个目录里的文件能够帮助Subversion识别哪一个文件做过修改,哪一个文件相对于别人的工作已经过期了。,TortoiseSVN使用-识别重载图标,一个新检出的工作副本使用绿色的对勾做重载。表示Subversion状态正常.在你开始编辑一个文件后,状态就变成了已修改,而图标重载变成了红色感叹号。通过这种方式,你可以很容易地看出哪些文件从你上次更新工作副本后被修改过,需要被提交。如果在更新的过程中出现了冲突,图标会变成黄色感叹号。如果你给一个文件设置了svn:needs-lock属性,Subversion会让此文件只读,直到你获得文件锁。具有这个重载图标的文件来表示你必须在编辑之前先得到锁。如果你拥有了一个文件的锁,并且Subversion状态是正常,这个重载图标就提醒你如果不使用该文件的话应该释放锁,允许别人提交对该文件的修改。这个图标表示当前文件夹下的某些文件或文件夹已经被调度从版本控制中删除,或是该文件夹下某个受版本控制的文件丢失了。加号告诉你有一个文件或目录已经被调度加入版本控制。,TortoiseSVN-add,功能:将客户端新建的文件添加到文件库中,使其接受SVN的控制。操作:在资源管理器中打开取出到本地的工作复本,选中要添加的文件,点击鼠标右键,在弹出菜单中选择“SVN添加”;在弹出窗口中选择要添加的文件;点击OK,完成添加操作。,TortoiseSVN-commit,将你对工作副本的修改发送给版本库,称为提交修改。提交之前要确保你的工作副本是最新的。可以直接使用TortoiseSVN更新,或者你可以先使用TortoiseSVN检查修改,看看哪些文件在本地或是服务器上已经有了改动。提交文件与提交文件夹的区别当你提交文件时,提交对话框只显示你选择提交的文件。当你提交文件夹,提交对话框将自动选择该文件夹中有改动的所有文件。如果你忘记你建立了一个新文件,提交文件夹将使你可以找到它。,TortoiseSVN-delete,Delete-commit找回已删除的文件或目录删除了文件或目录并已经提交该删除操作到版本库,那么一个常规的TortoiseSVNRevert已不能再将其找回。使用日志对话框来查找出来删除的版本和文件,打开数据仓库的浏览器,并选择该版本。选择删除的文件或目录,右键并选择ContextMenuCopytoworkingcopy.,然后选择你的工作副本的路径。重载加号标志表明这个项目不仅仅是增加,而且还包含了历史,Subversion记住了它是从哪个拷贝过来的。对这个文件运行svnlog会看到这个文件之前的历史,换句话说,该文件不是新的,而是原先删除的那一个文件的后代。,TortoiseSVN-update,获取其他用户对文件进行的修改,与自己对文件进行的修改进行合并,保证本地的文件总是最新的。说明:在团队开发时,更新保持团队成员之间的工作内容一致,是一件很重要的工作。要注意经常更新自己的工作复本,以保证自己能够获得最新的修改内容。,TortoiseSVN-rename,对文件/目录进行Subversion控制下的改名操作,用此功能对文件/目录进行改名后文件仍处于SVN的控制下并保持连续的变更信息。注意:必须使用TortoiseSVN的重命名功能,直接在资源管理器中进行重命名SVN无法监控。,TortoiseSVN-Revert,撤销本地所有未提交的修改。,TortoiseSVN-出现冲突,commit时出现“Youhavetoupdateyourworkcopyfirst.”红色警告,说明版本库中的此文件已经被其他人修改了。点“ok”按钮退出。执行update然后commit如果修改与update得到的代码不冲突,则自动合并。,TortoiseSVN-出现冲突,如果update出现”Oneormorefilesareinaconflictedstate.“红色警告,说明出现冲突,SVN自动产生几个文件记录冲突。filename.mine:你更新前的文件,没有冲突标志,只是你最新更改的内容。(如果这个文件不可以合并,.mine文件不会创建,因为它和工作文件相同。)filename.rOLDREV:这个是你做更新操作以前的BASE版本,就是你在上次更新之后未作更改的版本。filename.rNEWREV:这是Subversion从服务器刚刚收到的版本。这个版本就是版本库的HEAD版本。,TortoiseSVN-出现冲突,手工解决冲突选择冲突文件-”Editconficts”出现merge界面,分为”Theirs”、”Mine”和”Merged”3部分,表示”别人修改的内容”、”我修改的内容”和”合并后的结果”3部分。目标是将”别人修改的内容”和”我修改的内容”有取舍地合并起来,形成”合并后的结果”。合并一般分为4种情况:保留”我的修改”,舍弃”别人的修改”。鼠标右键点击Mine框的相应行,点击”Usethistextblock”。舍弃”我的修改”,保留”别人的修改”。鼠标右键点击Theirs框的相应行,点击”Usethistextblock”。同时保留”我的修改”和”别人的修改”,并将”我的修改”放在前面。鼠标右键点击Mine框的相应行,点击”Usetextblockfromminebeforetheirs”。同时保留”我的修改”和”别人的修改”,并将”别人的修改”放在前面。鼠标右键点击Mine框的相应行,点击”Usetextblockfromtheirsbeforemine”。合并完成,Ctrl+S存盘,退出。选择冲突文件-”Resolved”,标记冲突已解决,系统自动删除因冲突而新建的文件。继续进行commit操作。,在Eclipse中使用SVN,下载插件Subclipse需要根据Eclipse的版本下载相应版本的Subclipse下载地址:http:/subclipse.tigris.org也可以在公司的资料库中下载解压缩后,文件夹结构如下,在Eclipse中使用SVN-安装,将该文件夹拷贝到Eclipse的plugin目录下,并建立相应的目录结构,我们命名为subversion,最终的目录结构如下:,在Eclipse中使用SVN-安装,配置文件在eclipse/links目录下,新建subversion.link文件,文件内容只有一行:path=plugin/subversion启动Eclipse,在“首选项小组”中就可以看到Subversion的插件选项了。,在Eclipse中使用SVN,配置完成后与SVN有关的几个菜单项Team:最常用,与SVN版本库互动操作的大部分命令菜单Comparewith:比较版本差异Replacewith:,在Eclipse中使用SVN-创建本地工作副本,新建资源库说明:每个项目的资源库地址,将由配置管理员发送邮件给项目团对Checkout说明:在eclipse里checkout出来的,一定是该项目对应资源库,而不是整个项目的资源库地址,否则会把太多非eclipse文件建立到本地的工作副本中。,在Eclipse中使用SVN-导入数据,向版本库中导入数据是使用版本库的第一个步骤,然而,这个步骤并不常用,因为每个项目只需要导入一次而已。由配置管理员或者项目经理完成,其他成员不需要关注。,在Eclipse中使用SVN-常规操作,察看版本差异-Comparewith-资源库中的最新内容更新本地工作副本开始工作,修订本地工作副本编译文件通过提交修改重复上述操作下班,分支和标签,使用场景:发布分支项目组在开发到一定阶段,产生一个假定稳定版本提交测试。主干被拷贝到分支-branch/1.0。开发者需要在测试假定稳定版本时继续开发新特性,在/trunk上为版本2.0工作,新工作在软件测试时不可以中断。如果测试中一个bug被发现,修改提交测试的分支branch/1.0。同时有规律地将修改合并到主干。如果继续开发中一个bug被发现,修改主干,同时有规律地将修改合并到分支。当测试结束,/branches/1.0被打上标签发布-/tags/1.0.0,这个标签被打包发布给客户。也许,继续维护/branches/1.0。当继续在/trunk上为版本2.0工作,bug修正继续从/trunk运送到/branches/1.0,如果积累了足够的bug修正,管理部门决定发布1.0.1版本,/branches/1.0被标签发布到/tags/1.0.1,打包发布。整个过程随着软件的成熟不断重复:当2.0完成,一个新的2.0分支被创建,测试、打标签和最终发布,经过许多年,版本库结束了许多版本发布,进入了“维护”模式,许多标签代表了最终的发布版本。,分支和标签,特性分支一个特性分支是一个临时分支,用来作复杂的修改而不会干扰/trunk的稳定性,不象发布分支(也许要永远支持),特性分支出生,使用了一段时间,合并到主干,然后最终被删除掉,它们在有限的时间里有用。,分支和标签,标签分支被批准打包发布,纳入到标签下。许多标签代表了最终的发布版本。,分支和标签-”慵懒的拷贝”,Subversion的版本库有特殊的设计,当你复制一个目录,你不需要担心版本库会变得十分巨大Subversion并不是拷贝所有的数据,相反,它建立了一个已存在目录树的入口,这个拷贝被可以被认为是“懒的”,如果你提交一个文件的修改,只有这个文件改变了余下的文件还是作为原来文件的链接存在。这就是为什么经常听到Subversion用户谈论“廉价的拷贝”,与目录的大小无关这个操作会使用很少的时间,事实上,这个特性是Subversion提交工作的基础:每一次版本都是前一个版本的一个“廉价的拷贝”,只有少数项目修改了。当然,拷贝与分享的内部机制对用户来讲是不可见的,用户只是看到拷贝树,这里的要点是拷贝的时间与空间代价很小,所以你可以随意做想要的分支。当然对于一个团队协作的项目来说,其分支的设定规则是需要经过项目团队认可、管理者审批的,否则会给其他人的协作带来混乱。,TortoiseSVN-创建标签和分支,分支版本控制系统的一个特性是能够把各种修改分离出来放在开发品的一个分割线上。这条线被称为分支。标签版本控制系统的另一个特性是能够标记特殊的版本(例如某个发布版本),所以你可以在任何时候重新建立一个特定的构件和环境。这个过程被称作标记。使用提醒分支和标签的实质是:建立了一个新的工作文件副本。分支和标签意味着更多的维护版本,因此从配置管理角度来说,设置了只有经过项目经理审批才新建分支和标签。,TortoiseSVN-获取标签和分支中的文件,第一个方法:checkoutCheckout,在本地任意位置创建新的工作副本。对于已经创建了工作副本的版本库,不建议采用此操作。造成多个本地工作副本,不便管理。第二个方法:switch对于已经checkout的版本库,可以在本地工作副本中使用switch方便的切换到该目录的任意历史版本。注意:在工作副本里当进行本操作时,任何没有提交过的修改都会被混合。如果你不想看到这样的结果,那么你可以有两种选择,要么在切换前提交修改,要么把工作副本恢复到一个已经提交过的版本(比如最新版本)。,在Eclipse中使用SVN-分支和标签,选择项目,单击右键-team-branch/tag。此步骤创建一个版本,选择存放目录,纳入到branch是分支,纳入到tag是标签。继续开发项目的下一个版本。发现bug,检出存在bug的版本。选择项目,单击右键-ReplaceWith-AnotherBranchorVersion,选择存在bug的版本。在当前工作空间(存在bug的版本)中修改程序,完成bug修改,编译测试。将修改commit。测试。重复发布新版本。,在Eclipse中使用SVN-合并修改,这个命令包括三个参数:初始的版本树(通常叫做比较的左边),最终的版本树(通常叫做比较的右边),一个接收区别的工作拷贝(通常叫做合并的目标)。,在Eclipse中使用SVN-合并修改,将一条分支的修改合并到另一条切换出需要被合并的分支或者主干,并选中鼠标右键-“Team”-”merge”“指定要合并的范围”-”起始路径“,选择版本号-”目标路径“,选择版本号“合并”结果:起始路径与目标路径版本之间的差异,将被合并到选中的分支或者主干如出现冲突:手工修改在commit前,该操作只针对本地工作副本,如放弃,“还原”一切完成,同步,提交。,谢谢!,
展开阅读全文
相关资源
相关搜索

当前位置:首页 > 图纸专区 > 课件教案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!