《第6讲版本控制管理工具1》由会员分享,可在线阅读,更多相关《第6讲版本控制管理工具1(53页珍藏版)》请在金锄头文库上搜索。
1、第第 6 讲讲版本控制管理工具(版本控制管理工具(1)本章目标本章目标q学习学习SVN常用指令常用指令q理解理解SubVersion权限管理所使用的权限管理所使用的3个文件个文件q了解了解TortoiseSVN通过不同的图标识别文件的版通过不同的图标识别文件的版本状态本状态q掌握掌握TortoiseSVN菜单的常用功能菜单的常用功能2本章内容q6.1 SubVersion6.1 SubVersionq6.2 TortoiseSVN6.2 TortoiseSVN3本章内容q6.1 SubVersion6.1 SubVersionq6.2 TortoiseSVN6.2 TortoiseSVN46.
2、1 SubVersion6.1 SubVersionqSubVersionSubVersion简称简称SVNSVN,是一个非常强大的文档版本,是一个非常强大的文档版本管理工具,具有和管理工具,具有和VSSVSS、CVSCVS基本相同的功能。基本相同的功能。qSVNSVN用于用于文档版本管理文档版本管理最为合适,因为它的使用方最为合适,因为它的使用方法非常接近于用户日常使用文件夹来管理文档的法非常接近于用户日常使用文件夹来管理文档的习惯。习惯。q不过不过SVNSVN没有图形化界面,需要使用控制台程序来没有图形化界面,需要使用控制台程序来运行。运行。56.1 SubVersion6.1 SubVe
3、rsionqSubVersionSubVersion和和VSSVSS一样,都是在客户端机器上存放一样,都是在客户端机器上存放一套副本文件供用户使用,用户直接修改本地的一套副本文件供用户使用,用户直接修改本地的副本文件,然后再将其更新到副本文件,然后再将其更新到SVNSVN数据库。数据库。q当多个文件分批次修改后,这些修改的信息并未当多个文件分批次修改后,这些修改的信息并未影响影响SVNSVN数据库,只相当于数据库,只相当于“预提交预提交”,只有进行,只有进行【CommitCommit】操作后,才把这些文件一起】操作后,才把这些文件一起“正式提正式提交交”SVN”SVN数据库。数据库。qSVNS
4、VN使用使用SVN:/SVN:/或或SVN+SSH:/SVN+SSH:/协议,也支持协议,也支持HTTP:/HTTP:/协议。本地访问支持。协议。本地访问支持。6什么是版本控制?什么是版本控制?q版本控制就是对在软件开发过程中所创建的配置对象的不同版本进行管理,保证任何时候都能取到正确的版本以及版本的组合。摘自贝尔实验室配置管理的精髓q版本控制(Version Control)是软件配置管理中的重要一环q主要功能:记录开发过程的每一次修改,让开发工作可以随时检查过往的历史和获取正确的版本;是系统的“成长记录”。7为什么要使用版本控制?为什么要使用版本控制?q在协同开发过程中,确保能够:q保存所
5、有更改的记录,防止改动丢失q能够快速回复到特定版本的状态q能够获取其他成员的更改q在单独开发时,上述的前两点对于自己的开发过程管理也有莫大的好处。8版本控制的方式版本控制的方式q两种典型的方式:Lock-Modify-Unlock方式和Copy-Modify-Merge方式,分别以Visual Source Safe和CVS为代表qLock-Modify-Unlock方式:一个文件同一时刻只能有一个人进行修改,可防止冲突,但不利于合作开发;qCopy-Modify-Merge方式:可以多人同时修改一个文件,会有冲突的情况,更强调开发人员的交流,对于合作开发比较合适;9什么是什么是Subvers
6、ionSubversion?qSubversion是一个开源的版本控制系统,拥有CVS的大部分特征,并在CVS的基础上有更强的扩展,用来代替 CVS 系统。qSubversion的历史q单词“Subversion”的意义u字面上的意义:Sub + Version,标识Subversion是一个版本控制系统。u英语中有Subversion这个单词,意思是“颠覆” :Subversion要颠覆CVS的地位。10CVSCVS和和SubversionSubversion的比较的比较11SubversionSubversion与与CVSCVS相比改进的地方相比改进的地方q统一的文件版本q目录控制:在Su
7、bversion中目录的变更也是受控的q支持文件复制、重命名q事务性的提交q高效的分支和标记q扩展能力:Subversion提供了一组API,可以供其他语言直接调用。12使用上的主要不同使用上的主要不同qSubversion的版本号是所有文件共用一个版本号,每一个个文件的改变都会导致总体版本号发生改变;qSubversion的分支/标签都以文件夹的方式显示,而不象CVS只是一个独立的标签;q当作为Apache的Web DAV使用时,Subversion 使用Http协议传输,可以直接在Web浏览器中浏览;13WindowsWindows平台平台SubversionSubversion服务器端的
8、安装配置服务器端的安装配置1.安装程序从获取;2.在Windows平台直接执行安装程序进行安装;3.两种安装方式:l方式一:类似CVS,作为独立服务运行,安装完成后运行如下命令运行Subversion:svnserve -d -r D:SVNStore;可以使用第三方的工具将Subversion添加为Windows的Service(参见http:/clanlib.org/mbn/svnservice/);l方式二:将Subversion添加为Apache的Web DAV运行;这种方式对于Subversion的控制和管理比较方便,但是配置相对比较麻烦。建议:建议:个人使用或者对权限控制等要求不高
9、时以独立服务的方式使用Subversion,当团队开发时使用Web DAV的方式使用Subversion。14SubversionSubversion客户端客户端TortoiseSVNTortoiseSVN的安装和设置的安装和设置q获取安装文件从下载;q安装直接安装,安装完成后会自动集成在资源管理器的右键菜单中;注意事项:安装时注意事项:安装时“ASP_HACK”的选择,如果做的选择,如果做ASP.Net开发,开发,安装时一定要选择该项。安装时一定要选择该项。q设置主要设置:1.语言2.全局忽略模式3.差异查看工具和合并工具4.文件叠加图标5.右键菜单(外观样式)15SubversionSub
10、version相关软件相关软件q服务器端:支持多种操作系统q客户端:uSubversion命令行程序uRapidSVN:独立的Windows程序,最新版本0.92,仍处于Beta阶段;uTortoiseSVN:和资源管理器完美集成,基于TortoiseCVS的代码开发,使用上和TortoiseCVS极为相似;uAnkhSVN:和Visual Studio集成,可以在Visual Studio中使用Subversion,仍处于开发过程中,最新版本0.60 Beta;功能尚不完善。qWeb浏览器:ViewCVS/ WebSVN等,网络程序,可在浏览器中查看SVN信息;16SubversionSub
11、version的基本概念的基本概念qRepository(文件仓库)qWorkcopy(工作复本)qCheckout(取出)qCommit(提交)qUpdate(更新)qRevision(修订版本)qTag(标签)qBranch(分支)qConflict(冲突)17SubversionSubversion的基本操作的基本操作主要操作:主要操作:q在服务器端创建文件仓库q从SVN文件库中取出代码q把本地文件添加到文件仓库中q从SVN中删除文件q文件/目录改名q提交修改后的文件q更新本地文件q比较不同版本的文件q创建标签q创建分支q查看版本分支图186.1 SubVersion6.1 SubVer
12、sionq6.1.1 SVN常用指令q6.1.2 SVN权限管理196.1.1 SVN常用指令q1. SVNAdmin create根据公司实际需要并按照软件配置管理计划,根据公司实际需要并按照软件配置管理计划,创创建所需要的建所需要的SVNSVN文档数据库文档数据库。比如:。比如:SVNSVN开发库和开发库和SVNSVN基线库等。基线库等。例如:例如:svnadminsvnadmin create create d:myrepositoryd:myrepository206.1.1 SVN常用指令q2. SVNserve当用户创建当用户创建SVNSVN文档数据库以后,应该先启动该数文档数据库
13、以后,应该先启动该数据库然后再进行其他操作。据库然后再进行其他操作。该命令就是该命令就是启动启动SVNSVN数据库数据库的重要指令,有很多参的重要指令,有很多参数可以使用,输入数可以使用,输入-help-help指令可以查看其参数列表。指令可以查看其参数列表。例如:例如:svnservesvnserve help help svnservesvnserved r d r g:svnrepg:svnrep/启动启动g g盘上的名为盘上的名为“svnrepsvnrep”的的SVNSVN数据库数据库21226.1.2 SVN6.1.2 SVN权限管理权限管理q1. svnserve.conf1. s
14、vnserve.conf:定义了定义了SVNSVN权限管理的策略权限管理的策略q2. passwd2. passwd:定义了访问定义了访问SVNSVN数据库的用户名和密数据库的用户名和密码码q3. Authz3. Authz:定义了定义了SVNSVN数据库中各目录结构的权限,数据库中各目录结构的权限,以及用户组的信息。以及用户组的信息。236.1.2 SVN6.1.2 SVN权限管理权限管理q1. svnserve.conf1. svnserve.conf:定义了:定义了SVNSVN权限管理的策略权限管理的策略# #:注释作用:注释作用anon-accessanon-access:定义匿名用户
15、访问:定义匿名用户访问SVNSVN数据库时的权限管数据库时的权限管理的策略理的策略auth-accessauth-access:定义授权用户访问:定义授权用户访问SVNSVN数据库时的权限管数据库时的权限管理的策略理的策略password-dbpassword-db:定义:定义SVNSVN数据库安全策略所用的数据库安全策略所用的passwordpassword文件的路径文件的路径authz-dbauthz-db:定义:定义SVNSVN数据库安全策略所用的数据库安全策略所用的authzauthz文件的文件的路径路径1)none:定义用户不可以访问数据库;:定义用户不可以访问数据库;2)write
16、:定义用户对数据库文件具有读写权限;:定义用户对数据库文件具有读写权限;3)read:定义用户对数据库文件只有读权限:定义用户对数据库文件只有读权限246.1.2 SVN6.1.2 SVN权限管理权限管理q2. passwd2. passwd:定义了访问定义了访问SVNSVN数据库的用户名和密数据库的用户名和密码码该文件记录了该文件记录了SVNSVN数据库授权用户的登录名和密码。数据库授权用户的登录名和密码。usersusers标签下定义了用户名和密码。等号前面的标签下定义了用户名和密码。等号前面的是用户名,后面的是密码。是用户名,后面的是密码。256.1.2 SVN6.1.2 SVN权限管理
17、权限管理q3. Authz3. Authz:定义了定义了SVNSVN数据库中各目录结构的权限,数据库中各目录结构的权限,以及用户组的信息。以及用户组的信息。groupsgroups标签下定义了用户组,前面加标签下定义了用户组,前面加用于区用于区分用户名。用户组等号后面是成员列表,用逗号分用户名。用户组等号后面是成员列表,用逗号隔开。隔开。定义文档目录的路径。如定义文档目录的路径。如/代表根目录代表根目录定义用户对目录的访问权限。定义用户对目录的访问权限。例如:例如:/MyprojectMyproject Jim=r Jim=r 表示表示JimJim可以读该目录可以读该目录 Jack= Jack
18、= 表示表示JackJack不可以访问该目录不可以访问该目录26本章内容q6.1 SubVersion6.1 SubVersionq6.2 TortoiseSVN6.2 TortoiseSVN276.2 TortoiseSVN6.2 TortoiseSVNqTortoiseSVNTortoiseSVN是配合是配合SVNSVN使用的客户端工具。它的使用的客户端工具。它的工作方式和日常使用文件夹保存文档的习惯相同。工作方式和日常使用文件夹保存文档的习惯相同。qTortoiseSVNTortoiseSVN实现了实现了SVNSVN的全部指令,弥补了的全部指令,弥补了SVNSVN缺缺少图形化操作界面的不
19、足。少图形化操作界面的不足。SVN(Subversion)简易入门教程简易入门教程.doc286.2 TortoiseSVN6.2 TortoiseSVNq建立建立SVNSVN数据库以后,在客户端需要使用数据库以后,在客户端需要使用SVN SVN CheckoutCheckout命令检出。命令检出。q在在SVNSVN控制下的每一层目录中都有一个控制下的每一层目录中都有一个隐藏的文隐藏的文件夹件夹。q当用户在客户端当用户在客户端SVNSVN文件夹中对文档进行变更,文件夹中对文档进行变更,这些变更信息首先存放在这个隐藏文件夹里。只这些变更信息首先存放在这个隐藏文件夹里。只有当用户执行有当用户执行C
20、ommitCommit操作时,才从隐藏文件夹里操作时,才从隐藏文件夹里读取文档变更的信息,并更新读取文档变更的信息,并更新SVNSVN服务器端的数服务器端的数据。据。29TortoiseSVN使用的不同文件状态的图标在本地新建文件在本地新建文件将本地文件添加到将本地文件添加到SVN数据库(未提交)数据库(未提交)处于正常状态的文件处于正常状态的文件处于修改状态的文件处于修改状态的文件被锁定的文件被锁定的文件30TortoiseSVN常用功能q1)Create repository该功能代替该功能代替SubVersionSubVersion的的SVNServeSVNServe指令来指令来创建创建
21、一个一个SVNSVN数据库数据库。SVNSVN提供提供2 2种数据库类型用于存放文档。一种是种数据库类型用于存放文档。一种是效率更高的效率更高的FSFSFSFS类型,另一种是较老但更稳定类型,另一种是较老但更稳定的的Berkeley Berkeley Database(BDBDatabase(BDB) )作为版本数据库的作为版本数据库的后台。后台。31TortoiseSVN常用功能q2)Import 初始化导入数据在你要导入到在你要导入到SVNSVN数据库的文件夹内右键点击数据库的文件夹内右键点击【TortoiseSVNTortoiseSVN-Import-Import】,URL of rep
22、ositoryURL of repository输输入相应的入相应的SVNSVN数据库地址,点击数据库地址,点击OKOK完成之后目录没有任何变化,如果没有报错,数完成之后目录没有任何变化,如果没有报错,数据就已经全部导入到了我们刚才定义的数据库中据就已经全部导入到了我们刚才定义的数据库中 。【Export】可以把可以把SVN数据库里的数据导入到指定的目录里。数据库里的数据导入到指定的目录里。32TortoiseSVN常用功能q3)SVN Checkout 将本地目录与SVN数据库对应目录关联起来。并且更新SVN数据库中的文档到本地目录。用户第一次连接用户第一次连接SVNSVN数据库时需要使用该
23、功能。数据库时需要使用该功能。33TortoiseSVN常用功能q4)Add将本地目录或者文件添加到SVN数据库中。在本地在本地SVNSVN相应目录下创建一个文件或者目录,右相应目录下创建一个文件或者目录,右键选择该文档或目录并点击键选择该文档或目录并点击【AddAdd】菜单,该文件菜单,该文件状态转为状态转为“AddAdd图标图标”。此时该文件并没有真正提。此时该文件并没有真正提交到交到SVNSVN数据库。数据库。当右键选择该文件,点击当右键选择该文件,点击【SVN CommitSVN Commit】菜单,菜单,才正式向才正式向SVNSVN数据库提交该文件。数据库提交该文件。34Tortoi
24、seSVN常用功能q5)SVN Update 获取SVN数据库中最新文档,相当于VSS中的【Get Latest Version】功能。右键点击右键点击SVNSVN客户端相应目录,并选择客户端相应目录,并选择【SVN SVN UpdateUpdate】菜单。弹出的对话框里会显示有哪些文菜单。弹出的对话框里会显示有哪些文件已经被更新到客户端。件已经被更新到客户端。35TortoiseSVN常用功能q6)Revert 在进行【Commit】之前,该功能可以取消对本地SVN数据库文档所做的任何改动,就像很多工具的【Undo】功能一样。右键选择某个修改后的文档或者某个文件夹,点右键选择某个修改后的文档
25、或者某个文件夹,点击击【RevertRevert】菜单,在弹出的对话框里勾选需要菜单,在弹出的对话框里勾选需要进行还原的文档列表,相应的文档将被还原。进行还原的文档列表,相应的文档将被还原。36TortoiseSVN常用功能q7)Show Log 可以查看SVN数据库中文档变更的历史记录。右键点击某个文档,选择右键点击某个文档,选择【Show LogShow Log】菜单,弹菜单,弹出该文档历史变更信息的列表。出该文档历史变更信息的列表。37TortoiseSVN常用功能q8)Update to Revision 追溯文档版本变更的历史记录,并可以获取之前任意版本的文档。右键选择某一文件点击右
26、键选择某一文件点击【Update to revisionUpdate to revision】菜单,在弹出提示框里点击菜单,在弹出提示框里点击【Show LogShow Log】按钮,按钮,选择需要还原到的版本,点击选择需要还原到的版本,点击【OKOK】,返回的提,返回的提示框里示框里RevisionRevision显示对应的版本号。点击显示对应的版本号。点击【OKOK】,即可还原到相应的历史版本。即可还原到相应的历史版本。38TortoiseSVN常用功能q9)Rename 对SVN数据库中的文档或目录进行重命名操作。该操作原理是将原文件复制一份并用新名称进行该操作原理是将原文件复制一份并用
27、新名称进行命名,然后将原文件进行删除。命名,然后将原文件进行删除。右键选择某一文档,点击右键选择某一文档,点击【RenameRename】菜单。进行菜单。进行重命名后,点击重命名后,点击【CommitCommit】菜单,即更新菜单,即更新SVNSVN数据数据库里的文档。库里的文档。39TortoiseSVN常用功能q10)Revision Graph 将文档之间的演变关系生成图表,使用户更清楚文档的变更过程。右键选择某个文档,点击右键选择某个文档,点击【Revision GraphRevision Graph】菜菜单,弹出对话框显示文档之间的关系。单,弹出对话框显示文档之间的关系。再右键点击某
28、个版本图例,选择再右键点击某个版本图例,选择【Show LogShow Log】菜菜单可以查看该版本的历史信息。单可以查看该版本的历史信息。40TortoiseSVN常用功能q11)Get Lock 为文档加锁,保护该文档不被其他用户修改。右键某个文档,点击右键某个文档,点击【Get LockGet Lock】菜单,弹出对菜单,弹出对话框显示哪些文件将被加锁,并输入加锁理由。话框显示哪些文件将被加锁,并输入加锁理由。对自己锁定的文档,还可以右键点击对自己锁定的文档,还可以右键点击【Release Release LockLock】进行解锁。进行解锁。41TortoiseSVN常用功能q12)D
29、iff 修改完本地文档,未进行【Commit】操作,该功能可以对比本次修改的内容与修改前有什么不同。42TortoiseSVN常用功能q13)Delete 删除本地文档或目录。该功能并没有真正删除文档或目录,只有再点击该功能并没有真正删除文档或目录,只有再点击【CommitCommit】菜单,才删除菜单,才删除SVNSVN数据库中对应的文档数据库中对应的文档或目录。或目录。43TortoiseSVN常用功能q14)Clear Up 更新客户端与服务器端的文档版本一致。当客户端文档版本与服务器不一致时,会使用黄当客户端文档版本与服务器不一致时,会使用黄色感叹号图标进行标示。用户可以使用色感叹号图
30、标进行标示。用户可以使用【Clear Clear UpUp】功能将客户端与服务器端更新一致。功能将客户端与服务器端更新一致。44TortoiseSVN常用功能q15)Settings 配置TortoiseSVN工具的系统参数。45在项目开发过程中的使用(一)q管理员安装、配置SVN服务器,设置用户信息,创建文件库、模块;q用户开始在SVN上工作,并随时将新的工作结果提交到SVN文件库上;q同时用户随时更新自己本地的工作复本,以获得其他人的修改;q当开发工作进行到一定阶段(里程碑)要发布版本(包括测试版本)时,在SVN中创建标签,标识当前发布版本的名称;q如果有每日构建过程,可以按照日期每天创建
31、一个标签;46在项目开发过程中的使用(二)q创建标签和开发互不干涉,开发工作可以继续进行;当已发布的版本发现Bug时,可以从SVN中获取各次发布的版本进行比较,以确定是在什么版本引入的Bug;q如果正在开发新版本时,发现旧版本存在Bug,可以在旧版本的基础上创建分支,在分支上修改旧版本的Bug,当旧版本上的Bug修改完成后,可以将该分支上的修改合并到主版本上来。从版本控制的角度来看,系统的开发过程就是不断地重复以从版本控制的角度来看,系统的开发过程就是不断地重复以上的过程。上的过程。47SVN使用中的常见问题q提交时提示文件已经被修改,需要更新;原因:原因:多人同时修改同一文件,在提交前其他人
32、已经抢先提交到SVN服务器中,导致该错误;解决方法:解决方法:对工作复本中的文件进行更新即可。q更新时提示文件发生冲突;原因:原因:多人同时修改同一文件的同一部分,SVN无法自动进行合并,导致该错误;解决方法:解决方法:对工作复本中的文件和服务器的文件进行比较,手工合并即可。48使用SVN应该q经常更新:由于文件可能有多个人修改,应该经常更新你的工作拷贝中的文件,这样能降低发生冲突的可能性;q提交前先在本地进行测试:不允许将有错误的文件提交到服务器上;q提交时一定要写备注:备注有助于其他人(包括三个月后的你自己)理解你对文件所做的修改;q提交文件时注意要提交一项改动所对应的所有文件修改:如AS
33、P.Net开发中一个改动可能同时涉及.aspx文件、.aspx.cs文件和.resx文件,需要同时提交;q对于每一个发布的版本都要建立标签:当用户告诉你发生某个问题时,你可以迅速地追踪到问题是在哪个版本引入的,如果有每日构建,甚至可以每天都建立一个标签;q使用有意义的标签名/分支名;49使用SVN不应该q不提交自己的工作内容;q提交时不写备注;q不使用标签和分支;q使用无意义的标签/分支名称;q对不需要提交的文件(如临时文件)也提交到SVN中;50相关网站qSubversion官方站点:qSubversion中文站点qTortoiseSVN:qRapidSVN:qAnkhSVN:51参考资料q官方资料(免费电子书):使用Subversion进行版本控制(Version Control with Subversion):qWindows下用subversion进行版本控制:qSubversion配置指南:qSubversion安装使用指南:q使用Subversion做.NET项目:qSubversion 后台服务:qTortoiseSVN使用手册:TortoiseSVN自带的帮助文件qGoogle:绝大部分问题在Google上都可以找到答案52Q & A53