Subversion

合集下载
相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

一、Subversion简介
Subversion的特点
原子化提交
• 一个变更集要么完整地被提交到仓库中,要么不做任何 改变 ,从而避免发生不完整地提交变更的情况 。
受控元数据
• 每一个文件和目录都有一个与其对应的属性集 。
可选的网络层
• Subversion 仓库的存取是一个抽象概念,有利于其他人 实现新的网络访问机制 ,Subversion 可以作为一个外部 模块插入到 Apache HTTP 服务器中 。
二、版本控制的基本知识
文件共享问题
所有的版本控制系统都必须解决一个共同的基本问题:
如何让用户来共享信息,并且还要避免他们不小心覆 盖掉别人对仓库中数据作享问题
二、版本控制的基本知识
“锁定―修改―解锁” 方案
许多版本控制系统都使用“锁定―修改―解锁”模型 来解决这个问题 ,诸如:VSS 在这样一个系统中,仓库在一个特定的时刻只允许一 个人对某个文件进行修改 。 如下图:
二、版本控制的基本知识
仓库(The Repository)
Subversion 是一个集中式的系统。它的核心是一个用 来存放数据的中心仓库。中心仓库使用典型的文件和 目录层次结构――树状结构来存储信息。 许许多多的客户端可以连接到中心仓库,然后读取或 者写入文件 。 客户端通过写文件来使其他人共享,也可以读取其它 客户端所写入的文件。 典型的客户端/服务器系统模型 ,如图所示:
二、版本控制的基本知识
“复制―修改―合并”方案
二、版本控制的基本知识
冲突(conflict)
如果 Sally 的修改会覆盖掉 Harry 的工作怎么办?这种 情况叫做 冲突(conflict) 当 Harry 要求他的客户端软件合并仓库中的最新修改 到工作副本时,文件 A 被标记为冲突状态。 遇到这种情况,只有人本身才有能力理解和做出合理 的选择 。注意,软件并不能自动解决冲突 。 用于解决冲突的时间远远少于锁定系统所带来的时间 浪费。
一、Subversion简介
Subversion的安装
Subversion 是建立在一个叫做 APR(the Apache Portable Runtime library)的可移植运行库之上的 。 Subversion 可以运行在任何 Apache 服务器可以运行 的操作系统之上:Windows、Linux,各种类型的 BSD、 Mac OS X,Netware 以及其他的系统。 获得 Subversion 的最简单的方法就是下载适合于你的 操作系统的二进制软件包 Subversion 的站点()
二、版本控制的基本知识
解决冲突的关键是用户交流
最终,我们将所有的问题归结为一个关键因素:用户 交流。如果用户很少交流,不论是语法的还是语义的 冲突都会增加。没有哪个系统可以让用户完美地交流, 也没有哪个系统可以自动检查出语义上的冲突。所以, 不要被那种锁定系统可以解决冲突的虚假承诺所麻痹, 事实上,锁定系统除了限制生产力之外一无是处。
扩展能力
• 它是由一组设计良好的 APIs实现的,包含在 C 的共享库 中 ,这使得它很容易维护。也很容易被其他应用程序或 语言使用 。
Subversion
的 体 系 结 构
一、Subversion简介
Subversion的体系结构
典型的client/server模式结构 在系统的一端是存放着所有受控制数据的 Subversion 仓库。 另一端是 Subversion 的客户端程序,管理着受控数据 的一部分在本地的映射(称为“工作副本”)。 在这两端之间,是通过各种仓库存取层(Repository Access,RA)的多条通道。这些通道中,有些要使用计 算机网络,再通过用来访问 Subversion 仓库的服务器。 而有些则完全绕过了网络,直接对仓库进行操作 。
一、Subversion简介
Subversion的特点
目录控制
• CVS 只能跟踪单个文件的历史,而 Subversion 实现了 一个“虚拟”的受控文件系统,可以跟踪整个目录的变更。
真正的版本历史
• 由于 CVS 只限于记录文件的版本信息,像文件复制、重 命名这样的操作它就不支持 ,在 Subversion 中我们可 以添加、删除、复制和重命名文件和目录 。
一、Subversion简介
Subversion的特点
一致的数据处理
• Subversion 使用一种二进制的比较算法来表示文件之间 的区别 。
高效的分支和标记
• 分支和标记所带来的开销与项目的规模并没有直接的关 系 ,Subversion 在创建分支和标记时使用类似“连接” 的方式来复制项目 。
二、版本控制的基本知识
资源库存储的不同方式URLs
样式 存取方式 file:/// 直接从本地磁盘上访问仓库 http:// 通过 WebDAV 协议访问 Apache 服务器,而访问仓库 https:// 和 http:// 相同,但使用 SSL 来作加密 svn:// 通过自定义的协议访问一个 svnserve 服务器 svn+ssh:// 和 svn:// 相同,但通过一个 SSH 通道来使用
客户端同样可以读取文件和目录以前某个时刻的状态 版本控制系统的核心:记录和跟踪数据的修改历史
二、版本控制的基本知识
版本控制模型
版本控制系统的核心任务是使得数据可以协作处理和共享, 但是不同的系统使用不同的策略来达到这个目标 。 文件共享的问题 。 “锁定―修改―解锁” 方案 “复制―修改―合并” 方案
二、版本控制的基本知识
修订本
一个 svn commit 操作可以将任意数量的文件和目录的修 改发布作为一个单独的原子事务来处理; 在仓库中,每一次提交都被作为一个原子事务来对待; 每当仓库接受一次提交,仓库中的文件系统目录都会创 建一种新的状态,叫做一个修订本; 每一个修订本都被赋予一个唯一的自然数,并且每一个 修订本的数字都比前一个要大;刚刚建立的仓库的初始 的版本是 0 ,只包含一个空的根目录; Subversion 的修订版编号是针对整个目录树的,而不是 某一个独立的文件;
一、Subversion简介
Subversion的历史
CVS有明显的局限性和功能上的不足 2000年开始 ,CollabNet公司 就开始着手开发新的版 本控制系统来代替CVS Karl Fogel 和Jim Blandy 是CVS开发者,加入到开发 subversion当中他们让 Subversion 来使用 CVS 的特 性,并且保留相同的开发模型 ,但是避开 CVS 的那些 明显的缺陷 Subversion 于2001年8月进入“自测”阶段
二、版本控制的基本知识
仓库(The Repository)
二、版本控制的基本知识
仓库(The Repository)
仓库就是一种文件服务器,只是不是通常的那种 Subversion 仓库可以记录写入仓库的每一次更改
• 这些更改包括对每一个文件的每一次修改,甚至是对目 录本身的修改,例如添加文件、删除文件和对文件和目 录的重新编排。这些特性使得 Subversion 仓库与一般的 文件服务器相比较为特殊
二、版本控制的基本知识
实际中的 Subversion
工作副本Working Copies 资源库存储的不同方式URLs 修订本 工作副本如何跟踪仓库 混合型修订版的局限性
二、版本控制的基本知识
工作副本Working Copies
一个 Subversion 的工作副本其实就是本地系统中的一个 普通的文件目录树 。 可以使用任何方式来编辑这些文件。如果是源代码文件的 话,你也可以像通常情况那样去编译它们。 工作副本是你的私人工作区 。 如果你不明确的要求,Subversion 绝不会合并其他人的修 改,也不会让其他人看到你做的修改 。
“复制―修改―合并”方案
Subversion、CVS以及其他一些版本控制系统使用 “复制―修改―合并”模型来代替锁定 。 每一个用户的客户端软件从中央仓库创建出一份个人 的工作副本――仓库中文件和目录的本地映射 。 用户就可以并行工作,修改手中的私有副本 。 这些私有副本合并成为一个全新的版本 。 版本控制系统常常需要合并,但是最终,操作者本身 必须负责让合并工作正确进行 。
Subversion只是版本控制系统,不是软件配置管理系统(SCM) 。
一、Subversion简介
What is Subversion not?
svn is not a build system svn is not a substitute for management svn is not a substitute for developer Communication svn does not have change control svn is not an automated testing program
Subversion
讲师:韩兴华
Subversion
1 2 3 4 5 6 7
Subversion简介
版本控制的基本知识 Subversion常用功能讲解 客户端工具TortoiseSVN Eclipse插件subeclipse的使用 使用svn中常见问题 版本管理规则
一、Subversion简介
二、版本控制的基本知识
工作副本Working Copies
在你已经修改完工作副本中的文件,并且确信修改正 确后,就可以将这些修改公开给同一个项目中的其他 工作人员。Subversion 提供了将文件写入仓库的命令 。 工作副本中也包含一些额外的文件。它们是由 Subversion 创建和维护的,用来辅助完成这些命令。 最典型的情况是,每一个目录都包含一个叫做 .svn 的 子目录 。该目录也被称为“工作副本管理目录”。 一个 Subversion 的仓库会包含几个项目,而每一个项 目都是仓库的目录的一个子目录。这样,用户的工作 副本也就对应于仓库中一个特定的子目录。
一、Subversion简介
VisualSVN Server 的安装
官方下载地址:
设置安装路径(Location) 设置仓库路径(Repositories) 设置服务器端口(Server Port)
二、版本控制的基本知识
仓库(The Repository) 版本控制模型 实际工作中的subversion subversion/cvs/vss比较
二、版本控制的基本知识
“锁定―修改―解锁” 方案
二、版本控制的基本知识
“锁定―修改―解锁” 方案
这种方案的问题是它有一点过于严格了,经常会阻塞 用户的使用 。 锁定可能会带来管理问题 。 锁定可能导致不必要的串行工作 。 锁定可能会引起潜在的不安全性 。
二、版本控制的基本知识
版本控制是管理信息变更的一门艺术。 版本控制工具早已经成为许多程序员的主要工具 之一 。 版本控制软件的用途并不仅限于软件开发的领域 , 只要人们使用计算机来管理经常变更的信息,就 需要使用版本控制工具 。
一、Subversion简介
什么是Subversion?
Subversion是一个自由的、开放源码的版本控制系统 它可以管理各个时刻的文件和目录 Subversion将文件存放在repository库中。这个仓库非 常类似于一个普通的文件服务器 ,只是它还可以记录 文件和目录曾经做过的每一次变更 。 Subversion的仓库可以通过网络来访问,允许不同的 用户在不同的计算机上使用 。 不同的使用者可以进行协同工作 。而且所有工作都是 有记录的,如果有错只要撤销就可以。
相关文档
最新文档