- 1、本文档共27页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
SVN版本控制教程
一、版本控制
1.1为什么需要版本控制软件
参与过2人以上的软件项目开发?
开发过程中程序是否具有版本控制?
如果不使用版本控制还会出现什么问题?
1.2没有版本控制会怎样?
代码管理混乱
备份多个版本,占用磁盘空间大
解决代码冲突困难
容易引发BUG
难于追溯问题代码的修改人和修改时间
难于恢复至以前正确版本
无法进行权限控制
项目版本发布困难
1.3 什么是版本控制
版本控制透过文档控制(documentation control)记录程序各个模组的改动,并为每次改动编上序号。这种方法是工程图(engineering drawings)维护(maintenance)的标准做法,它伴随着工程图从图的诞生一直到图的定型。一种简单的版本控制形式,例如,赋给图的初版一个版本等级“A”。当做了第一次改变后,版本等级改为“B”,以此类推等等。
1.4主要知识点
SVN简介
SVN服务器端与客户端的使用
SVN与第三方 Eclipse 整合
SVN与第三方 Apache 整合
SVN版本控制的前身CVS简介
SVNKit简介
二、SVN简介
2.1 什么是SVN
Svn(Subversion)是近年来崛起的版本管理工具,在当前的开源项目里(J2EE),几乎95%以上的项目都用到了 SVN。Subversion 项目的初衷是为了替换当年开源社区最为流行的版本控制软件 CVS,在 CVS的功能的基础上有很多的提升同时也能较好的解决 CVS 系统的一些不足。
2.2 SVN服务器运行原理图
2.3 SVN服务器运行方式
独立服务器方式:
svnserve
借助Apache方式
mod_dav_svn
2.4 Subversion 组件
服务器组件(管理员使用)
svnadmin:用来调整和修正svn档案库的工具
mod_dav_svn:给 Apache-2.X 网页服务器使用的外挂模块; 可以用来将你的档案库透过网络对外开放, 以供他人进行存取。
svnserve:一个独立的服务器程序, 可以作为服务器行程执行, 或是被 SSH 启动; 另一个让你的档案库在网络上可供其它人存取的方法.
客户端组件(用户使用)
svn:命令行客户端程程序,这是用来管理数据的主要工具。
2.5 subversin 的优点
Subversion:是一种开放源码的全新版本控制系统。是新一代的版本控制工具;
由于其优于CVS的一些特点,得到了越来越多人的关注和使用;
支持可在本地访问或通过网络访问的数据库和文件系统存储库;
提供了常见的比较、修补、标记、提交、恢复和分支等功能;
Subversion 还增加了追踪移动和删除的能力;
此外,它支持非 ASCII 文本和二进制数据;
Subversion 不仅对传统的编程任务非常有用,同时也适于 Web 开发、图书创作和其他在传统方式下未采纳版本控制功能的领域;
2.6 SVN版本数据存储方式
BDB (Berkeley DB):数据库方式
FSFS:文件方式(推荐)s
2.7 svn版本控制策略
2.7.1 其他版本的控制策略(vss)
2.7.2svn的控制策略
1锁定-修改-解锁 方案
许多版本控制系统使用锁定-修改-解锁机制解决这种问题,在这样的模型里,在一个时间段里版本库的一个文件只允许被一个人修改。例如大家以前用的 VSS,就是采用的这种方案。
锁定-修改-解锁模型的优点:能非常好的保证版本库中所有文件的一致性,能避免大部分的冲突。但锁定-修改-解锁模型有一点问题就是限制太多,经常会成为用户的障碍:
锁定可能导致管理问题。
锁定可能导致不必要的线性化开发。
锁定可能导致错误的安全状态。
2拷贝-修改-合并 方案
Subversion,CVS和一些版本控制系统使用拷贝-修改-合并模型,在这种模型里,每一个客户联系项目版本库建立一个个人工作拷贝——版本库中文件和目录的本地映射。用户并行工作,修改各自的工作拷贝,最终,各个私有的拷贝合并在一起,成为最终的版本,这种系统通常可以辅助合并操作,但是最终要靠人工去确定正误。
拷贝-修改-合并模型感觉有一点混乱,但在实践中,通常运行的很平稳,
用户可以并行的工作,不必等待别人,
当工作在同一个文件上时,也很少会有交迭发生,冲突并不频繁,处理冲突的时间远比等待解锁花费的时间少。
最后,一切都要归结到一条重要的因素:用户交流。当用户交流贫乏,语法和语义的冲突就会增加,没有系统可以强制用户完美的交流,没有系统可以检测语义上的冲突,所以没有任何证据能够承诺锁定系统可以防止冲突,实践中,锁定除了约束了生产力,并没有做什么事。
拷贝-修改-合并有一个很致命的缺点,就是对那些无法合并的二进制文件管理起来困难。因此,Subversion 也提供了锁定-修改-解锁的方案
文档评论(0)