CVS与SVN的区别

CVS

    CVS是一个典型的服务器/客户端软件,有Unix版本的CVS,有Linux版本的CVSWindows版本的CVSCVS支持远程管理,项目组分布开发时一般都采用CVS。安装,配置较为复杂,但使用比较简单,只要对配置管理做简单的培训即可。安全性高,CVS服务有自己专用的数据库,文件存储并不采用“共享目录”方式,所以不受限于局域网。CVS可以跨平台,支持并发版本控制,而且免费。CVS不支持文件改名,只针对文件控制版本而没有针对目录的管理,摈弃缺少相应的技术支持,许多问题的解决需要自己找资料,甚至 是研究源代码。但也可以根据自己的需要进行编程。

         相对功能单一、简陋、适用于几个人的小型团队,在数据量不大的情况下,性能可以接受。

SVN

       SVN(Subversion)是一种版本管理系统,其前身是CVS。SVN是根据CVS的功能为基础来设计的,它出包括了CVS的大多数特点外,还有一些新的功能,如:文件目录可以方便的改名、基于数据库的版本库、操作速度提升、权限管理更完善等。

 

CVSSVN比较

(客户端:文件符号表示意义[勾表示与服务器端的最新状态更新,‘!’感叹号表示修改之后没有更新],‘?’问好表示没有和服务器端保持联系)

 

 

这里有收集整理的关于SVN的东西,1——SVN基本使用手册 2——Subversion 错误信息一览表.3——svn的一些常见问题,后面我还会把文档供给大家下载,共同学习~

Subversion 错误信息一览表
注意:

1.不同的客户端(命令行,TortoiseSVN,AnkhSVN, Subclipse等)的出错信息可能稍有不同。

2.下面表格中的出错信息以http://svn.moon.ossxp.com/svn/test 版本库做示例,仅供参考。



编号
出错信息
问题剖析
解决方案

1.
svn: Server sent unexpected return value (500 Internal Server Error) inresponse to OPTIONS request for 'http://svn.moon.ossxp.com/svn/test'
错误的用户名
检查登录的用户名是否输入错误

svn: 服务器发送了意外的返回值(500Internal Server Error),在响应 “OPTIONS” 的请求 “http://svn.moon.ossxp.com/svn/test” 

2.
svn: OPTIONS of 'http://svn.moon.ossxp.com/svn/test': authorization failed:Could not authenticate to server: rejected Basic challenge(http://svn.moon.ossxp.com)
错误的口令
用正确的用户名/口令登录

svn: 方法 OPTIONS 失败于“http://svn.moon.ossxp.com/svn/test”: 认证失败: Could not authenticate to server: rejected Basic challenge(http://svn.moon.ossxp.com)

3.
svn: Server sent unexpected return value (403 Forbidden) in response to OPTIONSrequest for 'http://svn.moon.ossxp.com/svn/test'
用户无权限
联系管理员,为用户分配权限

svn: 服务器发送了意外的返回值(403Forbidden),在响应 “OPTIONS”的请求“http://svn.moon.ossxp.com/svn/test” 

4.
svn: OPTIONS of 'http://www.moon.ossxp.com/svn/test': 200 OK(http://www.moon.ossxp.com)
服务器地址错误,是普通Web页面,不支持SVN WebDAV 协议
确认输入正确的 SVN 服务地址。可以在浏览器中输入该地址进行确认

svn: 方法 OPTIONS 失败于“http://www.moon.ossxp.com/svn/test”: 200 OK (http://www.moon.ossxp.com)

5.
The version of your subversion (client) is below 1.5.0, upgrade to 1.5.0 orabove. SVN below 1.5.0 can not handle mergeinfo properly. It can mess up ourautomated merge tracking!
是由于客户端的软件版本低于1.5.0造成的。服务器端对客户端软件版本进行了限制,以免对合并跟踪破坏。
升级本地的Subversion客户端软件到1.5.0或以上版本。

6.
svn: This client is too old to work with working copy '.'. You need to get anewer Subversion client, or to downgrade this working copy. Seehttp://subversion.tigris.org/faq.html#working-copy-format-change for details.
安装了多个版本的SVN客户端(TSVN,Subclipse,...),且各个客户端的版本不一致。高版本的SVN客户端会自动更新本地工作目录中的 .svn 目录下的文件格式,导致旧版本的SVN客户端不能继续访问该本地工作目录
将本机安装的所有的SVN客户端都更新到同一个大版本,以避免本地工作目录的格式不一致

svn: 此客户端对于工作副本 “.”太旧。你需要取得更新的Subversion 客户端,或者降级工作副本。参见http://subversion.tigris.org/faq.html#working-copy-format-change 以获得更详细的信息。


7.
svn: Working copy 'trunk/src' locked svn: run 'svn cleanup' to remove locks(type 'svn help cleanup' for details)
异常操作导致目录没有解锁。
一个简单的重现方法:在.svn 目录下创建空的名为 lock的文件
使用命令行"svn cleanup" 或者类似的清理动作删除锁定

svn: 工作副本“trunk/src”已经锁定 svn: 运行“svn cleanup”删除锁定 (输入“svn help cleanup”得到用法)

8.
日志中没有作者信息:------------------------------------ r9 | (没有作者信息) | … ossxp.com anonymous commit test
匿名提交导致没有作者信息
检查版本库权限控制,禁止匿名提交

9.
正在发送 ... 传输文件数据.svn: 提交失败(细节如下): svn: Commit blocked by pre-commit hook (exit code 1) with output:提交说明至少应包含个字符或者太简单了。
这是由于用户提交的提交说明(commitlog),太过简单了。在提交时需要输入有意义的 commit log
写有意义的提交说明,或者请求管理员更改版本库插件

10.
增加 Logger.c 传输文件数据.svn: 提交失败(细节如下): svn: Commit blocked by pre-commit hook (exit code 1) with output:Wide character in print at/opt/svn/svnroot/myrepos/hooks/scripts/check-case-insensitive.pl line 259. 发现文件名大小写冲突: trunk/src/Logger.c 已经存在于 logger.c
管理员设置了对新增文件是否重名(只有大小写不同)的文件进行检查。文件名只有大小写不同,在Windows上进行检出会造成麻烦
不要添加重名(仅大小写不同)文件

增加 src/文件aBc.txt 传输文件数据.svn: 提交失败(细节如下): svn: Commit blocked by pre-commit hook (exit code 1) with output:Clash: '/trunk/src/文件aBc.txt' '/trunk/src/文件abc.txt'

11.
svn: While preparing '/home/jiangxin/tmp/svn.test/trunk/src/README.txt' forcommit svn: Inconsistent line ending style
提交的文件已经设置了svn:eol-style 属性,但是该文本内的换行符有DOS的换行符CRLF,也有Unix换行符LF,不一致!
统一该文本文件内的换行符。Linux下可以用dos2unix,unix2dos, sed等命令。Windows下可用UltraEdit 进行转换。

svn: 当为提交操作准备“/home/jiangxin/tmp/svn.test/trunk/src/README.txt” svn: 不一致的行结束样式

12.
svn: Failed to add file 'Makefile': an unversioned file of the same namealready exists
执行更新(svn up)时报错。因为其他人新增一个文件到服务器,而本地却存在一个同名文件(未版本控制)
先将本地重名文件改名,再执行"svnup",之后再比较、合并文件。或者执行 "svn up --force"

svn: 增加文件'Makefile' 失败同名未版本控制的文件已存在

13.
Adding src/Makefile svn: Commit failed (details follow): svn: File'/svn/test/trunk/src/Makefile' already exists
添加新文件,提交时报错。因为其他人已经先于我增加了该文件。
先执行更新操作("svnup"),再根据提示进行操作:合并/提交...

增加src/Makefile svn: 提交失败(细节如下): svn: 文件“/svn/test/trunk/src/Makefile”已存在

14.
$ svn up Conflict discovered in 'Makefile'. Select: (p) postpone, (df)diff-full, (e) edit, (mc) mine-conflict, (tc) theirs-conflict, (s) show alloptions: p C Makefile Updated to revision 5. Summary of conflicts: Textconflicts: 1
多人同时编辑同一个文件时,可能会遇到冲突。别人先于我提交,则当我提交时要先更新。更新可能遇到不能自动解决的冲突
使用工具进行冲突解决

$ svn up  “Makefile” 中发现冲突。选择: (p) 推迟,(df) 显示全部差异,(e) 编辑, (mc) 我的版本, (tc) 他人的版本, (s) 显示全部选项: p C Makefile 更新到版本 5冲突概要:正文冲突:1

15.
svn: Commit failed (details follow): svn: File 'Makefile' is out of date svn:File not found: transaction '6-d', path '/trunk/src/Makefile'
提交的文件已被他人删除
先执行更新操作("svnup"),再根据提示解决该树冲突:删除文件或继续添加...

svn: 提交失败(细节如下): svn: 文件 “Makefile” 已经过时 svn: File not found:transaction '6-c', path '/trunk/src/Makefile'

16.
svn: Commit failed (details follow): svn: File or directory '/trunk/XXX' is outof date; try updating svn: resource out of date; try updating
基于旧版本修改是不允许的
先更新("svnupdate"),再提交

svn: 提交失败(细节如下): svn: 文件或目录 “/trunk/XXX” 已经过时;请先更新 svn: resource out of date;try updating

17.
svn: DAV request failed; it's possible that the repository's pre-revprop-changehook either failed or is non-existent svn: At least one property change failed;repository is unchanged svn: Error setting property 'log': Repository has notbeen enabled to accept revision propchanges; ask the administrator to create apre-revprop-change hook
修改提交说明等操作属于高风险操作,因为该操作没有被版本控制,属于不可恢复的操作。缺省禁止。
请联系管理员,启用该版本的相关钩子,允许修改版本属性。参见管理员钩子设置

svn: DAV 请求失败;可能是版本库的 pre-revprop-change钩子执行失败或者不存在svn: 至少有一个属性变更失败;版本库未改变 svn: 设置属性 “log” 出错: Repository has not been enabledto accept revision propchanges; ask the administrator to create apre-revprop-change hook

18.
传输文件数据.svn: 提交失败(细节如下): svn: Commit blocked by pre-commit hook (exit code 1) with output:==================== trunk/src/File.c : 属性 svn:mime-type 或者 svn:eol-style 没有设置 ==================== 管理员已经启用换行符属性检查。每一个新添加的文件必须指定换行符。如果 svn:mime-type 属性为文本文件,则必须设置 svn:eol-style 属性。对于二进制文件,执行如下命令: svn propset svn:mime-typeapplication/octet-stream path/of/file 对于文本文件,可以执行如下命令: svn propset svn:mime-type text/plain path/of/file svn propsetsvn:eol-style native path/of/file 为了避免每次添加文件手动设置,可以启用自动属性设置 ...
管理员启用了检查新文件换行符的扩展
为新增文件设置正确的svn:mime-type / svn:eol-style 属性

转载于:https://my.oschina.net/acmfly/blog/71002

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值