使用SVN进行版本管理_第1页
使用SVN进行版本管理_第2页
使用SVN进行版本管理_第3页
使用SVN进行版本管理_第4页
使用SVN进行版本管理_第5页
已阅读5页,还剩45页未读 继续免费阅读

下载本文档

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

文档简介

1、组员及分工v第第16组成员名单组成员名单:v0443111023 覃长洪覃长洪0443111367牟雅丹牟雅丹v0443111336 王王 静静0443111197罗俊鑫罗俊鑫v0443111197 卢卢 怡怡0443111143杨杨 谦谦v0443111176 张张 觅觅v作业分工作业分工:v1.use uml to model the gourmet coffee systemv杨谦杨谦 张觅张觅 罗俊鑫罗俊鑫 覃长洪覃长洪v2. using svn for code version managementv覃长洪覃长洪 牟雅丹牟雅丹 王静王静 卢怡卢怡使用使用svn来进行版本管理来进行版本

2、管理覃长洪 牟雅丹 王 静 卢 怡一一. 简简 介介为什么要使用svn?v程序员编写程序的过程中,每个程序都会生成很多不同的版本.v这就需要程序员能有效的管理代码,在需要的时候可以迅速,准确取出相应的版本v任何需要管理频繁信息改变的地方都需要它,这就是subversion的舞台1.1 subversion是什么是什么?vsub version(简称svn)是版本管理工具vsubversion是一个自由/开源版本控制系统v一组文件存放在中心版本库, 记录每一次文件和目录的修改vsubversion可以通过网络访问它的版本库1.2 subversion的特性的特性v版本化的目录版本化的目录subv

3、ersion实现了一个可以跟踪目录树更改的实现了一个可以跟踪目录树更改的“虚拟虚拟”版本化文件系版本化文件系统统 v真实的版本历史真实的版本历史 可以新增一个具有干净历史的文件可以新增一个具有干净历史的文件 v原子提交原子提交 可以让用户构建一个要提交修改的逻辑块,防止部分修改提交到版本库可以让用户构建一个要提交修改的逻辑块,防止部分修改提交到版本库 v版本化的元数据版本化的元数据每一个文件或目录都有一套属性每一个文件或目录都有一套属性键和它们的值键和它们的值 subversion的特性的特性(续续)v可选的网络层可选的网络层 在版本库访问方面有一个抽象概念,利于人们去实现新的网络机制在版本库

4、访问方面有一个抽象概念,利于人们去实现新的网络机制 v一致的数据操作一致的数据操作 文件是建立在二进制文件区别算法基础上的文件是建立在二进制文件区别算法基础上的 v有效率的分支和标签有效率的分支和标签 建立分支与标签时只是拷贝整个工程,使用了一种类似于硬链接的机制建立分支与标签时只是拷贝整个工程,使用了一种类似于硬链接的机制 v可修改性可修改性由一系列良好的共享由一系列良好的共享c库实现,具有定义良好的库实现,具有定义良好的api 1.4. 1安装安装subversionvsvn服务器端,客户端哪个先装都可以.我的安装路径为是: 服务端:c:program filessubversion 客户

5、端:c:program filestortoisesvn服务端安装好后软件会自动在系统的环境变量中增加相应的值安装完成可以在cmd命令行中输入”svnadmin help”来测试能否运行1.4.2 部署存储库并运行服务端部署存储库并运行服务端v建立svn的存储库,路径以d:svnrepo为例,创建完该文件后,就进行windows的服务绑定,以便以后每次重启机器后都能自动运行,这里用到的是windows自带的创建服务的命令sc,在命令行模式下执行:sc create svnservice binpath= c:program filessubversionbinsvnserve.exe -ser

6、vice -r d:svnrepo displayname= svnservice depend= tcpip start= autov在提示建立成功后,可以直接输入“net start svnservice”来启动服务,或者可以直接在“管理工具”的“服务”中直接启动。1.4.3创建项目以及配置访问权限创建项目以及配置访问权限v进到d:svnrepo目录下,新建一个仓库文件夹repositoryv 进入 d:svnreporepository下,鼠标右键选择totoisesvn-create repository here.进行创建v创建之前保证该目录下没有任何的文件夹和文件.v创建成功后会在

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

8、 password-db = passwd(指定授权用户的密码存放文件)v在同一目录下打开passwd,也就是上面设置的,也可以重命名,设置如下:vusersuser1 = pass1v这里指定授权访问用户名和密码,格式为:用户名 = 密码v接下来就可以开始使用totoisesvn进行import、update、checkout、commit等操作了。 二二. 基基 本本 概概 念念vsubversion是一种集中的分享信息的系统,它的核心是版本库版本库v它储存所有的数据,版本库按照文件树文件树形式储存数据包括文件和目录.v任意数量的客户端客户端可以连接到版本库,读写这些文件.v通过写,别人可

9、以看到这些信息,通过读数据,可以看到别人的修改2.2 文件共享的问题文件共享的问题2.3. 锁定锁定-修改修改-解锁解锁 方案方案锁定-修改-解锁模型缺点 v锁定可能导致管理问题锁定可能导致管理问题v锁定可能导致不必要的线性化开发锁定可能导致不必要的线性化开发v锁定可能导致错误的安全状态锁定可能导致错误的安全状态 2.4.拷贝拷贝-修改修改-合并合并 方案方案3版本管理版本管理v我们使用sub version(简称svn)作为版本管理工具。这里着重介绍svn作为跨平台的多人协作使用方法。v在多个程序员管理同一段代码的过程中,版本的管理显得尤为重要,使用svn可以方便的进行分支、合并,记录下所有

10、的版本。3.1.1忽略文件v在svn 的setting的general中,设置需要忽略的文件以便忽略掉一些临时的、无用的文件,常被忽略的文件有*.opt *.ncb *.suo *.plg *.pch *.idb *.pdb *.scc *.obj debug release *.o *.bin *.out *.ilk *.aps debug release *.clw *.bak.每个程序员可以根据自己的需要进行修改忽略文件,上面只是使用vc+与tornado编程时常用的一些忽略文件。v以上说的忽略文件是指全局的忽略文件。svn还能在特定的目录中指定需要忽略的文件。忽略文件支持通配符。3.1

11、.2合并比较工具合并比较工具v在merge tool中可以选择用来合并的工具,推荐用araxis merge.v在setting-diff中填c:program filesaraxisaraxis merge v6.5merge.exe ;在setting-merge的选项中,填入c:program filesaraxisaraxis merge v6.5merge.exe %theirs %mine %merged ;v其中c:program filesaraxisaraxis merge v6.5merge.exe是指合并工具的路径,%theirs %mine %merged分别指将要合并

12、到主干的分支,主干,及合并后的结果。3.2 项目基本流程项目基本流程v一个项目会有多个人共同合作开发完成。基本流程是:v1.各开发成员建立自己的分支,并在此分支上开发;v2.各开发成员把分支合并到主干上并形成较为稳定的版本;v3.各个成员重新从主干上建立新的分支,在此分支上开发(即回到第一步) ;v4.循环往复,直到工程结束。3.3 代码的版本管理代码的版本管理v运行独立服务器运行独立服务器 在任意目录下运行:在任意目录下运行:svnserve -d -r d:svndemorepository ,服务器程序就已经服务器程序就已经启动了。启动了。3.3.2.初始化导入初始化导入v在codetr

13、unk目录下创建一个hello.c文件#include void main() printf(hello world!n); 来到将导入的项目根目录,这里是d:svndemoinitprojectv右键-tortoisesvn-import. vurl of repository输入“svn:/localhost/ ” v输入用户名和密码 v完成之后目录没有任何变化,如果没有报错,数据就已经全部导入到了刚才定义的版本库中。3.3.3.仓库目录结构仓库目录结构 v仓库的一级目录只有两个,分别为code和doc。其中,doc主要用来放置先期的文档,code主要用来放置工程的代码,也可以包含后期的文

14、档。v仓库的二级目录只可以是branch与trunk两个目录,分别存放主干与分支。trunk目录下直接存放工程文件。branch目录下包括一些子目录分别对应各个分支。工作目录空白处鼠标点击鼠标右键 tortoisesvn repo-browser 可以看到仓库浏览器3.3.4.基本客户端操作基本客户端操作v取出版本库到一个工作拷贝:来到任意空目录下,在本例中是d:svnrepowc1,点击右键-checkout,在url of repository中输入svn:/localhost/code/trunk,这样我们就得到了一份工作拷贝。v注意:从svn仓库中取出代码时,一定不要把整个仓库取出来,

15、而应该只取出trunk目录,或只取出branch下的某个分支目录,点ok.v在工作拷贝中作出修改并提交:打开hello.c作出修改,然后右键-commit.,这样就把修改提交到了版本库,我们可以运行。v查看所作的修改: hello.c上右键-tortoisesvn-show log,这样就可以看到我们对这个文件所有的提交。v在版本1上右键-compare with working copy,我们可以比较工作拷贝的文件和版本1的区别。3.4 版本的回退版本的回退 v推荐几种方法 :v1. 若编辑了工程,在没有提交的前提下,想放弃这些修改,可以直接选择revert更新到工程的最新的版本。v2. 若

16、想退回到某一个版本,可以直接选择update to reversion,这样就可以把版本回退到选中的版本去,这种情况下svn并没有显示出有什么冲突,并且新建立的文件也还在,但是并不能直接在回退后的版本上进行编辑,因为svn的版本控制还是在最新的主干上。我们需要update并解决冲突。 v3. 可以直接选择revert changes from this revision,这样可以直接解决冲突并提交。不过这种方法的不足是,新建的文件都没有了,整个工程都回退到之前的版本了。v4. 在此推荐一种方法:直接export一个需要的版本,然后用export的版本覆盖你的最新的版本,这样就可以不丢失你新建的文件,同时获得head的svn控制文件。3.5.分支与分支的合并分支与分支的合并v分支分支的基本概念:开发的一条线独立于另一条线,如果回顾历史,可以发现两条线分享共同的历史,一个分支总是从一个备份开始的,从那里开始,发展自己独有的历史。 分支合并分支合并 v在工作的目录下点右键在工作的目录下点右键tortoisesvn merge 打开合并工具打开合并工具可以选择从一个版本合并到另一个版本,在合并之前,可以点diff比较这两个版本的异同,然后就可以点merge合并 在工程目录上点右键,进行svn-resolved。这样会删除无用的临时文件。l最后提交所作的修改,并添加详细的注释。

温馨提示

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

评论

0/150

提交评论