长久以来,在开源世界中,CVS(Concurrent Versions System)一直都是版本控制的首选。但是现在用户有了另一个选择,就是Subversion。Subversion是下一代版本控制系统,能替代CVS,项目主页是http://subversion.tigris.org。
Subversion是一个自由、开放源码的版本控制系统。它是一个通用系统,可用来管理任何类型的文件, 其中包括程序源码。
它的初始目标很明确,实现绝大部分CVS的已有功能;充分考虑现有的CVS用户,在使用方式上模仿CVS,同时开发了一系列工具,使得基于CVS的项目能够顺利迁移到Subversion上。和CVS相比,它有很多优点,例如目录版本控制、不可分割的提交、一致的数据处理方式和更有效率的分支与标记等。
安装与初始化
Subversion建立在一个可移殖的APR (Apache Portable Runtime,链接库)上。这使得Subversion可以工作在任何可以执行Apache的操作系统上。
Subversion有两种运行方式,一是可以作为Apache 2.0的一个模块, 以WebDAV/DeltaV协议与外界连通;另外,也可使用Subversion 自带的小型服务器程序。该程序使用的是自带的通讯协议, 可以很容易地透过SSH以tunnel方式使用。
最简单的安装Subversion的方法就是使用其提供的二进制版本(在项目网站上,有RPM、DEB和PORTS等格式的文件下载)。根据系统选择下载所需的文件,这里使用的Red Hat,所以选择了RPM格式。 #rpm -Uvh apr-0.9.5-0.2.i386.rpm
#rpm -Uvh apr-devel-0.9.5-0.2.i386.rpm
#rpm -Uvh apr-util-0.9.5-0.1.i386.rpm
#rpm -Uvh apr-util-devel-0.9.5-0.1.i386.rpm
#rpm -Uvh neon-0.24.4-1.i386.rpm
#rpm -Uvh neon-devel-0.24.4-1.i386.rpm
#rpm -Uvh subversion-1.0.0-1.rh90.i386.rpm
#rpm -Uvh subversion-devel-1.0.0-1.rh90.i386.rpm
#rpm -Uvh subversion-server-1.0.0-1.rh90.i386.rpm
#rpm -Uvh subversion-tools-1.0.0-1.rh90.i386.rpm
设置环境变量,命令如下:#export EDITOR=vi
创建文件库,命令如下:#svnadmin create /opt/proj/fox
将目录doc的内容,直接导入至文件库的fox目录里,命令如下:#svn import /root/doc file:///opt/proj/fox
Subversion组件
安装好之后,Subversion 会有数个不同的工具,主要分为客户端组件和服务器组件两类。
客户端组件供使用者使用,主要包括以下两个组件:
svn 是命令行客户端程序,用来管理数据。
Svnversion 用来查看工作拷贝的混合版本状态。
服务器组件供管理员使用,包括以下几个组件:
svnlook 用来查看Subversion的文件库的工具。
Svnadmin 用来创建与调整Subversion的文件库的工具。
mod_dav_svn 给Apache2.0网页服务器使用的模块;可以用来将用户的文件库透过网络对外开放。
Svnserve 一个独立的服务器程序,可以作为服务器进程执行,或是被SSH启动,让用户的文件库在网络上可供其它人存取的方法。
优势所在
Subversion在使用方式上与CVS相像,但是某些新的功能与设计和CVS是有区别的。下面谈谈两者的区别,让用户切实感受Subversion的优势。
不同的修订版号
在CVS中,每个文件修订版号是不同的。这是因为CVS基于RCS。每一个文件在文件库都有对应的RCS文件,而文件库的结构,大致上就是依照目录结构展开。
目录版本
Subversion也会追踪文件树结构,而不只是文件内容。Subversion中目录像文件一样,也有修订版号。“svn add”与“svn rm”命令可在目录上使用,就像在文件上使用一样。“svn copy”与“svn move”也是如此。但是这些目录不会马上让文件库有任何的变化。相反地,工作项目只是“预定”要被新增或删除。除非用户执行“svn commit”,不然文件库不会有任何变动。这一点有点像Windows下删除文件,只是在fat表作删除标记,而未真删除。
离线功能
Subversion的工作副本是针对网络带宽瓶颈做优化。.svn与CVS目录一样,都是管理用的目录,但是svn还多存放了文件的原始副本。这让用户能够离线进行许多事,举例如下:
“svn status”显示本地更新;
“svn diff”显示详细的更新细节;
“svn revert”移除用户的本地更新。
另外,Subversion客户端在提交文件副本时只传送差异。这点是CVS没有的。
区分状态与更新
在Subversion中,我们试着要解决“cvs status”与“cvs update”命令之间的混淆不清。“cvs status”命令有两个目的,一是显示使用者在工作副本中的本地更改;二是显示使用者过时的文件。但是CVS显示的内容不易理解,许多CVS的使用者完全无法善用这个命令。取而代之地,就是执行“cvs up”来看他们的更新。
Subversion试着让“svn status”输出的数据易于让人理解,来解决上面这个问题。另外,“svn update”只会显示被更新的文件信息,而不会显示本地的更新。
属性
Subversion的一个新功能,就是用户可以将任何的资料附加到文件与目录上。这些资料被称为属性。用户要设定或取得属性的名称,可使用“svn propset”与“svn propget”命令;要列出一个对象上所有的属性,可使用“svn proplist”命令。
冲突消解
CVS会在文件内放置“冲突标记”,将冲突地方标示出来,但CVS做得并不够。许多使用者记不住(或没看清)在终端上快速闪过的带有冲突标志的代码。
Subversion解决这个问题的方法是让冲突更明确地标示出来。它会记得文件处于冲突的状态中,除非用户执行了“svn resolved”命令,否则它不会允许用户提交。
二进制文件与文本文件
Subversion比CVS更善于处理二进制文件。 因为CVS使用RCS的关系,所以对于一个变动中的二进制文件,它将每个更新的副本都储存下来。但是Subversion不管文件是文本还是二进制类型,在内部都是以二进制差异比较算法来表示文件的更新部分。这表示所有的文件在文件库中都是以差异的形式储存。而且在网络上传输的,都是较小的文件差异部分。
CVS使用者必须以“-kb”标记二进制文件。Subversion不进行任何的关键词或列尾符号转换,除非用户要求这么做。Subversion内部会维护文件是否为“文本”或“二进制”文件的记录,将其保存在工作副本中。在执行“svn update”的过程中,Subversion 会对本地的文本文件进行内容合并,但是不会对二进制文件做这样的事。
小结
Subversion有一份很好的文档——《Version Control with Subversion》(http://svnbook.red-bean.com/)。它提供了有关Subversion的各方面内容,如使用、管理和开发等。
经过数年的开发,以替代CVS为目标的Subversion,终于出了1.0版本。相信以其强大的功能,对CVS良好的继承性,一定会有很好的发展。
相关推荐
CVS--Concurrent Versions System
一个比较好的介绍CVS用法的书,其实本人觉得讲代码管理还是svn book最为实用,但是在CVS领域还没有与其对应的书,这本也还算可以了
离线安装svn+apache,实现 http://ip 访问
离线安装的时候遇到了很多问题,诸如:版本不统一,httpd访问问题,httpd配置问题等等,希望其他朋友在离线安装的时候能参照本文快速安装。dav目录:是提供apache与mod_dav_svn使用的目录,让他们存储内部数据,刚开始新建时此目录没有。conf目录:是这个仓库的配置文件(仓库的用户访问账号、权限等),也是我们要关注的配置文件。安装httpd完毕后,会在 /etc/httpd目录下看到安装好的httpd相关文件。既然是完全离线安装,我们就要在有网的环境下将所需要的包下好,方便接下来的使用。
svn搭建https访问之mod_dav_svn安装包
svn搭建https访问之mod_dav_svn安装包 linux安装包 搭建https访问
CVS(Concurrent Version System)版本控制系统
转自百度百科CVS CVS是一个C/S系统,多个开发人员通过一个中心版本控制系统来记录文件版本,从而达到保证文件同步的目的。工作模式如下: CVS服务器(文件版本库) / | / (版 本 同 步) / | / 开发者1 开发者2 开发者3CVS(Concurrent Version System)版
Subversion版本控制工具.docx
SVN客户端使用手册,专门整理,非常详细,适合新手借鉴!!!
CVS (Concurrent Versions System) 并发版本系统 + 配置说明
CVS是Concurrent Versions System(并发版本系统)的简称。它是一个开放源代码的项目,是当前最流行的版本控制系统,目前绝大部分Open Source项目都使用它来做版本管理。 CVS采用客户机/服务器体系,代码、文档的各种版本都存储在服务器端,开发者首先从服务器上获得一份复制到本机,然后在此基础上进行开发。开发者可随时将新代码提交给服务器,也可以通过更新操作获得最新的代码,保持与其他开发者的一致。 CVSNT主页:http://www.cvsnt.org/
版本控制工具(CVS、SVN、GIT)简介
2019独角兽企业重金招聘Python工程师标准>>> ...
mod_dav_svn-1.14.1-1.module_el8.4.0+693+c49df33a.ppc64le.rpm
离线安装包,亲测可用
svn+apache部署和服务器数据迁移
svn+apache部署和服务器数据迁移
ChipCamp探索系列 -- 7A. 开源CPU之BOOM的来龙去脉
本文梳理一下Berkeley的乱序超标量CPU项目----Berkeley Out of Order Machine (BOOM),作为探索7系的首篇(7A)。
SAP MM采购合同创建全解析:ME31K操作与后台逻辑
在SAP ERP的物料管理模块中,采购合同作为框架协议的核心,定义了企业与供应商之间的长期供货关系。它与采购订单不同,合同不直接产生收货或发票,而是为后续采购订单提供数据源。创建合同(事务码ME31K)时,需要区分数量合同与金额合同,并维护抬头、行项目、有效期、价格条件和税码等关键信息。SAP通过源确定机制在创建采购订单时自动匹配合同,同时审批策略、编码范围和输出类型也会影响合同的实际可用性。掌握合同创建逻辑,能有效解决采购订单无法带出合同、审批未触发、价格缺失等高频问题。从ME31K实操出发,系统梳理采购
代码版本控制工具Concurrent Versions System(CVS)的三种用配置库更新本地工作目录文件的方法
(1)选中文件右键->team->update (2)选中文件右键->replace with->latest from HEAD (3)选中文件右键->team->synchronize with repository 注:第三种方法会以可视化的方式让用户对比本地工作目录和远程配置库中文件的区别 可以用当中的copy方法来手动修改本地的文件,然后保存,但是这样做的话文件的版本号不会改变 最佳的方法是:先(3)后(1) ...
逐行逐句进一步了解SurroundOcc(一)
通过分析中的模型构建过程,理解了从配置文件到模型实例化的整个流程。构建过程的核心是通过build和等函数,逐步将配置文件解析并生成模型的各个模块对象,最终组合成一个完整的模型结构。这一过程涉及多个类和函数的调用,其中函数是生成对象的关键,它能够从配置字典中提取必要信息并生成对应的类实例。
cocos2dx3.X uiimage 转 texture2d 或者 image 失败
今天试了网络上各种流行的转法,最终结果都是失败告终。 在void* data类型转到unsighe char* data过程中报错,直接报空指针。 类似失败代码1: // uiimage 转 texture2d等的都会出现错误 错误原因 未知 cocos2d::Texture2D *texture = new cocos2d::Text
【Python实战解析】从数据爬取到房价预测:一个完整的数据科学项目流程拆解
本文详细拆解了一个完整的Python数据科学项目流程,从爬取长沙二手房数据到房价预测模型构建。通过实战案例,介绍了数据爬取、清洗、可视化及模型优化的关键技巧,帮助开发者掌握Python在数据分析中的应用,提升程序开发能力。
NE555构成多谐振荡器及三角波、正弦波的生成(附工程文件)
NE555构成多谐振荡器及三角波、正弦波的生成 续上一篇:NE555基本原理及相关公式的推导
重读cocos2dx引擎
First of All 这个系列是看了版本OpenGL超级宝典之后,重新看cocos2dx渲染部分的笔记。 2016 综述: /** * Sprite is a 2d image ( http://en.wikipedia.org/wiki/Sprite_(computer_graphics) ) * * Sprite can be created with an image, or wi...
QGIS v3.28 高效加载OSM在线地图的三种实用方法
本文详细介绍了在QGIS v3.28中高效加载OSM在线地图的三种实用方法:通过XYZ Tiles直接连接、使用QuickMapServices插件以及配置WMS/WTMS服务。针对每种方法提供了具体操作步骤、常见问题解决方案和性能优化建议,帮助用户根据需求选择最适合的方案,提升GIS工作效率。
Cocos2dx引擎核心机制与性能优化面试要点解析
在游戏开发领域,Cocos2dx作为经典的跨平台2D引擎,其底层原理与性能优化始终是企业招聘考察的重点。理解引擎的帧循环驱动方式、节点渲染流程以及引用计数内存管理机制,是掌握该引擎技术栈的基础。从Director的启动逻辑到Renderer的合批处理,从Action系统的调度原理到EventDispatcher的事件分发模型,每一处设计都深刻影响着项目的运行效率与稳定性。在实际工程中,纹理图集规划、Draw Call控制、资源异步加载与热更新策略,更是决定游戏流畅度与用户体验的关键环节。本文从引擎核心概念出
SAP CAP core data service 里 association 和 composition 的区别
我们进行 SAP CAP 开发时,在schema.cds里进行数据建模,可以使用 association 和 composition,来描述两个 entity 之间的关联关系。在 SAP BTP 的 Cloud Application Programming Model (CAP) 中,cds文件定义了数据模型,而和是用于建立实体关系的两种关键机制。理解它们的区别对于构建高效、清晰的 CAP 数据模型至关重要。下面,我们将通过严谨的逻辑推理,结合代码示例,深入分析和之间的核心差异。
利用插件扩展 Qt 应用程序
不仅 Qt 本身可以通过插件进行扩展,而且 Qt 应用程序也可以通过插件来扩展,这需要应用程序使用 `QPluginLoader` 检测和加载插件。
cocos2dx-3 addImageAsync陷阱
2019独角兽企业重金招聘Python工程师标准>>> ...
IEM模型,地表粗糙度模拟
利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟
cocos2dx Android游戏加载资源时黑屏
用来解决返回Android游戏加载资源时黑屏的问题。帖子过些日子估计就沉了,所以转出来,以供后面查询。 需要修改三个文件: 1) cocos2dx/platform/CCPlatformMacros.h 将Line84修改为 #define CC_ENABLE_CACHE_TEXTURE_DATA 0 2)cocos2dx/platform/a
计算机控制技术及应用
《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。
LinePhone3.2.7(android端最新版本) sip客户端
SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/
cocos2d-x TextureCache::addImageAsync 方法的陷阱
最近遇到一个问题就是使用TextureCache::addImageAsync异步加载图片资源的时候会出现无限加载,图片不能正常加载完成导致无法接收到回调事件,于是网上查了一下发现了这个方法潜在的问题,以下内容转载自superman的博客,感谢他的分析让我查到了问题所在。 就以往的经验,异步加载图片是一个复杂的工作,往往容易出现bug。 那么,cocos2d-x提供的这个异步加载功能是否可靠?...
cocos是如何管理纹理的
纹理缓存TextureCacheCocos的纹理是通过纹理缓存对象来管理的,所有的纹理都存储在TextureCache中。TextureCache类只在导演类Director里面有一个实例,导演类中有一个TextureCache变量 TextureCache *Director::_textureCache,textureCache变量在Director::init函数中进行调用Directo...
Cocos2d-x学习笔记(九)纹理CCTexture2D和精灵CCSprite
原创文章,转载请注明出处:http://blog.youkuaiyun.com/sfh366958228/article/details/38850499 前言 在Cocos2d-x中对图片得封装是通过CCImage来完成,该类实现了对于不同类型图片得读取、解析、像素信息保存。由于在引擎内部封装,一般情况下不需要修改此类,由于Cocos2d-x使用了Open GL的图形库,因此在图片显
1268



被折叠的 条评论
为什么被折叠?



