对版本控制就有了一定的理解,同时也应该知道SVN与CVS是比较流行的两款SCM工具。那么到底这两款工具有什么区别呢?
1、版本编号方面
例如,我们的版本库为A,其中有文件a,b,c。
在SVN中,新版本的版本号不是针对某个特定文件的,而是针对整个库而言的。提交了5次和提交了6次,文件a有可能不同,也有可能相同,即1.0版和1.1版可能相同。因为第6次提交有可能是因为文件b或c进行了修改。而在CVS中则相反,每次更新可能只对文件的版本号进行修改,即a文件的1.0版和1.1版是肯定不同。
(在这里纠正一个概念,“文件a的第2版本”这个说法是错误的,应该是“文件a的第2次修改,即第二次Commit”)
SVN的全局性版本编号为SVN带来了诸多的优势:如对目录或文件执行拷贝,无论涉及多少文件,SVN不需要对单个文件依次执行拷贝命令,仅仅需要建立一个指向相应的全局版本号的一个指针即可。
2、目录的版本控制
CVS只能对文件进行版本控制,不能对目录进行版本控制,这就导致CVS失去了很多功能:
1)没有移动操作
CVS里没有移动(move)这个操作,当人为进行文件移动操作时,CVS只能注意到,一个文件在一个位置被删除了,而在一 个新位置创建了另外一个文件。由于它不会连接两个操作,因此也很容易使文件历史轨迹丢失。所以使用CVS时,每个文件的位置一定要谨慎的选择。
2)没有重命名操作
CVS里没有重命名(rename)这个操作,人为的对文件进行重命名会使得命名前后的文件失去历史联系,而记录历史本来是版本管理的主要目的。
3)没有拷贝操作
CVS中没有拷贝(copy)这个操作,人为的拷贝对CVS而言,只能看到新的文件的增加,而不能记录拷贝源文件和目标文件之间的联系。
而SVN从很大程度上避免了这些不足,SVN将目录作为一类特殊的文件来处理。当目录中的子目录/文件被删除、重命名、或新的子目录/文件被创建时,目录的内容将发生改变。因此,SVN象记录普通文件的修改历史一样记录对目录的修改历史,当发生文件/目录的移动、重命名或拷贝操作时,SVN能够准确记录操作前后的历史联系。同样,像对文件的不同历史版本进行比较一样,SVN支持对目录的不同历史版本的比较,清晰展现目录的变化历史。
3、原子性提交
CVS和SVN同样作为SCM版本控制管理工具,SVN的原子性提交可谓是技高一筹啊!
SVN提交文件,只有当全部文件修改都成功入库,该提交才变得有效。一旦中断,SVN将会自动执行“回滚”(rollback)操作。SVN 这种机制保证所有的修改要么全部入库生效,要么一个也不入库。由于SVN的原子性提交特性和全局版本编号方式,当提交成功完成时,一个唯一的、新的全局版本编号产生,而提交时用户提供的日志信息与该新的版本编号关联,只进行一次存储(区别于CVS的按文件重复存储)。
分享到:
相关推荐
CVS 和 SVN 都支持批量提交,但是它们在实现方式上存在本质的区别。CVS 采用线性、串行的批量提交,而 SVN 采用原子性提交。SVN 的原子性提交保证所有的修改要么全部入库生效,要么一个也不入库,从而避免了版本库的...
尽管SVN在多个方面展现出了超越CVS的性能和功能,但CVS仍有一些独特优势,如符号文件标志的直观性和快速的文件访问速度,这些特点在某些特定场景下可能更受青睐。然而,随着SVN的持续发展和完善,其日益增长的市场...
简要cvs与svn的比较 1 对重命名、删除文件的支持 cvs:不支持本地文件重命名提交 删除分remove和erase两种前者把本地和库中文件都删除 后者只是删除本地文件 不能删除文件夹 svn:支持文件重命名提交系统会提示...
在软件开发过程中,版本控制系统如Subversion (SVN) 和 Concurrent Versions System (CVS) 被广泛应用于代码管理、版本跟踪和协同开发。随着时间的推移,项目目录中会积累大量的 `.svn` 或 `CVS` 文件夹,这些文件夹...
svn1.3版本的安装过程 以及svn和cvs的比较。 仅供各位大虾参考!
随着版本控制系统的发展,越来越多的团队选择从CVS(Concurrent Versions System)转向SVN(Subversion),因为SVN提供了更强大的功能和更好的用户体验。本教程将详细解释如何使用两种工具,即SVN-Importer和CVS2SVN...
CVS(Concurrent Versions System)和SVN(Subversion)都是广泛使用的版本控制系统,尤其在过去的几十年里,它们在开源社区和企业项目中扮演了重要角色。下面将详细介绍CVS和SVN的配置学习要点。 1. CVS简介: ...
cvs2svn通过解析CVS的存储库,提取出所有文件和目录的变更历史,然后将这些信息重新构造为SVN仓库。它能够处理复杂的CVS分支和合并,同时支持多种数据格式的输出,包括直接导入SVN的格式。 **二、cvs2svn的安装与...
CVS(Concurrent Versions System)和SVN(Subversion)都是源代码版本控制系统,用于管理和跟踪文件及目录的变更。它们都属于SCM(Software Configuration Management)工具,但两者之间存在显著的区别。 1. **...
在IT行业中,版本控制系统如Subversion (SVN) 和 Concurrent Versions System (CVS) 是团队协作开发的重要工具,用于管理代码版本和跟踪更改。然而,有时候我们可能需要清理工作环境,比如移除与这些系统相关的配置...
自己编写的Tortoise SVN CVS 图标修复软件,可以恢复资源管理器上的SVN,CVS图标显示问题。
清除SVN、CVS版本控制信息,支持此文件后,在鼠标右键将多出Delete CVS/SVN Folders选项。
随着技术的发展,Subversion(SVN)因其强大的功能和性能逐渐取代了早期的Concurrent Versions System(CVS)。本文旨在深入解析如何使用cvs2svn工具将CVS仓库迁移到SVN,为开发人员提供一个全面的迁移指导。 #### ...
在IT行业中,版本控制系统如Subversion (SVN)、 Concurrent Versions System (CVS) 和 Visual SourceSafe (VSS) 在软件开发中起着至关重要的作用。这些系统帮助团队协同工作,跟踪代码更改,并管理项目历史。然而,...
与常用的版本控制工具 CVS, Subversion 等不同,它 采用了分布式版本库的方式,不必服务器端软件支持,使源代码的发布和交流极其方便。 Git 的 速度很快,这对于诸如 Linux kernel 这样的大项目来说自然很重要。 Git...
标题 "SVN和CVS" 涉及到的是两种版本控制系统——Subversion(SVN)和 Concurrent Versions System(CVS)。在IT行业中,版本控制系统是开发者用来管理代码更改、协同工作的重要工具。 1. **Subversion (SVN)**: ...
CVS是一种广泛使用的源代码控制系统,而SVN则因其先进的特性,如分支和合并管理,逐渐成为其替代者。本笔记主要涉及以下关键知识点: 1. **CVS与SVN对比**:CVS是一个早期的版本控制系统,而SVN在它基础上进行了...
在本文中,我们将对比和介绍几种常见的代码管理工具:SVN、CVS、ClearCase(CC)、Visual SourceSafe(VSS)以及Git,并提供基本的使用说明。 1. **SVN(Subversion)** SVN 是一个分布式版本控制系统,允许开发者...