使用SVN来进行版本管理.ppt

上传人:本田雅阁 文档编号:3109093 上传时间:2019-07-09 格式:PPT 页数:50 大小:1.16MB
返回 下载 相关 举报
使用SVN来进行版本管理.ppt_第1页
第1页 / 共50页
使用SVN来进行版本管理.ppt_第2页
第2页 / 共50页
使用SVN来进行版本管理.ppt_第3页
第3页 / 共50页
使用SVN来进行版本管理.ppt_第4页
第4页 / 共50页
使用SVN来进行版本管理.ppt_第5页
第5页 / 共50页
点击查看更多>>
资源描述

《使用SVN来进行版本管理.ppt》由会员分享,可在线阅读,更多相关《使用SVN来进行版本管理.ppt(50页珍藏版)》请在三一文库上搜索。

1、组员及分工,第16组成员名单: 0443111023 覃长洪 0443111367 牟雅丹 0443111336 王 静 0443111197 罗俊鑫 0443111197 卢 怡 0443111143 杨 谦 0443111176 张 觅 作业分工: 1.Use UML to model the Gourmet Coffee System 杨谦 张觅 罗俊鑫 覃长洪 2. Using SVN for code version management 覃长洪 牟雅丹 王静 卢怡,使用SVN来进行版本管理,覃长洪 牟雅丹 王 静 卢 怡,一. 简 介,为什么要使用SVN? 程序员编写程序的过程中,

2、每个程序都会生成很多不同的版本. 这就需要程序员能有效的管理代码,在需要的时候可以迅速,准确取出相应的版本 任何需要管理频繁信息改变的地方都需要它,这就是Subversion的舞台,1.1 Subversion是什么?,Sub Version(简称SVN)是版本管理工具 Subversion是一个自由/开源版本控制系统 一组文件存放在中心版本库, 记录每一次文件和目录的修改 Subversion可以通过网络访问它的版本库,1.2 Subversion的特性,版本化的目录 Subversion实现了一个可以跟踪目录树更改的“虚拟”版本化文件系统 真实的版本历史 可以新增一个具有干净历史的文件 原

3、子提交 可以让用户构建一个要提交修改的逻辑块,防止部分修改提交到版本库 版本化的元数据 每一个文件或目录都有一套属性键和它们的值,Subversion的特性(续),可选的网络层 在版本库访问方面有一个抽象概念,利于人们去实现新的网络机制 一致的数据操作 文件是建立在二进制文件区别算法基础上的 有效率的分支和标签 建立分支与标签时只是拷贝整个工程,使用了一种类似于硬链接的机制 可修改性 由一系列良好的共享C库实现,具有定义良好的API,1.4. 1安装Subversion,SVN服务器端,客户端哪个先装都可以.我的安装路径为是: 服务端:C:Program FilesSubversion 客户端

4、:C:Program FilesTortoiseSVN 服务端安装好后软件会自动在系统的环境变量中增加相应的值,安装完成可以在cmd命令行中输入”svnadmin help”来测试能否运行,1.4.2 部署存储库并运行服务端,建立SVN的存储库,路径以D:SVNRepo为例,创建完该文件后,就进行Windows的服务绑定,以便以后每次重启机器后都能自动运行,这里用到的是Windows自带的创建服务的命令sc,在命令行模式下执行: sc create SVNService binpath= “C:Program FilesSubversionbinsvnserve.exe -service -r

5、 D:SVNRepo“ displayname= “SVNService“ depend= Tcpip start= auto,在提示建立成功后,可以直接输入“net start SVNService”来启动服务,或者可以直接在“管理工具”的“服务”中直接启动。,1.4.3创建项目以及配置访问权限,进到D:SVNRepo目录下,新建一个仓库文件夹repository 进入 D:SVNReporepository下,鼠标右键选择TotoiseSVN-Create Repository here.进行创建 创建之前保证该目录下没有任何的文件夹和文件.,创建成功后会在里面自动生成几个文件夹:dav目

6、录是提供给Apache与mod_dav_svn使用的目录,让它们存储内部数据;db目录就是所有版本控制的数据文件;hooks目录放置hook脚本文件的目录;locks用来放置Subversion文件库锁定数据的目录,用来追踪存取文件库的客户端;format文件是一个文本文件,里面只放了一个整数,表示当前文件库配置的版本号;conf存放的是配置文件.,访问权限的设置方法,在conf目录下,打开svnserve.conf,设置如下: general anon-access = none (匿名用户的权限) autn-access = write (经授权的用户的权限) password-db =

7、passwd (指定授权用户的密码存放文件),在同一目录下打开passwd,也就是上面设置的,也可以重命名,设置如下: users user1 = pass1 这里指定授权访问用户名和密码,格式为: 用户名 = 密码 接下来就可以开始使用TotoiseSVN进行Import、Update、Checkout、Commit等操作了。,二. 基 本 概 念,Subversion是一种集中的分享信息的系统,它的核心是版本库 它储存所有的数据,版本库按照文件树形式储存数据包括文件和目录. 任意数量的客户端可以连接到版本库,读写这些文件. 通过写,别人可以看到这些信息,通过读数据,可以看到别人的修改,2.

8、2 文件共享的问题,2.3. 锁定-修改-解锁 方案,锁定-修改-解锁模型缺点,锁定可能导致管理问题 锁定可能导致不必要的线性化开发 锁定可能导致错误的安全状态,2.4.拷贝-修改-合并 方案,3版本管理,我们使用Sub Version(简称SVN)作为版本管理工具。这里着重介绍SVN作为跨平台的多人协作使用方法。 在多个程序员管理同一段代码的过程中,版本的管理显得尤为重要,使用SVN可以方便的进行分支、合并,记录下所有的版本。,3.1.1忽略文件,在SVN 的Setting的General中,设置需要忽略的文件以便忽略掉一些临时的、无用的文件,常被忽略的文件有*.opt *.ncb *.su

9、o *.plg *.pch *.idb *.pdb *.scc *.obj Debug Release *.o *.bin *.out *.ilk *.aps debug release *.clw *.bak.每个程序员可以根据自己的需要进行修改忽略文件,上面只是使用VC+与Tornado编程时常用的一些忽略文件。,以上说的忽略文件是指全局的忽略文件。SVN还能在特定的目录中指定需要忽略的文件。忽略文件支持通配符。,3.1.2合并比较工具,在Merge Tool中可以选择用来合并的工具,推荐用Araxis Merge. 在Setting-Diff中填“C:Program FilesAraxi

10、sAraxis Merge v6.5Merge.exe “;在Setting-Merge的选项中,填入“C:Program FilesAraxisAraxis Merge v6.5Merge.exe“ %theirs %mine %merged ; 其中“C:Program FilesAraxisAraxis Merge v6.5Merge.exe“是指合并工具的路径,%theirs %mine %merged分别指将要合并到主干的分支,主干,及合并后的结果。,3.2 项目基本流程,一个项目会有多个人共同合作开发完成。基本流程是: 1.各开发成员建立自己的分支,并在此分支上开发; 2.各开发成

11、员把分支合并到主干上并形成较为稳定的版本; 3.各个成员重新从主干上建立新的分支,在此分支上开发(即回到第一步) ; 4.循环往复,直到工程结束。,3.3 代码的版本管理,运行独立服务器 在任意目录下运行:svnserve -d -r D:svndemorepository ,服务器程序就已经启动了。,3.3.2.初始化导入,在codetrunk目录下创建一个hello.c文件 #include void main() printf(“Hello World!n“); 来到将导入的项目根目录,这里是D:svndemoinitproject,右键-TortoiseSVN-Import.,URL

12、of repository输入“svn:/localhost/ ”,输入用户名和密码,完成之后目录没有任何变化,如果没有报错,数据就已经全部导入到了刚才定义的版本库中。,3.3.3.仓库目录结构,仓库的一级目录只有两个,分别为code和doc。其中,doc主要用来放置先期的文档,code主要用来放置工程的代码,也可以包含后期的文档。 仓库的二级目录只可以是branch与trunk两个目录,分别存放主干与分支。trunk目录下直接存放工程文件。branch目录下包括一些子目录分别对应各个分支。,工作目录空白处鼠标点击鼠标右键 TortoiseSVN Repo-browser 可以看到仓库浏览器,

13、3.3.4.基本客户端操作,取出版本库到一个工作拷贝:来到任意空目录下,在本例中是D:SVNRepowc1,点击右键-Checkout,在URL of repository中输入svn:/localhost/code/trunk,这样我们就得到了一份工作拷贝。,注意:从SVN仓库中取出代码时,一定不要把整个仓库取出来,而应该只取出trunk目录,或只取出branch下的某个分支目录,点OK.,在工作拷贝中作出修改并提交:打开hello.c作出修改,然后右键-Commit.,这样就把修改提交到了版本库,我们可以运行。,查看所作的修改: Hello.c上右键-TortoiseSVN-Show Lo

14、g,这样就可以看到我们对这个文件所有的提交。,在版本1上右键-Compare with working copy,我们可以比较工作拷贝的文件和版本1的区别。,3.4 版本的回退,推荐几种方法 : 1. 若编辑了工程,在没有提交的前提下,想放弃这些修改,可以直接选择revert更新到工程的最新的版本。 2. 若想退回到某一个版本,可以直接选择update to reversion,这样就可以把版本回退到选中的版本去,这种情况下SVN并没有显示出有什么冲突,并且新建立的文件也还在,但是并不能直接在回退后的版本上进行编辑,因为SVN的版本控制还是在最新的主干上。我们需要update并解决冲突。,3.

15、 可以直接选择revert changes from this revision,这样可以直接解决冲突并提交。不过这种方法的不足是,新建的文件都没有了,整个工程都回退到之前的版本了。 4. 在此推荐一种方法:直接export一个需要的版本,然后用export的版本覆盖你的最新的版本,这样就可以不丢失你新建的文件,同时获得head的SVN控制文件。,3.5.分支与分支的合并,分支的基本概念:开发的一条线独立于另一条线,如果回顾历史,可以发现两条线分享共同的历史,一个分支总是从一个备份开始的,从那里开始,发展自己独有的历史。,分支合并,在工作的目录下点右键TortoiseSVN Merge 打开合

16、并工具,可以选择从一个版本合并到另一个版本,在合并之前,可以点Diff比较这两个版本的异同,然后就可以点Merge合并,在工程目录上点右键,进行SVN-Resolved。这样会删除无用的临时文件。 l最后提交所作的修改,并添加详细的注释。,参考文献: 1使用Subversion进行版本控制针对 Subversion 1.1(本书编译对应1876修订版本) Ben Collins-Sussman Brian W. Fitzpatrick C. Michael Pilato 版权 2002, 2003, 2004, 2005 Ben Collins-Sussman, Brian W. Fitzpatrick, C. Michael Pilato 2版本控制之道:使用Subversion(第2版) (美)梅森(Mason,M.)同作者作品 陶文同译者作品 电子工业出版社,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1