• 1. 1SVN的使用
  • 2. 培训内容SVN简介 SVN基本概念 SVN基本操作 SVN常见问题处理
  • 3. SVN简介-SVN是什么SVN = Subversion Subversion 是一个自由/开源的版本控制系统。也就是说 Subversion 管理着随时间改变的数据。
  • 4. SVN简介-SVN与VSS的对比工具SVN VSS 管理 方式没有文件锁定模式 即采用了(update-modify-commit)工作方式并发的版本控制方式 每个人都可修改自己可访问的任意代码,代码不会被一个人单独占用,两个人甚至多个人可以修改同一份代码,并且每个人的修改结果都不会被丢失。独占模式 即采用了(lock-modify-unlock)在check out同时记录文件被导出者锁定,要求每个人都必须在改动文件之前做check out标志,并且标志了的文件无法被其他人同时进行修改。
  • 5. SVN简介-SVN的特性SVN有如下特性: 全局性的版本编号:每一次的修改产生的版本号并不针对某个特定的文件,而是全局性的、针对整个版本库的。因此,我们可以将Subversion 的版本库看作是一个文件系统或文件目录树的数组。 这种版本号的好处是无论涉及多少文件操作时,Subversion 不需要对单个文件依次执行拷贝命令,仅仅需要建立一个指向相应的全局版本号的一个指针即可。 注: 可以把该版本编号,看作是一次对仓库的变更集(changeset)的标识。因为通过该标识,你可以轻易的找出一次变更中有哪些文件或者目录发生了变更等变更信息。
  • 6. SVN的特性版本化的目录 :Subversion 象记录普通文件的修改历史一样记录对目录的修改历史,当发生文件/目录的移动、重命名或拷贝操作时,Subversion 能够准确记录操作前后的历史联系。同样,象对文件的不同历史版本进行比较一样,Subversion支持对目录的不同历史版本的比较,清晰展现目录的变化历史。 原子提交:Subversion 保证每一次提交的所有修改要么全部入库生效,要么一个也不入库,即对版本库不作任何的修改。 高效、快捷创建分支和基线:Subversion 的分支和基线是通过执行“拷贝”来建立的,真正的操作是在版本库中创建一个到某一全局版本号的指针(pointer),不再需要针对众多的单个文件依次执行操作;新建立的分支或基线基本不占用版本库空间。
  • 7. 培训内容SVN简介 SVN基本概念 SVN基本操作 SVN常见问题处理
  • 8. SVN 概念-仓库(Repository)仓库是一个管理单位,每个仓库都有自己的管理员。 仓库的创建只能由系统管理员在服务器上完成。 仓库不需要共享出来就可以提供访问。使用版本库的URL来连接版本库
  • 9. SVN 概念-SandboxSandbox就是SVN的本地工作区 通过checkout建立本地Sandbox SVN用户的几乎所有操作都是在Sandbox下进行的。 Sandbox每个文件夹下面都有一个.SVN的隐藏目录,存放SVNROOT信息,该目录的信息等
  • 10. SVN 概念-Checkout、CommitCheckout 中文名称:导出。指将仓库中的目录导出到本地的工作目录下,然后我们可以在SVN客户端工具的管理下进行工作。 Commit 中文名称:提交。我们在本地的工作目录下,对工程中的文件进行修改,这些修改,需要提交给SVN仓库,这个过程,就叫Commit。你可以Commit一个文件,也可以Commit整个目录。
  • 11. SVN目录结构说明创建完的SVN配置库一般有以下几个目录 Trunk Tag Branch 一般的配置库操作需要在Trunk下进行,分支版本在Branch中获取,标签操作的版本在Tag目录下
  • 12. 培训内容SVN简介 SVN基本概念 SVN基本操作 SVN常见问题处理
  • 13. SVN功能的简单介绍-check out&exportCheck out:检出服务器上的配置库; Export :这个功能是方便我们部署用。当我们需要发布一个稳定版本时,就可以使用这个功能将整个工程导出到某个文件夹,新的文件夹将不会包含任何版本信息了。Check outexport
  • 14. SVN功能的简单介绍-updateUpdate:服务器是最新版本更新下来。(配置库在本地已有工作拷贝)
  • 15. SVN功能的简单介绍-commitCommit :把自己工作拷贝所做的修改提交到版本库中。
  • 16. SVN功能的简单介绍-deleteDelete :SVN支持文件删除,而且操作简单,方便,选择要删除的 文件,点击Delete,再把删除操作提交到服务器
  • 17. (本页无文本内容)
  • 18. SVN功能的简单介绍-show logShow log:显示当前文件(夹)的所有修改历史。SVN支持 文件以及文件夹独立的版本追溯。
  • 19. SVN修改—Get lock对文件或者目录进行SVN Get lock 进行文件锁定。类似于VSS的checkout执行了锁定命令后会弹出如右图的窗口,提示哪些文件正准备进行锁定,OK后即开始进行锁定操作。如果该文件有其他人已经进行锁定,再锁定操作后会提示如右图错误,通知对方进行检入操作或者release lock操作后方可操作。而当另外一DE更新下来的文件是锁定状态,其文件状态为只读,只有当解锁后,重新锁定,这个过程才可将文件更改为可写 建议“无法灵活的合并”的文档采用SVN的“锁定-编辑-解锁”模型
  • 20. 如果要进行解锁的文件不是服务器上最新版本,系统会报以下错误并提示是否需要进行update,点yes后自动更新到最新版本,并且进行解锁操作SVN修改—Get lock
  • 21. 添加(Add) 如何把新的文件置于SVN管理在需要添加文件上选中右键菜单TortoiseSVN中的ADD… 选择需要添加的文件,OK即可将文件变成待添加状态… 所有的ADD都需要(包括目录)进行commit操作后才能生效。Commit操作同前 ADD操作是可以递归进行添加的
  • 22. 重命名(Rename)SVN中可以使用SVN的rename命令进行文件或者目录的重命名。 在Rename后需要进行commit生效
  • 23. SVN回滚打开文件或者目录的show log页面 选中历史版本,使用Revert to this Revision进行回滚 需要commit使回滚生效 ?选中想要恢复的版本。如果想要恢复一个版本范围,选中想要恢复的第一个版本,按住shift键,然后选中想要恢复的最后一个版本。注意,当恢复多个版本的时候,这些版本必须在列表中是连续的。用鼠标右键点击选中的版本(段),然后选择右键菜单 → 恢复这些版本的变更。 如果想要把以前的某个版本变成最新版本,右键点击选中的版本(范围),然后选择右键菜单 →Revert to this revision。就能够撤销被选中版本后面所有的变更。
  • 24. SVN还原(Revert& Moving ) 还原操作:如刚才对文件做了删除操作,现在把它还原回来,点击删除后,再点击提交,会出现如上的提示框,点击删除后,再点击Revert,即已撤销删除操作,如果这时候点击提交,则系统弹出提示框:没有文件被修改或增加,不能提交 移动操作:选择待移动的文件和文件夹;按住右键拖动right-drag文件(夹)到跟踪拷贝内的新地方;松开左键;在弹出菜单中选择movefilesinSubversiontohere◆Repo-browser 浏览版本库 ◆Check for modifications 检查出所有修改过的文件的信息 ◆Revision graph 图形化的版本显示
  • 25. SVN相关图标含义正常的目录或者文件出现冲突的文件或者目录有过修改的文件或者目录下的文件有修改只读的文件(需要获取锁定才能转成可修改文件)待添加的文件或者目录待删除的文件或者目录忽略的文件或者目录
  • 26. 培训内容SVN简介 SVN基本概念 SVN基本操作 SVN常见问题处理
  • 27. SVN-冲突处理当你Update出现了冲突时,Subversion会产生三个文件 ◆Filename.mine 文件名.ext.mine--最新修改 Filename.rOLDREV 文件名.ext.r旧版本--基础版本(BASErevision)文件 Filename.rNEWREV 文件名.ext.r新版本--版本库中的最新版本 有冲突的区域用如下的方式标记: <<<<<<<文件名你的修改=======合并自版本库中的代码>>>>>>>版本 三种方式解决: -手动解决:冲突发生时,通过和其他用户沟通之后,手动更新目标文件。然后执行svnresolvedfilename来解除冲突,最后提交。 -放弃自己的更新,使用别人的更新。使用最新获取的版本覆盖目标文件,执行svnresolvedfilename并提交。 -放弃自己的更新,使用svnrevert,然后提交。在这种方式下不需要使用svnresolved。 对于svnresolved命令需要非常小心,必须是非常确定冲突已经解决才能使用。否则,会导致Subversion以为冲突解决,而使代码库不正确。 (通过TortoiseSVN→编辑冲突运行外部合并工具/冲突编辑器,或者你可以使用任何别的编辑器手动解决冲突。 )
  • 28. 谢谢!
  • 29. 变更记录版本号变更日期变更内容作者1.02010-9-1新建王月梅