tdv录象集svn使用演示introduction_第1页
tdv录象集svn使用演示introduction_第2页
tdv录象集svn使用演示introduction_第3页
tdv录象集svn使用演示introduction_第4页
tdv录象集svn使用演示introduction_第5页
已阅读5页,还剩31页未读 继续免费阅读

付费下载

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、基于Subversion和TortoiseSVN的版本控制系统简单介绍王科2009-05-20什么是版本控制?版本控制就是对在软件开发过程中所创建的配置对象的不同版本进行管理,保证任何时候都能取到正确的版本以及版本的组合。摘自贝尔实验室配置管理的精髓版本控制(Version Control)是软件配置管理中的重要一环主要功能:记录开发过程的每一次修改,让开发工作可以随时检查过往的历史和获取正确的版本;是系统的“成长记录”。为什么要使用版本控制?在协同开发过程中,确保能够:保存所有更改的记录,防止改动丢失能够快速回复到特定版本的状态能够获取其他成员的更改在单独开发时,上述的前两点对于自己的开发过

2、程管理也有莫大的好处。版本控制的方式两种典型的方式:Lock-Modify-Unlock方式和Copy-Modify-Merge方式,分别以Visual Source Safe和CVS为代表Lock-Modify-Unlock方式:一个文件同一时刻只能有一个人进行修改,可防止冲突,但不利于合作开发;Copy-Modify-Merge方式:可以多人同时修改一个文件,会有冲突的情况,更强调开发人员的交流,对于合作开发比较合适;什么是Subversion?Subversion是一个开源的版本控制系统,拥有CVS的大部分特征,并在CVS的基础上有更强的扩展,用来代替 CVS 系统。Subversion

3、的历史单词“Subversion”的意义字面上的意义:Sub + Version,标识Subversion是一个版本控制系统。英语中有Subversion这个单词,意思是“颠覆” :Subversion要颠覆CVS的地位。CVS和Subversion的比较SubversionCVS版本号管理方式所有文件使用同一版本号每个文件有单独的版本号运行方式多种运行方式:1.作为操作系统的Demon(如Window Service)独立运行;2.作为开源Web服务器Apache的Web DAV运行;作为操作系统的Demon(如Window Service)独立运行传输协议file:/,http:/,htt

4、ps:/,svn:/,svn+ssh:/参见CVSRoot的定义对目录的版本管理对目录也同样进行版本管理无文件改名支持需要删除原文件,重新添加改名后的文件,改名后原文件的修改历史丢失。事务性提交是否Subversion与CVS相比改进的地方统一的文件版本目录控制:在Subversion中目录的变更也是受控的支持文件复制、重命名事务性的提交高效的分支和标记扩展能力:Subversion提供了一组API,可以供其他语言直接调用。使用上的主要不同Subversion的版本号是所有文件共用一个版本号,每一个个文件的改变都会导致总体版本号发生改变;Subversion的分支/标签都以文件夹的方式显示,而

5、不象CVS只是一个独立的标签;当作为Apache的Web DAV使用时,Subversion 使用Http协议传输,可以直接在Web浏览器中浏览;Windows平台Subversion服务器端的安装配置安装程序从 获取;在Windows平台直接执行安装程序进行安装;两种安装方式:方式一:类似CVS,作为独立服务运行,安装完成后运行如下命令运行Subversion:svnserve -d -r D:SVNStore;可以使用第三方的工具将Subversion添加为Windows的Service(参见 );方式二:将Subversion添加为Apache的Web DAV运行;这种方式对于Subve

6、rsion的控制和管理比较方便,但是配置相对比较麻烦。建议:个人使用或者对权限控制等要求不高时以独立服务的方式使用Subversion,当团队开发时使用Web DAV的方式使用Subversion。Subversion客户端TortoiseSVN的安装和设置获取安装文件从 下载;安装直接安装,安装完成后会自动集成在资源管理器的右键菜单中;注意事项:安装时“ASP_HACK”的选择,如果做 开发,安装时一定要选择该项。设置主要设置:语言全局忽略模式差异查看工具和合并工具文件叠加图标右键菜单(外观样式)Subversion相关软件服务器端:支持多种操作系统客户端:Subversion命令行程序Ra

7、pidSVN:独立的Windows程序,最新版本0.92,仍处于Beta阶段;TortoiseSVN:和资源管理器完美集成,基于TortoiseCVS的代码开发,使用上和TortoiseCVS极为相似;AnkhSVN:和Visual Studio集成,可以在Visual Studio中使用Subversion,仍处于开发过程中,最新版本0.60 Beta;功能尚不完善。Web浏览器:ViewCVS/ WebSVN等,网络程序,可在浏览器中查看SVN信息;Subversion的基本概念Repository(文件仓库)Workcopy(工作复本)Checkout(取出)Commit(提交)Upda

8、te(更新)Revision(修订版本)Tag(标签)Branch(分支)Conflict(冲突)Subversion的基本操作主要操作:在服务器端创建文件仓库从SVN文件库中取出代码把本地文件添加到文件仓库中从SVN中删除文件文件/目录改名提交修改后的文件更新本地文件比较不同版本的文件创建标签创建分支查看版本分支图在服务器端创建文件仓库(一) 文件仓库的创建功能:在Subversion服务器上创建文件仓库。操作步骤(在SVN服务器端进行):在要创建文件仓库的位置创建目录;在目录中创建文件库:命令行方式:svnadmin create D:SVNStore使用TortoiseSVN:资源管理器

9、的右键菜单TortoiseSVN在此创建文件库在服务器端创建文件仓库(二)文件仓库的结构Subversion的文件仓库一般包括如下三个目录:trunk,tags,branchesTrunk:最新的代码,相当于CVS中的Head版本;Tags:Subversion使用过程中创建的标签;Branches:保存Subversion的工作分支;Subversion文件仓库创建后需要先创建这三个目录,以方便以后的工作。把本地文件添加到文件仓库中功能:将客户端的文件添加到文件库中,使其接受SVN的控制。操作:在资源管理器中打开取出到本地的工作复本,选中要添加的文件,点击鼠标右键,在弹出菜单中选择“SVN

10、添加”;在弹出窗口中选择要添加的文件;点击OK,完成添加操作。从SVN文件库中取出代码功能:从SVN服务器中取出已有的代码,可以取出当前的最新代码或指定标签/分支的代码。操作:在资源管理器中点击鼠标右键,选择“SVN 取出”;输入要取出代码的文件库的URL地址;默认是取出主版本的代码,如果需要取出指定标签的代码,则在“版本” Group中指定;版本号的意义说明(非强制):主版本为1.x,x表示该文件的第x次修改;分支版本为1.x.y.z,表示该分支是在第1.x个主版本上建立的1.x.y分支,在该分支上进行了z次修改;从SVN中删除文件功能:将已经被废弃的文件中从SVN中删除;操作:在工作复本中

11、选中要删除的文件/文件夹,在右键菜单中选择“TortoiseSVN”“删除”;删除后需要提交才能够生效;说明:文件被删除后,该文件的所有修改历史仍然保存在SVN服务器中,以后仍然可以获得该文件的修改历史。对文件/目录进行改名功能:对文件/目录进行Subversion控制下的改名操作,用此功能对文件/目录进行改名后文件仍处于SVN的控制下并保持连续的变更信息。操作:在资源管理器中选中要改名的文件,右键“TortoiseSVN重命名”;输入新文件名,点击“确定”;对文件的重命名将在提交后起作用。注意:必须使用Subversion的重命名功能,直接在资源管理器中进行重命名SVN无法监控。提交新添加的

12、和修改后的文件功能:将在客户端的工作复本中对文件进行的修改提交到服务器中,使修改正式生效;提交后其他人即可获取你所作的修改。操作:选中进行了修改的文件,或选择某个目录(此时对该目录下包括子目录所有新添加的或进行过修改的文件进行提交操作);在在选中的文件上点击鼠标右键,选择“SVN提交”执行提交操作;在工作复本的文件夹的空白处点击鼠标右键和选中当前目录执行提交的效果一样。更新本地文件功能:获取其他用户对文件进行的修改,与自己对文件进行的修改进行合并,保证本地的文件总是最新的。操作:选中要更新的文件或文件夹,在右键菜单中选择“更新”;在资源管理器的空白处进行上述操作则对当前目录进行更新。更新时对不

13、同的人所做的修改会自动合并,如果无法自动合并则会发生冲突,需要手工用文件比较工具进行合并。说明:在团队开发时,更新是一件很重要的工作,可以保持团队成员之间的工作内容一致,因此要注意经常更新自己的工作复本,以保证自己能够获得最新的修改内容。比较不同版本的文件功能:对文件的不同版本进行比较,以确定不同版本之间所作的修改;或比较当前工作复本和服务器版本之间的修改;操作:比较工作复本和服务器版本的区别:选中要进行版本比较的文件,选择右键菜单中的“SVN比较差异”;比较不同版本之间的修改:需要在版本分支图中进行。创建标签/分支功能:标签:对SVN中一批文件的某个状态创建一个“快照”,用于标识标签创建时各

14、个文件的状态,方便以后可以随时找到正确的版本。分支:以主版本(Head)或现有的分支为基础创建一个和原版本并行开发,互相不受干扰的版本,用于解决已发布版本的Bug或进行试验性的开发;操作:选中要创建标签的文件/文件夹,在右键菜单中选择“TortoiseSVN”“分支/标签”;在弹出窗口中输入要创建的标签/分支的地址;地址组成规律如下:标签:文件库URL + “/tags/ “ + 标签名;分支:文件库URL + “/branches/ “ + 分支名;3.点击“确定”创建分支/标签;说明:标签或分支的名称一定要有描述性,可以仅凭名称说明为什么要创建标签;查看版本分支图功能:以图形方式直观地查看

15、单个文件的版本历史,对各个版本之间进行比较;操作:选中要查看版本分支图的文件(注意只能选择单个文件),在右键菜单中选择“TortoiseSVN”“版本分支图”;在弹出窗口中对版本分支图进行操作;SVN Blame功能:显示当前文件的信息(待确定)操作:在资源选择文件,右键菜单“TortoiseSVNBlame”;在分支上工作分支的意义如何在分支上工作在取出代码时取出指定分支即可,其他操作和在主版本上工作完全相同;在不同分支和主版本之间合并代码;其他技巧导出功能:使用此功能获取一个没有SVN控制信息的工作复本;清理:当Subversion操作中断时,会有一些残留的操作信息保留在工作复本中,这时需

16、要进行清理才能够重新进行工作;生成补丁文件:可以将自己所作的修改以补丁文件的方式交给他人,对于只有匿名访问的代码可以以这种方式提交修改;在资源管理器中显示文件的SVN信息:通过定制资源管理器的显示字段控制;在项目开发过程中的使用(一)管理员安装、配置SVN服务器,设置用户信息,创建文件库、模块;用户开始在SVN上工作,并随时将新的工作结果提交到SVN文件库上;同时用户随时更新自己本地的工作复本,以获得其他人的修改;当开发工作进行到一定阶段(里程碑)要发布版本(包括测试版本)时,在SVN中创建标签,标识当前发布版本的名称;如果有每日构建过程,可以按照日期每天创建一个标签;在项目开发过程中的使用(

17、二)创建标签和开发互不干涉,开发工作可以继续进行;当已发布的版本发现Bug时,可以从SVN中获取各次发布的版本进行比较,以确定是在什么版本引入的Bug;如果正在开发新版本时,发现旧版本存在Bug,可以在旧版本的基础上创建分支,在分支上修改旧版本的Bug,当旧版本上的Bug修改完成后,可以将该分支上的修改合并到主版本上来;从版本控制的角度来看,系统的开发过程就是不断地重复以上的过程;SVN使用中的常见问题提交时提示文件已经被修改,需要更新;原因:多人同时修改同一文件,在提交前其他人已经抢先提交到SVN服务器中,导致该错误;解决方法:对工作复本中的文件进行更新即可。更新时提示文件发生冲突;原因:多

18、人同时修改同一文件的同一部分,SVN无法自动进行合并,导致该错误;解决方法:对工作复本中的文件和服务器的文件进行比较,手工合并即可。使用SVN应该经常更新:由于文件可能有多个人修改,应该经常更新你的工作拷贝中的文件,这样能降低发生冲突的可能性;提交前先在本地进行测试:不允许将有错误的文件提交到服务器上;提交时一定要写备注:备注有助于其他人(包括三个月后的你自己)理解你对文件所做的修改;提交文件时注意要提交一项改动所对应的所有文件修改:如 开发中一个改动可能同时涉及.aspx文件、.aspx.cs文件和.resx文件,需要同时提交;对于每一个发布的版本都要建立标签:当用户告诉你发生某个问题时,你可以迅速地追踪到问题是在哪个版本引入的,如果有每日构建,甚至可以每天都建立一个标签;使用有意义的标签名/分支名;使用SVN不应该不提交自己的工作内容;提交时不写备注;不使用标签和分支;使用无意义的标签/分支名称;对不需要提交的文件(如临时文件)也提交到SVN中;SVN的缺点整个文件库共用一个版本号会造成大多数CVS使用者的困惑;一个问题:SVN的标签似乎没有和Branch做区别,也允许取出、编辑,这样做的原因不明。问题?相关

温馨提示

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

评论

0/150

提交评论