SVN和Tortoise基础培训.ppt_第1页
SVN和Tortoise基础培训.ppt_第2页
SVN和Tortoise基础培训.ppt_第3页
SVN和Tortoise基础培训.ppt_第4页
SVN和Tortoise基础培训.ppt_第5页
已阅读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缺省使用复制 修改 合并模型 大多数情况下可以满足你的需求 然而 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找回已删除的文件或目录删除了文件或目录并已经提交该删除操作到版本库 那么一个常规的TortoiseSVN Revert已不能再将其找回 使用日志对话框来查找出来删除的版本和文件 打开数据仓库的浏览器 并选择该版本 选择删除的文件或目录 右键并选择ContextMenu Copytoworkingcopy 然后选择你的工作副本的路径 重载加号标志表明这个项目不仅仅是增加 而且还包含了历史 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 在本地任意位置创建新的工作副本 对于已经创建了工作副本的版

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论