1、Page 1/40第七章内容回顾第七章内容回顾vGCC是什么是什么v什么是什么是GDB第八章第八章源代码控制管理工具源代码控制管理工具预习检查预习检查v什么是版本控制什么是版本控制v什么是什么是Commit3Page 4/40本章目标本章目标能够:理解和掌握能够:理解和掌握SubversionSubversion的概念及配置的概念及配置能够:会使用能够:会使用TortioseSVNTortioseSVN客户端工具客户端工具Page 5/40本章结构本章结构什么是版本控制什么是版本控制 源代码控制管理源代码控制管理Unix/Linux的起源与发展的起源与发展Linux在企业中的应用在企业中的应用
2、Linux的安装方式的安装方式系统安装过程系统安装过程Linux的图形界面的图形界面服务器和客户端服务器和客户端Unix/Linux版本版本Subversion和和TortoiseSVN磁盘分区磁盘分区文件系统和目录结构文件系统和目录结构SubversionSubversion的基本操作的基本操作8-1-1 什么是版本控制?什么是版本控制?v版本控制就是对在软件开发过程中所创建的配置版本控制就是对在软件开发过程中所创建的配置对象的不同版本进行管理,保证任何时候都能取对象的不同版本进行管理,保证任何时候都能取到正确的版本以及版本的组合。到正确的版本以及版本的组合。摘自摘自贝尔实验室贝尔实验室配置
3、配置管理的精髓管理的精髓v版本控制(版本控制(Version Control)是软件配置管)是软件配置管理中的重要一环理中的重要一环v主要功能:记录开发过程的每一次修改,让开发主要功能:记录开发过程的每一次修改,让开发工作可以随时检查过往的历史和获取正确的版本;工作可以随时检查过往的历史和获取正确的版本;是系统的是系统的“成长记录成长记录”。8-1-2为什么要使用版本控制?为什么要使用版本控制?v在协同开发过程中,确保能够:在协同开发过程中,确保能够:n保存所有更改的记录,防止改动丢失n能够快速回复到特定版本的状态n能够获取其他成员的更改v在单独开发时,上述的前两点对于自己的开发过在单独开发时
4、,上述的前两点对于自己的开发过程管理也有莫大的好处。程管理也有莫大的好处。8-1-3 版本控制的方式版本控制的方式v两种典型的方式:两种典型的方式:Lock-Modify-UnlockLock-Modify-Unlock方式和方式和Copy-Modify-MergeCopy-Modify-Merge方式,分别以方式,分别以Visual Visual Source SafeSource Safe和和CVSCVS为代表为代表vLock-Modify-UnlockLock-Modify-Unlock方式:一个文件同一时刻方式:一个文件同一时刻只能有一个人进行修改,可防止冲突,但不利只能有一个人进行修
5、改,可防止冲突,但不利于合作开发;于合作开发;vCopy-Modify-MergeCopy-Modify-Merge方式:可以多人同时修改方式:可以多人同时修改一个文件,会有冲突的情况,更强调开发人员一个文件,会有冲突的情况,更强调开发人员的交流,对于合作开发比较合适;的交流,对于合作开发比较合适;8.1.4版本控制的几个术语版本控制的几个术语 v项目仓库项目仓库v工作拷贝工作拷贝v导入导入v检出检出v导出导出v提交提交v更新更新 RepositoryNetworkWorkingcopyWorkingcopyCheck out,updatecommitFredWilmaCheck out,up
6、datecommit8.1.4 版本库访问版本库访问 URL vSubversion 可以通过多种方式访问本地可以通过多种方式访问本地磁盘访问,或各种各样不同的网络协议,但一磁盘访问,或各种各样不同的网络协议,但一个版本库地址永远都是一个个版本库地址永远都是一个 URL,URL 方案方案反映了访问方法。反映了访问方法。8-2-1 拥有拥有CVSCVS的大部分特征,的大部分特征,并在并在CVSCVS的基础上有更强的扩展,用来代替的基础上有更强的扩展,用来代替 CVS CVS 系统。系统。v 单词单词“Subversion”Subversion”的意义的意义v 字面上的意义:字面上的意义:Sub+
7、VersionSub+Version,标识,标识SubversionSubversion是一个版本控制系统。是一个版本控制系统。v 英语中有英语中有SubversionSubversion这个单词,意思是这个单词,意思是“颠覆颠覆”:SubversionSubversion要颠覆要颠覆CVSCVS的地的地位位。8-2-1 CVS和和Subversion的比较的比较SubversionSubversionCVSCVS版本号管理方式版本号管理方式所有文件使用同一版本号每个文件有单独的版本号运行方式运行方式多种运行方式:1.作为操作系统的Demon(如Window Service)独立运行;2.作为
8、开源Web服务器Apache的Web DAV运行;作为操作系统的Demon(如Window Service)独立运行传输协议传输协议file:/,https:/,svn:/,svn+ssh:/参见CVSRoot的定义对目录的版本管理对目录的版本管理对目录也同样进行版本管理无文件改名文件改名支持需要删除原文件,重新添加改名后的文件,改名后原文件的修改历史丢失。事务性提交事务性提交是否8-2-1 Subversion与与CVS相比改进的地相比改进的地方方v统一的文件版本统一的文件版本v目录控制:在目录控制:在Subversion中目录的变更也是受中目录的变更也是受控的控的v支持文件复制、重命名支持
9、文件复制、重命名v事务性的提交事务性的提交v高效的分支和标记高效的分支和标记v扩展能力:扩展能力:Subversion提供了一组提供了一组API,可以,可以供其他语言直接调用。供其他语言直接调用。8-2-1使用上的主要不同使用上的主要不同vSubversion的版本号是所有文件共用一个版本的版本号是所有文件共用一个版本号,每一个个文件的改变都会导致总体版本号发号,每一个个文件的改变都会导致总体版本号发生改变;生改变;vSubversion的分支的分支/标签都以文件夹的方式显标签都以文件夹的方式显示,而不象示,而不象CVS只是一个独立的标签;只是一个独立的标签;v当作为当作为Apache的的We
10、b DAV使用时,使用时,Subversion 使用使用Http协议传输,可以直接在协议传输,可以直接在Web浏览器中浏览;浏览器中浏览;nSubversion命令行程序nRapidSVN:独立的Windows程序,最新版本0.92,仍处于Beta阶段;nAnkhSVN:和Visual Studio集成,可以在Visual Studio中使用Subversion,仍处于开发过程中,最新版本0.60 Beta;功能尚不完善。nWeb浏览器:ViewCVS/WebSVN等,网络程序,可在浏览器中查看SVN信息;8-3-1 Windows平台平台Subversion服务器端的安装配置服务器端的安装配
11、置1.1.安装程序从安装程序从subversion.tigris.orgsubversion.tigris.org获取;获取;2.2.在在WindowsWindows平台直接执行安装程序进行安装;平台直接执行安装程序进行安装;3.3.在服务器端创建文件仓库在服务器端创建文件仓库(两种安装方式两种安装方式)(1)mkdir c:svn-repos(1)mkdir c:svn-repos svnadmin create c:svnrepos (2)使用TortoiseSVN自动生成4.4.启动服务器启动服务器v方式一:类似方式一:类似CVSCVS,作为独立服务运行,安装完成后运行如下命令运行,作为
12、独立服务运行,安装完成后运行如下命令运行SubversionSubversion:start svnserve-daemon-root d:svn-reposstart svnserve-daemon-root d:svn-repos可以使用第三方的工具将可以使用第三方的工具将SubversionSubversion添加为添加为WindowsWindows的的ServiceService(参见(参见clanlib.org/mbn/svnservice/clanlib.org/mbn/svnservice/););v方式二:将方式二:将SubversionSubversion添加为添加为Apac
13、heApache的的Web DAVWeb DAV运行;这种方式对于运行;这种方式对于SubversionSubversion的控制和管理比较方便,但是配置相对比较麻烦。的控制和管理比较方便,但是配置相对比较麻烦。建议:个人使用或者对权限控制等要求不高时以独立服务的方式使用建议:个人使用或者对权限控制等要求不高时以独立服务的方式使用SubversionSubversion,当团队开发时使用,当团队开发时使用Web DAVWeb DAV的方式使用的方式使用SubversionSubversion。8-3-1配置用户和权限配置用户和权限 v进入项目仓库的进入项目仓库的conf目录目录v修改修改svn
14、serve.conf和和passwd文件文件8-3-1 以服务形式运行以服务形式运行svnservev以服务形式运行以服务形式运行svnserve v安装服务安装服务nsc create svnserve binpath=C:Program Filessvnservesvnserve.exe-service-root c:repos displayname=Subversion depend=tcpip start=autov删除服务删除服务nsc delete svnservice8-3-2 Subversion8-3-2 Subversion客户端客户端TortoiseSVNTortois
15、eSVN的安装和设置的安装和设置v获取安装文件获取安装文件 从从tortoisesvn.tigris下载;下载;v安装安装n直接安装,安装完成后会自动集成在资源管理器的右键菜单中;n完成后,提示要重启计算机,选择“否”,运行中文语言包程序完成后再重启计算机 注意事项:安装时注意事项:安装时“ASP_HACK”的选择,如果做的选择,如果做ASP.Net开发,安装时开发,安装时一定要选择该项。一定要选择该项。v设置设置n主要设置:语言1.全局忽略模式全局忽略模式2.差异查看工具和合并工具差异查看工具和合并工具3.文件叠加图标文件叠加图标4.右键菜单(外观样式)右键菜单(外观样式)8-4-1 Sub
16、version的基本概念的基本概念vRepository(文件仓库)(文件仓库)vWorkcopy(工作复本)(工作复本)vCheckout(检出)(检出)vCommit(提交或检入)(提交或检入)vUpdate(更新)(更新)8-4-2 Subversion的基本操作的基本操作主要操作:主要操作:把本地文件添加到文件仓库中把本地文件添加到文件仓库中 -初始文件导入初始文件导入 从从SVN文件库中取出代码文件库中取出代码 -检出检出 更新本地文件更新本地文件 文件文件/目录改名目录改名把文件和目录添加到文件仓库中把文件和目录添加到文件仓库中 从从SVN中删除文件中删除文件 提交修改后的文件提交
17、修改后的文件 -检入检入初始文件导入初始文件导入 svn import-m importing bb.svn:/192.168.1.112/bb从从SVN文件库中取出代码文件库中取出代码v功能:从功能:从SVNSVN服务器中取出已有的代码,可以取出当前的最服务器中取出已有的代码,可以取出当前的最新代码或指定标签新代码或指定标签/分支的代码。分支的代码。v操作:操作:1.1.在资源管理器中点击鼠标右键,选择在资源管理器中点击鼠标右键,选择“SVN SVN 取出取出”;2.2.输入要取出代码的文件库的输入要取出代码的文件库的URLURL地址;地址;3.3.默认是取出主版本的代码,如果需要取出指定标
18、签的代码,默认是取出主版本的代码,如果需要取出指定标签的代码,则在则在“版本版本”GroupGroup中指定;中指定;4.4.版本号的意义说明(非强制):主版本为版本号的意义说明(非强制):主版本为1.x1.x,x x表示该文表示该文件的第件的第x x次修改;分支版本为次修改;分支版本为1.x.y.z1.x.y.z,表示该分支是在第,表示该分支是在第1.x1.x个主版本上建立的个主版本上建立的1.x.y1.x.y分支,在该分支上进行了分支,在该分支上进行了z z次修次修改;改;worksvn checkout svn:/192.168.1.112/aaworksvn checkout svn:
19、/192.168.1.112/aa anewworksvn checkout-r 4 svn:/192.168.1.112/aa a4worksvn info aa更新本地文件更新本地文件v功能:获取其他用户对文件进行的修改,与自己对文件进行功能:获取其他用户对文件进行的修改,与自己对文件进行的修改进行合并,保证本地的文件总是最新的。的修改进行合并,保证本地的文件总是最新的。v操作:操作:1.1.选中要更新的文件或文件夹,在右键菜单中选择选中要更新的文件或文件夹,在右键菜单中选择“更新更新”;2.2.在资源管理器的空白处进行上述操作则对当前目录进行更新。在资源管理器的空白处进行上述操作则对当前
20、目录进行更新。3.3.更新时对不同的人所做的修改会自动合并,如果无法自动合更新时对不同的人所做的修改会自动合并,如果无法自动合并则会发生冲突,需要手工用文件比较工具进行合并。并则会发生冲突,需要手工用文件比较工具进行合并。v说明:说明:在团队开发时,更新是一件很重要的工作,可以保持团队成在团队开发时,更新是一件很重要的工作,可以保持团队成员之间的工作内容一致,因此要注意经常更新自己的工作复员之间的工作内容一致,因此要注意经常更新自己的工作复本,以保证自己能够获得最新的修改内容。本,以保证自己能够获得最新的修改内容。worka4svn update对文件对文件/目录进行改名目录进行改名v功能:对
21、文件功能:对文件/目录进行目录进行SubversionSubversion控制下的改名操作,控制下的改名操作,用此功能对文件用此功能对文件/目录进行改名后文件仍处于目录进行改名后文件仍处于SVNSVN的控制的控制下并保持连续的变更信息。下并保持连续的变更信息。v操作:操作:1.1.在资源管理器中选中要改名的文件,右键在资源管理器中选中要改名的文件,右键“TortoiseSVNTortoiseSVN重命名重命名”;2.2.输入新文件名,点击输入新文件名,点击“确定确定”;3.3.对文件的重命名将在提交后起作用。对文件的重命名将在提交后起作用。v注意:必须使用注意:必须使用SubversionSu
22、bversion的重命名功能,直接在资源的重命名功能,直接在资源管理器中进行重命名管理器中进行重命名SVNSVN无法监控。无法监控。对文件对文件/目录进行改名目录进行改名rootyft aa#svn move b.txt a.txtrootyft aa#svn commit-m Renamed b.txt to a.txt 把本地文件添加到文件仓库中把本地文件添加到文件仓库中v功能:将客户端的文件添加到文件库中,使其接受功能:将客户端的文件添加到文件库中,使其接受SVNSVN的控的控制。制。v操作:操作:1.1.在资源管理器中打开取出到本地的工作复本,选中要添加在资源管理器中打开取出到本地的工
23、作复本,选中要添加的文件,点击鼠标右键,在弹出菜单中选择的文件,点击鼠标右键,在弹出菜单中选择“SVN SVN 添加添加”;2.2.在弹出窗口中选择要添加的文件;在弹出窗口中选择要添加的文件;3.3.点击点击OKOK,完成添加操作。,完成添加操作。把本地文件添加到文件仓库中把本地文件添加到文件仓库中vrootyft aa#mkdir timelibvrootyft aa#svn add timelib/从从SVN中删除文件中删除文件v功能:将已经被废弃的文件中从功能:将已经被废弃的文件中从SVNSVN中删除;中删除;v操作:操作:1.1.在工作复本中选中要删除的文件在工作复本中选中要删除的文件
24、/文件夹,在右键菜单文件夹,在右键菜单中选择中选择“TortoiseSVN”“TortoiseSVN”“删除删除”;2.2.删除后需要提交才能够生效;删除后需要提交才能够生效;说明:说明:文件被删除后,该文件的所有修改历史仍然保存在文件被删除后,该文件的所有修改历史仍然保存在SVNSVN服务器中,以后仍然可以获得该文件的修改历史。服务器中,以后仍然可以获得该文件的修改历史。workaasvn delete b.txtworkaasvn commit-m Delete a.txt提交新添加的和修改后的文件提交新添加的和修改后的文件v功能:将在客户端的工作复本中对文件进行的修改提交到服务器中,使修
25、改功能:将在客户端的工作复本中对文件进行的修改提交到服务器中,使修改正式生效;提交后其他人即可获取你所作的修改。正式生效;提交后其他人即可获取你所作的修改。v操作:操作:1.1.选中进行了修改的文件,或选择某个目录(此时对该目录下包括子目录所有选中进行了修改的文件,或选择某个目录(此时对该目录下包括子目录所有新添加的或进行过修改的文件进行提交操作);新添加的或进行过修改的文件进行提交操作);2.2.在在选中的文件上点击鼠标右键,选择在在选中的文件上点击鼠标右键,选择“SVNSVN提交提交”执行提交操作;执行提交操作;3.3.在工作复本的文件夹的空白处点击鼠标右键和选中当前目录执行提交的效果在工
26、作复本的文件夹的空白处点击鼠标右键和选中当前目录执行提交的效果一样。一样。workaasvn updateworkaasvn commit-m check in message其他技巧其他技巧v导出功能:使用此功能获取一个没有导出功能:使用此功能获取一个没有SVNSVN控制信息控制信息的工作复本;的工作复本;v清理:当清理:当SubversionSubversion操作中断时,会有一些残留操作中断时,会有一些残留的操作信息保留在工作复本中,这时需要进行清的操作信息保留在工作复本中,这时需要进行清理才能够重新进行工作;理才能够重新进行工作;v生成补丁文件:可以将自己所作的修改以补丁文生成补丁文件
27、:可以将自己所作的修改以补丁文件的方式交给他人,对于只有匿名访问的代码可件的方式交给他人,对于只有匿名访问的代码可以以这种方式提交修改;以以这种方式提交修改;v在资源管理器中显示文件的在资源管理器中显示文件的SVNSVN信息:通过定制资信息:通过定制资源管理器的显示字段控制;源管理器的显示字段控制;在项目开发过程中的使用(一)在项目开发过程中的使用(一)v管理员安装、配置管理员安装、配置SVNSVN服务器,设置用户信息,创建服务器,设置用户信息,创建文件库、模块;文件库、模块;v用户开始在用户开始在SVNSVN上工作,并随时将新的工作结果提交上工作,并随时将新的工作结果提交到到SVNSVN文件
28、库上;文件库上;v同时用户随时更新自己本地的工作复本,以获得其同时用户随时更新自己本地的工作复本,以获得其他人的修改;他人的修改;v当开发工作进行到一定阶段(里程碑)要发布版本当开发工作进行到一定阶段(里程碑)要发布版本(包括测试版本)时,在(包括测试版本)时,在SVNSVN中创建标签,标识当前中创建标签,标识当前发布版本的名称;发布版本的名称;v如果有每日构建过程,可以按照日期每天创建一个如果有每日构建过程,可以按照日期每天创建一个标签;标签;在项目开发过程中的使用(二)在项目开发过程中的使用(二)v创建标签和开发互不干涉,开发工作可以继续进创建标签和开发互不干涉,开发工作可以继续进行;当已
29、发布的版本发现行;当已发布的版本发现BugBug时,可以从时,可以从SVNSVN中获中获取各次发布的版本进行比较,以确定是在什么版取各次发布的版本进行比较,以确定是在什么版本引入的本引入的BugBug;v如果正在开发新版本时,发现旧版本存在如果正在开发新版本时,发现旧版本存在BugBug,可,可以在旧版本的基础上创建分支,在分支上修改旧以在旧版本的基础上创建分支,在分支上修改旧版本的版本的BugBug,当旧版本上的,当旧版本上的BugBug修改完成后,可以修改完成后,可以将该分支上的修改合并到主版本上来;将该分支上的修改合并到主版本上来;从版本控制的角度来看,系统的开发过程就是不从版本控制的角
30、度来看,系统的开发过程就是不断地重复以上的过程;断地重复以上的过程;SVN使用中的常见问题使用中的常见问题v提交时提示文件已经被修改,需要更新;提交时提示文件已经被修改,需要更新;原因:多人同时修改同一文件,在提交前其他人已经抢先提交到原因:多人同时修改同一文件,在提交前其他人已经抢先提交到SVN服务器中,导服务器中,导致该错误;致该错误;解决方法:对工作复本中的文件进行更新即可。解决方法:对工作复本中的文件进行更新即可。v更新时提示文件发生冲突;更新时提示文件发生冲突;原因:多人同时修改同一文件的同一部分,原因:多人同时修改同一文件的同一部分,SVN无法自动进行合并,导致该错误;无法自动进行
31、合并,导致该错误;解决方法:对工作复本中的文件和服务器的文件进行比较,手工合并即可。解决方法:对工作复本中的文件和服务器的文件进行比较,手工合并即可。使用使用SVN应该应该v 经常更新:由于文件可能有多个人修改,应该经常更新你的工作拷贝中的经常更新:由于文件可能有多个人修改,应该经常更新你的工作拷贝中的文件,这样能降低发生冲突的可能性;文件,这样能降低发生冲突的可能性;v 提交前先在本地进行测试:不允许将有错误的文件提交到服务器上;提交前先在本地进行测试:不允许将有错误的文件提交到服务器上;v 提交时一定要写备注:备注有助于其他人(包括三个月后的你自己)理解提交时一定要写备注:备注有助于其他人
32、(包括三个月后的你自己)理解你对文件所做的修改;你对文件所做的修改;v 提交文件时注意要提交一项改动所对应的所有文件修改:如提交文件时注意要提交一项改动所对应的所有文件修改:如ASP.NetASP.Net开发中开发中一个改动可能同时涉及一个改动可能同时涉及.aspx.aspx文件、文件、.aspx.cs.aspx.cs文件和文件和.resx.resx文件,需要同时文件,需要同时提交;提交;v 对于每一个发布的版本都要建立标签:当用户告诉你发生某个问题时,你对于每一个发布的版本都要建立标签:当用户告诉你发生某个问题时,你可以迅速地追踪到问题是在哪个版本引入的,如果有每日构建,甚至可以可以迅速地追
33、踪到问题是在哪个版本引入的,如果有每日构建,甚至可以每天都建立一个标签;每天都建立一个标签;v 使用有意义的标签名使用有意义的标签名/分支名;分支名;使用使用SVN不应该不应该v不提交自己的工作内容;不提交自己的工作内容;v提交时不写备注;提交时不写备注;v不使用标签和分支;不使用标签和分支;v使用无意义的标签使用无意义的标签/分支名称;分支名称;v对不需要提交的文件(如临时文件)也提交到对不需要提交的文件(如临时文件)也提交到SVN中;中;SVN的缺点的缺点v整个文件库共用一个版本号会造成大多数整个文件库共用一个版本号会造成大多数CVS使使用者的困惑;用者的困惑;v一个问题:一个问题:SVN
34、的标签似乎没有和的标签似乎没有和Branch做区做区别,也允许取出、编辑,这样做的原因不明。别,也允许取出、编辑,这样做的原因不明。参考资料参考资料v官方资料(免费电子书):使用官方资料(免费电子书):使用Subversion进行版本控制进行版本控制(Version Control with Subversion):svnbook.red-bean/vWindows下用下用subversion进行版本控制进行版本控制:luhengqi/read.php/23.htmvSubversion配置指南:配置指南:my.opera/bluewish/show.dml/220795vSubversion
35、安装使用指南:安装使用指南:cube316/archives/201912/32v使用使用Subversion做做.NET项项目:目:.joycode/cavingdeep/archive/2019/03/22/46209.aspxvSubversion 后台服务:后台服务:shengfang.org/p/0112subversionSVNServicesvnserve.phpvTortoiseSVN使用手册:使用手册:TortoiseSVN自带的帮助文件自带的帮助文件vGoogle:绝大部分问题在:绝大部分问题在Google上都可以找到答案上都可以找到答案参考网站:参考网站:vSubversion官方站点:官方站点:subversion.tigris.orgvSubversion中文站点中文站点subversion.orgvTortoiseSVN:tortoisesvn.tigrisvRapidSVN:rapidsvn.tigrisvAnkhSVN:ankhsvn.tigrisPage 40/40实验实验v实验一:实验一:Page 41/40实验实验1v注意事项注意事项n提示1:Page 42/40实验实验2v注意事项注意事项n提示1:
侵权处理QQ:3464097650--上传资料QQ:3464097650
【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。