




已阅读5页,还剩33页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
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 缺省使用复制-修改-合并模型,大多数情况下可以满足你的需求。然而,Subversion 1.2 后还是支持锁定,如果你有不可合并的文件,或者你只是想实行强制管理策略,Subversion 仍然会提供你需要的特性。,SVN的部署、安装和配置,公司的版本库情况介绍 基于Apache运行 各部门建立各自的版本管理服务器 质量管理部统一进行公司层面、部门层面和项目层面的版本管理 服务端的安装配置:略 TortoiseSVN的安装 如何获取安装文件: 从下载 从公司版本库中获取: 默认安装 安装后与windows资源管理器完美集成,在服务器端创建版本库,操作执行人员:配置管理员 操作步骤: 在要创建文件仓库的位置(配置管理服务器中)创建目录; 在目录中创建版本库: 命令行方式:svnadmin create D: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 找回已删除的文件或目录 删除了文件或目录并已经提交该删除操作到版本库,那么一个常规的TortoiseSVN Revert已不能再将其找回。 使用日志对话框来查找出来删除的版本和文件,打开数据仓库的浏览器,并选择该版本。 选择删除的文件或目录,右键并选择Context Menu Copy to working copy . ,然后选择你的工作副本的路径。 重载加号标志表明这个项目不仅仅是增加,而且还包含了历史,Subversion记住了它是从哪个拷贝过来的。对这个文件运行svn log会看到这个文件之前的历史,换句话说,该文件不是新的,而是原先删除的那一个文件的后代。,TortoiseSVN-update,获取其他用户对文件进行的修改,与自己对文件进行的修改进行合并,保证本地的文件总是最新的。 说明: 在团队开发时,更新保持团队成员之间的工作内容一致,是一件很重要的工作。要注意经常更新自己的工作复本,以保证自己能够获得最新的修改内容。,TortoiseSVN-rename,对文件/目录进行Subversion控制下的改名操作,用此功能对文件/目录进行改名后文件仍处于SVN的控制下并保持连续的变更信息。 注意:必须使用TortoiseSVN的重命名功能,直接在资源管理器中进行重命名SVN无法监控。,TortoiseSVN-Revert,撤销本地所有未提交的修改。,TortoiseSVN-出现冲突,commit时出现“You have to update your work copy first.”红色警告,说明版本库中的此文件已经被其他人修改了。 点“ok”按钮退出。 执行update 然后commit 如果修改与update得到的代码不冲突,则自动合并。,TortoiseSVN-出现冲突,如果update出现”One or more files are in a conflicted state.“红色警告,说明出现冲突,SVN自动产生几个文件记录冲突。 filename.mine:你更新前的文件,没有冲突标志,只是你最新更改的内容。(如果这个文件不可以合并,.mine文件不会创建,因为它和工作文件相同。) filename.rOLDREV:这个是你做更新操作以前的BASE版本,就是你在上次更新之后未作更改的版本。 filename.rNEWREV:这是Subversion从服务器刚刚收到的版本。这个版本就是版本库的HEAD版本。,TortoiseSVN-出现冲突,手工解决冲突 选择冲突文件-”Edit conficts” 出现merge界面,分为”Theirs”、”Mine”和”Merged”3部分,表示”别人修改的内容”、 ”我修改的内容”和”合并后的结果”3部分。目标是将”别人修改的内容”和”我修改的内容”有取舍地合并起来,形成”合并后的结果”。 合并一般分为4种情况: 保留”我的修改”,舍弃”别人的修改”。鼠标右键点击Mine框的相应行,点击”Use this text block”。 舍弃”我的修改”,保留”别人的修改”。鼠标右键点击Theirs框的相应行,点击”Use this text block”。 同时保留”我的修改”和”别人的修改”,并将”我的修改” 放在前面。鼠标右键点击Mine框的相应行,点击”Use text block from mine before theirs”。 同时保留”我的修改”和”别人的修改”,并将”别人的修改”放在前面。鼠标右键点击Mine框的相应行,点击”Use text block from theirs before mine”。 合并完成,Ctrl+S存盘,退出。 选择冲突文件-”Resolved”,标记冲突已解决,系统自动删除因冲突而新建的文件。继续进行commit操作。,在Eclipse中使用SVN,下载插件 Subclipse 需要根据 Eclipse 的版本下载相应版本的 Subclipse 下载地址: 也可以在公司的资料库中下载 解压缩后,文件夹结构如下,在Eclipse中使用SVN-安装,将该文件夹拷贝到Eclipse的plugin目录下,并建立相应的目录结构,我们命名为subversion,最终的目录结构如下:,在Eclipse中使用SVN-安装,配置文件 在eclipse/links目录下,新建subversion.link文件,文件内容只有一行:path=plugin/subversion 启动Eclipse,在“首选项小组”中就可以看到Subversion的插件选项了。,在Eclipse中使用SVN,配置完成后与SVN有关的几个菜单项 Team:最常用,与SVN版本库互动操作的大部分命令菜单 Compare with:比较版本差异 Replace with:,在Eclipse中使用SVN-创建本地工作副本,新建资源库 说明:每个项目的资源库地址,将由配置管理员发送邮件给项目团对 Checkout 说明:在eclipse里checkout出来的,一定是该项目对应资源库,而不是整个项目的资源库地址,否则会把太多非eclipse文件建立到本地的工作副本中。,在Eclipse中使用SVN-导入数据,向版本库中导入数据 是使用版本库的第一个步骤,然而,这个步骤并不常用,因为每个项目只需要导入一次而已。 由配置管理员或者项目经理完成,其他成员不需要关注。,在Eclipse中使用SVN-常规操作,察看版本差异- Compare with-资源库中的最新内容 更新本地工作副本 开始工作,修订本地工作副本 编译文件通过 提交修改 重复上述操作 下班,分支和标签,使用场景:发布分支 项目组在开发到一定阶段,产生一个假定稳定版本提交测试。主干被拷贝到分支-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-获取标签和分支中的文件,第一个方法:checkout Checkout,在本地任意位置创建新的工作副本。对于已经创建了工作副本的版本库,不建议采用此操作
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年福建省泉州市晋江智信大数据科技有限公司招聘10人考前自测高频考点模拟试题及完整答案详解一套
- 2025年镇江市高等专科学校公开招聘高层次人才10人长期模拟试卷及答案详解(易错题)
- 2025江苏海事职业技术学院招聘高层次人员28人考前自测高频考点模拟试题及答案详解(全优)
- 2025江苏常州市属事业单位引进高层次人才模拟试卷及答案详解(全优)
- 2025内蒙古森工集团招聘50名高校毕业生(第一批)考前自测高频考点模拟试题及答案详解(名师系列)
- 2025贵州黔西南州交通建设发展中心招聘公益性岗位工作人员3人模拟试卷及答案详解(夺冠系列)
- 2025广西壮族自治区文化和旅游厅幼儿园勤杂工(残疾人专岗)招聘1人模拟试卷附答案详解
- 2025河南郑州高新区枫杨社区卫生服务中心招聘模拟试卷及参考答案详解
- 2025年上海大学公开招聘岗位(第二批)考前自测高频考点模拟试题附答案详解(典型题)
- 2025湖南邵阳市新宁县政协中心公开选调工作人员模拟试卷及答案详解(名校卷)
- 2024年注会考试《经济法》真题及答案
- 无人驾驶生产工艺流程
- 2025年上海高考数学重点知识点归纳总结(复习必背)
- 旋转-图形的旋转(省级赛课公开课一等奖)课件-九年级数学新人教版上册
- 第15课明至清中叶的经济和文化(课件)-高一中外历史纲要上(课件教学视频)
- 辽宁省抚顺市新抚区2024-2025学年八年级上学期10月月考数学试卷(含答案)
- 金属腐蚀与防护技术教具考核试卷
- 【MOOC】园林植物应用设计-北京林业大学 中国大学慕课MOOC答案
- caxa电子图板教程
- 维修人员认证与培训体系
- 职业技术学院《酒店财务管理》课程标准
评论
0/150
提交评论