《TortoiseSVN-1.6.9.19725-win32的教程》由会员分享,可在线阅读,更多相关《TortoiseSVN-1.6.9.19725-win32的教程(68页珍藏版)》请在金锄头文库上搜索。
1、Subversion版本控制系统的使用,为什么需要版本控制系统?,一个软件项目的开展,是个分工合作的过程,单打独斗的时代已经过去。当你的代码想要进行大幅度修改,但是又没有把握成功怎么办?(把原来的版本复制一份做备份?)当某人写了一个模块的新代码,其他成员如何获得?(文件共享?QQ 传过去?)当两个成员想同时修改一个程序文件怎么办?(怎么处理?谁说了算?),相信大家都经常这么做吧,为什么需要版本控制系统?,程序员编写程序的过程中,每个程序都会生成很多不同的版本这就需要程序员能有效的管理代码,在需要的时候可以迅速、准确取出相应的版本任何需要管理信息频繁改变的地方都需要它,这就是 版本控制系统 的舞
2、台,版本控制,版本控制是管理信息变更的一门艺术对于经常对代码改来改去的程序员来说,它已是不可缺少的工具但版本控制软件的用途并不仅限于软件开发的领域。只要人们使用计算机来管理经常变更的信息,就可以使用版本控制工具代码,文档,系统配置文件,图片,音乐,Outline,Subversion 简介Subversion 的安装版本控制中的基本概念Subversion 常用功能讲解,什么是 Subversion ?,什么是 Subversion?,Subversion 是一个自由/开源的版本控制系统,前身为 CVS,简称 SVNSVN 将一组文件存放在中心版本库, 并记录每一次文件和目录的修改, 这个版本
3、库很像像 Windows 文件共享,其他人可以通过网络访问最新的文件不同的是,它可以记录每一次文件和目录的修改情况!,什么是 Subversion?,Subversion 的版本库可以通过网络来访问,允许不同的用户在不同的计算机上使用,而且跨平台不同的使用者可以进行协同工作;而且所有工作都是有记录的,如果有错只要撤销就可以就像 “时间机器” ,可以回到过去任何时刻就像拥有一个可以无限 Undo 的编辑器,Subversion 的体系结构,典型的 Client/Server 结构服务器存放版本数据库(版本库)客户端通过网络访问数据,并管理代码的本地映射(称为“工作副本”),Subversion
4、的安装配置,Subversion 的安装,安装 Subversion 的最简单的方法就是下载适合于你的操作系统的二进制软件包apt-get install subversionSVN服务器端, 客户端哪个先装都可以个人使用可以不需要安装服务器端Subversion 官网(配置服务器端需要)http:/subversion.tigris.orgTortoiseSVN 客户端,Subversion 的组件,常用的组件是 svn 和 svnadmin,有图形化客户端来实现 svn 和 svnadmin 功能svn一个命令行的客户端程序svnadmin用来创建或者是修复版本库的工具,svn 客户端,S
5、ubversion 的组件,mod_dav_svn Apache 服务器的一个插件模块,用来使其他人可以通过 http 协议访问这个版本库 svnserve 一个定制的、独立的 Subversion 服务程序可作为一个驻留进程运行或者是由 SSH 调用使版本库可以通过私有的 svn 协议访问,TortoiseSVN 客户端,Windows 系统客户端图形化界面,集成了 svn 和 svnadmin 命令行工具的功能集成于资源管理器功能中,使用方便,易于掌握直接安装,方法同一般软件安装相同http:/ TortoiseSVN,有中文语言包安装完后进行一下语言配置,安装合并比较工具,合并比较工具
6、(Merge 软件)在开发中用于查看两个文件/目录的差异开源的WinMergeTortoiseMerge( TortoiseSVN 自带)商业的Araxis MergeBeyond Compare Professional,设置合并/比较工具,练习,TortoiseSVN 已安装在计算机上,请用右键调出 TSVN 的菜单,进入 Setting 查看一下今天先不用安装额外的 Merge 工具,使用自带的 TortoiseMergeSubversion 与 Araxis Merge ftp:/ SVN 在跨平台多人协作开发时的使用方法在多个程序员管理同一段代码的过程中,版本的管理显得尤为重要,使用
7、 SVN 可以方便的进行分支、合并,记录下所有的版本,Subversion 快速入门,单人的工作流程,创建版本库 Create Repository导入版本库 Import初始化的 Checkout,创建工作拷贝开始工作提交修改,基本术语:版本库 Repository,Subversion 版本库可以记录写入版本库的每一次更改这些更改包括对每一个文件的每一次修改也可以是对目录本身的修改,例如添加文件、删除文件和对文件和目录的重新命名版本控制系统的核心:记录和跟踪数据的修改历史,基本术语:版本库 Repository,就像一个网络上的共享文件夹/数据库客户端可以连接到版本库,读写这些文件通过写,
8、 别人可以看到你做的修改;通过读数据, 可以看到别人的修改,1、创建版本库,创建一个空文件夹用于存放版本库,比如 svnrepo在文件夹上右键 TSVN - Create Repository here,访问版本库,Subversion 可以通过多种协议访问版本库版本库地址是一个 URL 格式比如file:/C:/svnrepo/myproject/trunkhttp:/ file:/ 访问本机的版本库,版本库浏览器,在版本库上右键,TSVN-Repo-Browser初始状态下,仓库为空,2、初始导入,导入前SVN版本库的负责人要先规划好版本库的目录结构,然后将初始代码导入库中一般每个项目下面
9、建立3个子目录trunk开发的主干branches开发的分支tags重要版本记录将项目最初的代码放在 trunk 目录下注意,导入仓库前先清理掉无关的文件,需要忽略的文件,在TSVN 的Setting的General中,可以设置需要忽略的文件以便SVN忽略掉一些临时的、无用的文件常被忽略的文件后缀有*.opt *.ncb *.suo *.plg *.pch *.idb *.pdb *.scc *.obj Debug Release *.o *.bin *.out *.ilk *.aps *.clw *.bak每个程序员可以根据自己的需要进行修改忽略文件,上面只是使用 VC+ 编程时常用的一些忽
10、略文件列表,初始导入,右键-TortoiseSVN-Import.,初始导入,完成之后目录没有任何变化如果没有报错,数据就已经全部导入到了刚才定义的版本库中,3、检出 Checkout,检出的目的是创建本地的工作拷贝记住从 trunk 子目录导出,不要将整个版本库导出接下去就可以在工作拷贝上开始你的工作,基本概念:工作拷贝 Working Copy,一个Subversion工作拷贝是版本库中的文件在本地计算机上的一个拷贝你的工作就在工作拷贝上进行一个用户的工作拷贝往往对应版本库的一个子目录,基本概念:工作拷贝 Working Copy,工作拷贝除了包含项目文件之外,还包含了一个.svn目录,叫
11、做工作拷贝管理目录这个目录里的文件能够帮助 Subversion 识别哪一个文件被你做过修改,哪一个文件相对于别人的工作已经过期了,检出 Checkout,点击右键-Checkout,在URL of repository中输入刚才导入的URL路径,这样我们就得到了一份工作拷贝注意:应检出 trunk 目录下的内容,进行开发工作,检出完成后,就可以在工作拷贝上进行你的开发工作当开发的一个阶段完成后,可以将你做的修改重新放回版本库这就是提交操作,4、提交 Commit,将你在工作版本上所做的更新提交到版本库中注意:不需要把系统的临时文件或是可以由程序再度生成的文件提交给版本库比如应该提交的是 Ti
12、mer.java,而不是Timer.class, Timer.java.bak,,在机上创建一个版本库创建一个目录作为初始导入目录,在里面规划好项目的目录结构放入一些项目文件,完成初始导入通过检出操作生成一个工作拷贝对工作拷贝中的文件做一些修改提交所做的修改,然后继续修改,更复杂的情况,如果你是自己完成项目,比如独立做家庭作业,那到这里就够了但如果是项目组合作,就有2个新的问题:如何获得别人对程序进行的更新?两个人同时编缉一个文件怎么办?,多人合作开发流程,多人协作时的工作流程,对工作拷贝做出修改对代码的修改文件和目录的修改(创建,删除,拷贝,移动/重命名)svn add,delete,cop
13、y,move更新 Updatesvn update合并冲突(如果有的话)并测试提交你的修改 Commit,对工作拷贝做修改,对代码内容的修改对文件和文件夹的修改(创建,删除,拷贝,移动/重命名)注意:拷贝,移动和重命名要通过subversion 的客户端进行,不要用Windows 的资源管理器来进行,否则之前的版本信息会丢失,对工作拷贝做修改,使用SVN删除、移动与重命名文件夹的方法是在文件/文件夹上点右键进行SVN操作,或直接在资源浏览器中使用右键拖放(会弹出SVN选项),或者在 repo-browser 中进行文件的删除、移动与重命名之前,必须保证工作目录是最新的版本;进行这些操作之后,需
14、要立刻进行提交,更新 Update,检查在你工作的这段时间内,版本库中是否有别人所作的新修改三种情况别人和你修改的是不同文件别人和你修改的是同一个文件的不同部分(比如他修改了开头,你修改了结尾)别人和你修改的是同一个文件的同一个部分建议一个小时更新一次,更新 Update,如果版本库在你提交之前有过更新,SVN会阻止你提交,让你先进行更新,处理冲突,如果两个人同时编辑一个文件,会发生什么情况?别人和你修改的是同一个文件的不同部分(比如他修改了开头,你修改了结尾)Subversion 会自动帮你合并差异别人和你修改的是同一个文件的同一个部分(冲突)需要你自己动手解决冲突,更新时 Subversi
15、on 会自动合并差异,手动解决冲突,发生冲突的时候,SVN 会为你标注出冲突的地方遇到这种情况,只有人本身才有能力理解和做出合理的选择。注意,软件并不能自动解决冲突冲突的解决依赖于项目组内部的交流,手动解决冲突,进行更新后,SVN会标识出冲突的位置,基础概念:修订版本 Revision,每次对版本库做一次修改,版本库中的文件系统目录都会创建一种新的状态,叫做一个修订版本每一个修订版本都被赋予一个唯一的自然数,并且每一个修订本的数字都比前一个要大。刚刚建立的版本库的初始的版本是0,只包含一个空的根目录。,基础概念:修订版本 Revision,Subversion 的修订版编号是针对整个目录树的,而不是某一个独立的文件HEAD表示最新的修订版本,手动解决冲突,手工修改了冲突的地方后,删掉冲突时的临时文件,可以再次进行提交,接下去,处理完冲突,就可以提交你的工作然后就下班了等所有人都下班了,计算机进行自动构建自动测试自动提交bug到缺陷跟踪系统自动部署,敏捷开发相关技术,版本控制单元测试持续集成缺陷跟踪知识共享,第二天,svn update查看计算机提交的bug列表开始新一天的工作结束一天工作时记得 svn commit,