版本控制软件SVN与CVS的详细比较
- 格式:doc
- 大小:34.50 KB
- 文档页数:3
软件开发中的版本管理技巧一、版本管理的定义及意义版本管理(Version Control)是指在软件开发过程中,对软件源代码和相关文件进行控制、追踪和管理的一种方法。
它能够记录软件的历史变更信息,帮助开发团队更好地协作工作,保证软件开发的顺利进行。
版本管理在现代软件开发中具有不可替代的重要性。
二、传统版本管理工具1. CVS(Concurrent Versions System)CVS是早期版本管理工具中最受欢迎的一种。
它使用集中式模型,将集中存储库作为代码的唯一副本,并使用锁定机制进行协作开发。
然而,由于其集中式结构带来的单点故障问题和网络传输效率低下等缺点,CVS逐渐被其他更先进的版本管理工具取代。
2. SVN(Subversion)SVN是一种集中式版本管理系统,相对于CVS具有更多的功能和优势。
它支持文件和目录的版本控制、权限控制、分支合并等功能,使得团队协作更加灵活高效。
然而,随着分布式版本管理工具的出现,SVN逐渐被取代。
三、分布式版本管理工具的兴起1. GitGit是一种分布式版本管理系统,由于其分布式结构和高效的存储方式,成为目前最流行的版本管理工具之一。
它允许每个开发者都有完整的版本库副本,并可以离线工作。
Git通过快照式存储和分支管理的灵活性,使得开发团队可以轻松并行工作,更好地管理代码。
2. MercurialMercurial是另一种分布式版本管理系统,与Git类似。
它在易学性和用户友好性上更胜一筹,对于小团队或个人开发者来说是一个不错的选择。
Mercurial提供了强大的分支管理和分布式开发功能,支持大型项目的版本控制。
四、版本管理的技巧1. 分支管理分支是版本管理中非常重要的概念,它能够让开发者在不影响主线开发的情况下进行特性开发、修复bug等工作。
合理使用分支可以降低冲突风险,提高并行开发效率。
主线分支通常用于发布生产版本,开发者可以从主线分支创建自己的特性分支,完成开发后再合并到主线上。
版本控制工具CVS简介摘要:版本控制是程序开发、管理必不可少的工具,特别是在多人协作的团队中,适宜的版本控制工具可以提高开发效率,消除很多有代码版本带来的问题。
本文首先列举没有版本控制工具时可能遇到的问题,再对主流版本控制工具CVS做概要介绍。
关键字:版本控制;CVS;功能;横向对比。
1引言为什么要使用版本控制工具?如果没有版本控制工具的协助,在开发中我们经常会遇到下面的一些问题:一、代码管理混乱。
如果是别人添加或删除一个文件,你很难发现。
没有办法对文件代码的修改追查跟踪。
甚至出现文件丢失,或新版本代码被同伴无意覆盖等现象。
二、解决代码冲突困难。
当大家同时修改一个公共文件时,解决代码冲突是一件很头疼的事。
最原始的办法是手工打开冲突文件,逐行比较,再手工粘贴复制。
更高级的做法是使用文件比较工具,但仍省不了繁杂的手工操作,一不小心,甚至会引入新的bug。
三、在代码整合期间引入深层BUG。
例如开发者A写了一个公共函数,B觉得正好可以复用;后来A又对这个公共函数进行了修改,添加了新的逻辑,而这个改动的却是B不想要的。
或者是A发现这个公共函数不够用,又新做了一个函数,B却没有及时获得通知。
这些,都为深层BUG留下隐患。
四、无法对代码的拥有者进行权限控制。
代码完全暴露在所有的开发者面前,任何人都可以随意进行增、删、改操作,无法指定明确的人对代码进行负责。
特别是产品的开发,这是极其危险的。
五、项目不同版本发布困难。
特别是对产品的开发,你会频繁的进行版本发布,这时如果没有一个有效的管理产品版本的工具,一切将变得非常艰难。
上面只是列举了一些没有版本控制系统可能带来的问题,特别是对大型项目和异地协同开发有了一个合适的版本控制工具,它可以有效解决因为代码版本不同引起的各种问题,让我们的开发人员能更多的把精力花费在开发上面。
而不是每次都花费很多时间进行代码整合和解决版本不同带来的各种问题。
现在,主流的版本控制工具主要有:Starteam、PVSC Version Manager、CC、VSS、CVS等。
VSS和CVS比较1.软件配置管理基础随着计算机应用范围的日益广泛,应用软件的规模及复杂度日益广泛深入,应用软件的规模和复杂程度日趋大型化,复杂化,这就导致软件开发的方式越来越强调团队的协作开发,而在这种开发方式下,会遇到很多问题,例如:需要将整个软件的版本恢复到以前的某一时间的状态,限制随意修改程序,或者控制某一程序在同一时间内只能一个开发人员修改等等。
为了解决这些问题,提高软件产品和软件项目的质量及软件开发过程中的管理水平,更好地为以后的软件开发工作提供有效的服务,必须采用先进的管理手段,实现软件产品和软件项目源码的科学管理。
软件配置管理工具应运而生。
2.软件配置管理工具软件配置管理工具有很多,例如:Starteam、ClearCase、VSS和CVS等。
Starteam和ClearCase更适合庞大的团队和项目,并且价格不菲,所以并不常用。
目前使用比较广泛的是VSS和CVS。
两者在使用上有各自的优势和不足。
VSS的全名是VisualSourceSafe,是微软公司开发的VisualStudio开发套件中的软件配置管理部分,有非常好的技术支持和非常详尽的技术文挡。
VSS适合在局域网范围内,以Windows平台为主的中、小项目,以文件管理为主要功能,使用方便,学习成本低,对服务器仅需要快速大容量的存储器也是它的优势。
CVS的全名是ConcurrentVersionSystem,是一种可以并发的版本控制系统。
它是一个开源项目,可以直接从网站下载最新的原代码。
CVS可以满足局域网和广域不同的网络条件,提供不同级别安全性选择,在一台专门的服务器配合下,客户可以使用任何平台开发项目。
CVS本身是在unix系统上开发的,在unix下提供的是命令行使用模式。
在Windows平台下你可以选择用CVSNT搭建服务器,用WinCvs作为客户端。
CVS对于已经完成了开发过程进入项目维护阶段,或者进入项目升级阶段的项目,可提供完善的软件配置管理的支持,不过在学习和操作上学习成本比较高。
SVN1。
它本质上是一个文件共享系统(有人往里面放东西,有人在里面拿东西).2.它最重要的功能,就是在文件共享系统的基础之上,记录每一次的修改历史。
Harry锁定文件,Harry读取文件,Sally因而无法锁定并修改文件Harry修改文件,Harry解锁文件,Sally锁定,并看到最新的修改SVN和CVS一样,都是以“拷贝-修改-合并”模型为基础的。
但是SVN也提供了“锁定-修改-解锁”的方式(对于二进制文件的处理特别有用,这类文件必须序列化修改)关键词:Repository 、Working Copy、Check-out、Commit(或Check-in)、Update、Merge、Conflict3.SVN的版本是基于完整目录树的而CVS是基于单个文件的4.SVN可以记录目录的移动、复制、删除而CVS无法管理目录,只能用-p参数控制:当目录没有文件时,不要checkout它。
5.SVN的提交是原子操作(要么全成功,要么全失败),而CVS提交一个目录时,可能只成功了一半,导致状态不一致,很难恢复。
6.SVN可以记录文件、目录的修改、移动、复制、删除,而CVS只能够记录文件的修改和删除7.SVN支持元数据(Properties),并记录其历史。
在SVN中,元数据非常有用,而CVS不支持元数据。
8.SVN的比较算法是基于二进制的,而CVS必修区别二进制和文本,前者必须指定-kb,后者-kk,否则二进制文件很容易被破坏,却没有任何警告。
SVN的实践使用:在Windows下安装(Subversion命令行客户端),安装TortoiseSVN资源管理器集成客户端在Linux下安装Subversion命令行客户端和Eclips集成安装SubClipse插件。
基本命令:1.在自己的硬盘上建一个repository(库)svnadmin create c:/myrepos2.在新的repository中创建一个新的项目svn mkdir file://myrepos/myproject(这是个romote操作)。
svn面试题Subversion(版本控制系统)面试题一、简介版本控制系统(Version Control System,简称VCS)是一种用于跟踪和管理文件修改、协调多人协作开发的工具。
Subversion(简称SVN)是一种流行的VCS,本文将介绍一些与SVN相关的面试题。
二、SVN面试题1. 什么是SVN?SVN是一个开源的版本控制系统,它可以追踪和管理文件的修改并协助多人协作开发。
2. SVN相比于CVS的优势是什么?SVN相比于CVS有以下优势:- 数据库存储:SVN使用数据库对提交记录进行存储,而CVS使用文本文件。
数据库存储提供了更高效和更可靠的结构。
- 复制和分支操作:SVN具有更高性能和更灵活的复制和分支操作,并且分支的开销比CVS低得多。
- 更好的文件重命名和移动:SVN可以更好地处理文件的重命名和移动操作,而CVS需要特殊的命令来处理此类操作。
- 支持更多版本:SVN支持更多的版本信息,包括复制和移动的历史记录,而CVS只支持文件的历史记录。
3. SVN的工作原理是什么?SVN使用集中式的版本控制系统,其中有一个中央仓库用于存储文件和版本历史。
开发人员通过SVN客户端与中央仓库交互,可以进行文件检出、更新和提交操作。
4. SVN的主要命令有哪些?SVN的主要命令包括:- checkout:从版本库中检出文件。
- update:更新本地文件与版本库中的最新版本一致。
- commit:将本地修改提交到版本库。
- add:将新文件添加到版本库。
- diff:显示文件之间的差异。
- log:查看版本库的提交日志。
- revert:撤销本地文件的修改。
5. SVN的冲突解决方法有哪些?SVN的冲突解决方法包括:- 手动解决冲突:当多个人同时修改同一文件时,可能会导致冲突。
在发生冲突时,SVN会将有冲突的文件标记出来,开发人员可以手动解决冲突并提交修改。
- 使用合并工具:SVN提供了一些合并工具,可以帮助开发人员解决冲突,例如Beyond Compare、TortoiseMerge等。
SVN与CVS的比较1.全局性的版本编号一个新的版本,并得到一个自增量的版本号N+1,该版本号并不针对某个特定的文件,而是全局性的、针对整个版本库的。
因此,我们可以将Subversion 的版本库看作是一个文件系统或文件目录树的数组。
Subversion 的全局性版本编号为Subversion 带来了诸多的优势:如对目录或文件执行拷贝,无论涉及多少文件,Subversion 不需要对单个文件依次执行拷贝命令,仅仅需要建立一个指向相应的全局版本号的一个指针即可。
2.目录的版本控制CVS 只能对文件进行版本控制,不能对目录进行版本控制,因此CVS 没有任何关于文件“移动”(move)操作的概念。
当人为进行文件移动操作时,CVS 只能注意到,一个文件在一个位置被删除了,而在一个新位置创建了另外一个文件。
由于它不会连接两个操作,因此也很容易使文件历史轨迹丢失。
设置 CVS 存储库时,必须非常谨慎地为每个文件选择准确的位置,因为在设置之后,几乎就要一直使用这个位置了。
Subversion 将目录作为一类特殊的文件来处理,因此,Subversion 像记录普通文件的修改历史一样记录对目录的修改历史,当发生文件/目录的移动、重命名或拷贝操作时,Subversion 能够准确记录操作前后的历史联系。
同样,象对文件的不同历史版本进行比较一样,Subversion支持对目录的不同历史版本的比较,清晰展现目录的变化历史。
3.原子性提交从使用者的角度来看,CVS 和Subversion 都支持对多个文件修改的批量提交,但二者在实现方式上存在本质的区别。
CVS 采用线性、串行的批量提交,即依次地,一个接一个地执行提交,每成功提交一个文件,该文件的一个新的版本即被记录到版本库中,提交时用户提供的日志信息被重复地存储到每一个被修改的文件的版本历史中。
CVS 串行批量提交模式的弊端在于-当任何原因造成批量操作的中断时(典型原因包括:网络中断、客户端死机等),版本库往往处于一个不一致的状态:原本应该全部入库的文件只有一部分入库,很有可能版本库中的最新版本不能顺利编译,更为严重的是,随着其他的用户执行cvs update 操作,该不一致性将迅速在开发团队中扩散,从而严重影响团队的开发效率,并存在质量隐患。
CVSCVS是一个典型的服务器/客户端软件,有Unix版本的CVS,有Linux版本的CVS和Windows版本的CVS。
CVS支持远程管理,项目组分布开发时一般都采用CVS。
安装,配置较为复杂,但使用比较简单,只要对配置管理做简单的培训即可。
安全性高,CVS服务有自己专用的数据库,文件存储并不采用“共享目录”方式,所以不受限于局域网。
CVS可以跨平台,支持并发版本控制,而且免费。
CVS不支持文件改名,只针对文件控制版本而没有针对目录的管理,摈弃缺少相应的技术支持,许多问题的解决需要自己找资料,甚至是研究源代码。
但也可以根据自己的需要进行编程。
相对功能单一、简陋、适用于几个人的小型团队,在数据量不大的情况下,性能可以接受。
SVNSVN(Subversion)是一种版本管理系统,其前身是CVS。
SVN是根据CVS的功能为基础来设计的,它出包括了CVS的大多数特点外,还有一些新的功能,如:文件目录可以方便的改名、基于数据库的版本库、操作速度提升、权限管理更完善等。
CVS与SVN比较(客户端:文件符号表示意义[勾表示与服务器端的最新状态更新,‘!’感叹号表示修改之后没有更新],‘?’问好表示没有和服务器端保持联系)这里有收集整理的关于SVN的东西,1——SVN基本使用手册2——Subversion 错误信息一览表.3——svn的一些常见问题,后面我还会把文档供给大家下载,共同学习~Subversion 错误信息一览表注意:1.不同的客户端(命令行,TortoiseSVN, AnkhSVN, Subclipse等)的出错信息可能稍有不同。
2.下面表格中的出错信息以/svn/test 版本库做示例,仅供参考。
编号出错信息问题剖析解决方案1.svn: Server sent unexpected return value (500 Internal Server Error) in response to OPTIONS request for '/svn/test'错误的用户名检查登录的用户名是否输入错误svn: 服务器发送了意外的返回值(500 Internal Server Error),在响应“OPTIONS” 的请求“/svn/test” 中2.svn: OPTIONS of '/svn/test': authorization failed: Could not authenticate to server: rejected Basic challenge ()错误的口令用正确的用户名/口令登录svn: 方法OPTIONS 失败于“/svn/test”: 认证失败: Could not authenticate to server: rejected Basic challenge ()3.svn: Server sent unexpected return value (403 Forbidden) in response to OPTIONS request for '/svn/test'用户无权限联系管理员,为用户分配权限svn: 服务器发送了意外的返回值(403 Forbidden),在响应“OPTIONS” 的请求“/svn/test” 中4.svn: OPTIONS of '/svn/test': 200 OK () 服务器地址错误,是普通Web页面,不支持SVN的WebDA V 协议确认输入正确的SVN 服务地址。
版本控制(Version Control)是软件开发过程中重要的一环。
随着软件规模的扩大和团队的增多,版本控制工具的作用日益凸显。
本文将探讨版本控制工具的分类及其特点,帮助读者更好地选择适合自己团队的工具。
一、本地版本控制工具本地版本控制工具是最简单的一种,它们多数使用单一的数据库存储文件的不同版本。
这种工具的特点是简洁易用,适合个人或小团队使用。
常见的本地版本控制工具有RCS和SCCS。
RCS(Revision Control System)是最早的版本控制工具之一。
它使用一个单独的文件存储变更的差异。
使用RCS,开发者可以轻松地创建和恢复历史版本,同时还可以对文件进行比较以查看差异。
然而,由于RCS只适用于单个文件,它无法有效管理多个文件的版本控制。
SCCS(Source Code Control System)是与RCS类似的一个本地版本控制工具。
它也是基于文件差异存储版本信息,并提供检出、检入和复原历史版本的功能。
然而,SCCS与RCS一样,也只适用于单个文件的版本控制。
二、集中式版本控制工具集中式版本控制工具是在一个中央服务器上存储所有文件的不同版本。
开发者从中央服务器上检出文件进行修改,并将修改后的文件再次提交到中央服务器。
这种工具的特点是集中管理和控制,适合中小型团队。
常见的集中式版本控制工具有CVS和Subversion。
CVS(Concurrent Versions System)是一种经典的集中式版本控制工具。
它使用一个服务器存储所有文件的版本,并通过客户端与服务器进行交互。
CVS提供了丰富的分支和合并功能,支持多人协同开发。
不过,CVS存在一些缺点,比如网络延迟和文件冲突等问题。
Subversion(SVN)是CVS的一个现代化替代品。
SVN与CVS类似,但在性能、功能和稳定性上都有所提升。
SVN引入了更先进的版本控制机制,如基于文件的改变记录和原子提交。
同时,SVN支持多种协议和高级特性,如分布式版本控制和关键路径缓存等。
VSS、CVS、SVN和ClearCase等配置工具的评估和比较版本 <1.0>修订历史记录目录1 概述 (4)2 主要功能说明 (4)2.1 Internet网络访问和远程管理 (5)2.2 并行开发支持 (5)2.3 跨平台开发支持 (6)2.4 开发操作使用的便利性 (6)2.5 信息安全性 (6)3 性能详述 (7)3.1 VSS (7)3.2 CVS (7)3.3 SVN (7)3.4 ClearCase (16)3.4.1 控制任何文件的版本 (17)3.4.2 在版本树中组织元件发展的过程 (17)3.4.3 使用常见的检出/编辑/检入范例 (18)3.4.4 通过分支功能支持并行开发 (19)3.4.5 自动的比较和版本间的归并 (19)1概述Visual SourceSafe:微软的版本控制工具,仅支持Windows操作系统。
虽然简单好用,但是仅适用于团队级开发,不能胜任企业级的开发工作。
Clearcase:IBM旗下Rational公司(2003年被IBM收购)的一款重量级的软件配置管理(SCM,Software Configuration Managemen)工具。
与CVS和VSS不同,Clearcase涵盖的范围包括版本控制、建立管理、工作空间管理和过程控制。
从最初的软件配置计划,到配置项的确立,从变更控制到版本控制,Clearcase贯穿于整个软件生命周期。
Clearcase支持现有的绝大多数操作系统,但它的安装、配置、使用相对较复杂,并且需要进行团队培训。
CVS:Concurrent Versions System。
CVS 是有着三十年以上的时间的考验。
CVS是开放源代码软件世界的一个伟大杰作,由于CVS功能强大,跨平台,支持并发版本控制,而且免费,所以它在全球中小型软件企业中得到了广泛使用。
CVS最大的遗憾就是缺少相应的技术支持,许多问题的解决需要自已寻找资料,甚至是研究源代码。
SVN与CVS详细比较
所有的文档都显示SVN可以取代CVS,同时SVN的问题和缺点都被隐藏了。
不幸的是,我们并不认为SVN是CVS的替代品,尽管很多缺陷都被修改了。
更有甚者,它甚至让人重回VSS。
CVS和SVN的比较类似与比较C++和Java。
很明显CVS和SVN都远比SourceSafe强大的多,如同C++和Java比Basic强大的多。
CVS代表了几乎代码控制系统的所有功能项,尽管有时他的实现并不很方便。
SVN,修正并添加了一些CVS并不拥有功能。
例如,创建标志和分支dubious,你在编辑文件是其他人不会有任何通知。
这有点象Java的发明者:他们认为你不需要指针他们就在Java里面取消了指针,Java里也没有操作符重载。
SVN并不是CVS的替代品。
他只是个不同的系统,类似于CVS。
它有些特有的功能,足以作为采用它的理由。
这些功能使他更适合于开发环境,例如对PowerBuilder。
下面你可以找到两者的相对优势、劣势。
我们假设余下的东西两者没有什么大差别。
如果你对两者都举棋不定,我们建议试试两个系统,注意观察下面几个指标。
你也可以到网上看看两者之间的讨论。
注意:这份评价表并不代表最终意见,两个系统仍然在开发之中。
最后一次更新是在2005年七月(CVS NT 2.5.01和SVN 1.2)。
编号对比项
CVS Vs SVN
===========================
1 存储类型格式
CVS是个基于RCS文件的版本控制系统。
每个CVS文件都不过是普通的文件,加上一些额外信息。
这些文件会简单的重复本地文件的树结构。
因此,不必担心有什么数据损失,如果必要的话你可以手工修改RCS文件。
------------------------------
SVN是基于关系数据库的(BerkleyDB)或一系列二进制文件的(FS_FS)。
一方面这解决了许多问题(例如,并行读写共享文件)以及添加了许多新功能(例如运行时的事务特性。
)。
然而另一方面,数据存储由此变得不透明,或是说并不那么用户友好了。
那就是为什么工具软件,对仓库(数据库)变得那么重要了。
===========================
2 速度
CVS比较慢。
------------------------------
整体而言,由于架构实现的不同, SVN的确比CVS快很多。
在网络上它只传输很少的信息并支持更多的离线模式的功能。
但这也是有代价的。
速度的代价就是巨大的存储(完全备份所有的工作文件)。
===========================
3 标志&分支(!!!重要)
在我们看来,这些实现是适宜的。
------------------------------
SVN开发员自认为把采用标志和分支而抛弃了其他三件东西是件了不起的事。
实际上这意味着他们把这个概念替换为在档案库内部复制文件或目录以便保存日志。
这样一来,无论标志创建还是分支创建都只是仓库内部的文件复制了。
在SVN的开发员看来,这是个很优雅
的决策,这让生活变得如此简便。
而我们看来,这丝毫没有什么值得骄傲之处。
对分支而言,事情还不怎么糟糕,现在分支不过是在仓库内部的一个单独的目录而已了,不象早期还有些什么交错。
对标志而言,事情就不那么妙了。
你已经不能对代码加标志了,这个功能就这么没了。
在某种程度上说,SVN全文件编号补足了这个缺陷,SVN里整个仓库都有版本号,但不是针对单个文件。
当然,如果你认为一个符号标志比一个四位编码有效的话,我们业无话可说。
===========================
4 元数据
CVS只允许存储文件。
------------------------------
SVN允许一个文件有任意都的可命名属性。
功能十分完全,但不知到有什么用。
===========================
5 文件类型
CVS最初是为文本文件存储而设计的。
因此其他文件类型(二进制,统一码)文件的支持几乎没有,如需要的话则要有其他信息,并且客户端服务器端都要调整。
------------------------------
SVN会关心所有的文件类型,不需要你来手工操作。
===========================
6 滚回
CVS允许任意的滚回,在任意一个已递交的版本上,尽管着要花些时间(所有的文件都要分别处理)。
------------------------------
SVN不允许递交后滚回。
我们建议把仓库里好的状态版本加到末尾,覆盖掉损坏的版本。
而损坏的版本无论如何也是会存在数据库里的。
(svn的滚回操作实际上是merge操作)
===========================
7 事务
CVS中的“零或一”事务原则根本没有实现。
如果检入几个文件的话(加到服务器上),很有可能部分文件完成了,而另几个没有。
做为一个潜规则,手工纠正这些并且对余下的文件(而不是所有文件)一一重复检入。
这样这些文件将在两阶段中被检入。
但至今为止,因为这个功能缺少而导致的数据仓库损坏的案例还没有出现过。
------------------------------
SVN的确支持“零或一”事务原则,这是SVN的一大优势。
===========================
8 可用性
CVS可以用在你需要的地方,支持完善。
------------------------------
SVN并未广泛运用,一些支持项目仍然没有实现。
===========================
9 内在架构与代码
CVS是个古老的系统。
起初CVS只是一些运用RCS的脚本文件。
后来这些脚本被组成一个单个应用程序,但内部结构仍然有待改进。
直到今天,仍有人企图从头开始,重写一遍CVS,但都不成功。
我们曾经尝试国重写客户端代码以期更好的集成效果,但是,不成功。
现在我们都不认为CVS在功能上能走到多远了。
------------------------------
Subversion的开发员的确花了许多时间在内部架构上。
我们仍然不知道这些决策有多大的正确性等等。
但有一点可以肯定,代码有良好的可扩展性,增强工作也在进行着。
===========================
总体评价
CVS 4
SVN 5
相同与不同:
1 对重命名、删除文件的支持
cvs:不支持本地文件重命名提交
删除分remove和erase两种前者把本地和库中文件都删除后者只是删除本地文件
不能删除文件夹
svn:支持文件重命名提交系统会提示删除旧文件,创建新文件
删除本地文件提交库中文件也被删除
2 对中文路径名的支持
cvs:支持的比较好
svn:要将权限控制文件保存为svn支持的UTF-8格式3 本地文件与库的对应关系
cvs:可以多对多
svn:一个库可以有多个工作目录但一个工作目录只能对应一个库虽然可以更改库位置但是要求很严格4 库中文件存放方式
cvs:完全用户可见方式与客户端文件夹结构完全一致(cvs生成文件除外)
svn:与vss相似,看不到文件真正的内容5 用户、权限管理
cvs:管理员很难清楚的知道一个项目到底有多少个用户各用户的权限和密码是什么只能用分组的方式管理用户而且密码和权限还是不清晰
svn:查看、修改配置文件即可6 权限
cvs:有read、write、creat、none这四种权限,任何人不能删除文件夹(admin也只能跑到服务器上把相应文件夹残忍删除?我暂时只知道这个方法……汗-_-‖)
svn:只有read、write、none三种权限creat和delete权限好象和write是捆绑在一起的。