`
sean_gao
  • 浏览: 230365 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

刚才见面,就说再见: 小记Subversion试用心得

阅读更多

由于工作需要,最近在Linux服务器上试用Subversion,如果一切顺利,全公司的文档都将交给Subversion管理。我承认我对Subversion一直存在偏见,但为了给大家一个交代,还是硬着头皮小试了一下。结果运行数天以后,终于还是回到了CVS的老路上。

Subversion的优点就不在这里重复了,网上很多介绍文章,也有很多忠实粉丝,不过没办法,我还是更喜欢CVS的简单和直接。熟悉Unix和类Unix系统的朋友一定有同感,CVS更加符合Unix的思维和解决问题的方式。
让我们最终放弃Subversion主要有以下大大小小的原因:
1- 一个新建的几乎是空的资源库,打包后大小即有39MB上下; << 经核实错怪SVN了,实测完全空白的资源库124K,向大家道歉!
2- 资源库几乎是以一种完全不透明的方式存储用户资源库文件;
3- 没有一个官方的、安全可靠的方式彻底删除一个误提交的文件,一旦提交上去,你的资源库将永远背着这个包袱; << 这一条实在让我无法忍受。

对于最后一条,官方说法是提供了一个svndumpfilter的方式,先把资源库dump出来,然后pipe到svndumpfilter过滤掉匹配的文件,最后再load回去。这几乎就是给我们判了死刑:dump文件动辄就会是好几个G,且随着时间增长,或者错误提交持续出现在超大型文件上,要完成这个dump和filter,以及周期性的备份,将要吃掉多少资源,不敢想象;svndumpfilter不支持wildcast,且这个字符串匹配由于是整个dump文件pipe到svndumpfilter,无法保证精确制导,尤其在生产环境,敏感文件被上传、有效文件被误删或者资源库遭到破坏的后果是很严重滴。

分享到:
评论
15 楼 李超群 2007-03-16  
首先第一个问题,我新建一个repository,大小是22.5k.我们一个已经基本完成的rails的项目,目前repository大小是8.9M.

第二,subversion使用bdb做数据存储,是没办法直接看到。但是为了更快的访问。仔细看一下bdb的资料,访问起来应该不难。

第三,如果使用命令行,在commit之前一定要做的事就是status看一下目前所有添加的文件。同时Commit时添加message信息。如果确实是有误添加的情况(这种情况应该尽量避免),delete再commit或者直接用eclipse的插件在repository里删。

我看到很多人使用Subversion时跟cvs一样。直接在某个文件上点击提交。subversion的revision是用于repository的而不是用于File的。所以正确的使用方式很重要。

因为Subversion的方式,我们基本上不需要tag功能。所以从长久来看,肯定要比cvs的文件占用小得多。
14 楼 sean_gao 2007-03-15  
李超群 写道
不明白。也没听说过cvs比svn慢。至于第三条更是自己不会操作的原因。mi


就我的体验,CVS当然比Subversion更快。至于如何完美解决这个第三条,如果你会操作,且曾经成功在企业中应用没有遇到任何我在这里提到的可能发生的问题,还望指教。
13 楼 dengyin2000 2007-03-15  
robbin 写道
我在06年尝试过两次使用svn,最后两次都换回到cvs来。svn的缺点除你上面提到的之外,还有就是:

1、速度慢,非常慢。我构建在Linux/reiserfs上的cvs server,不管多大的cvs repository,同步一次,从来不超过5秒种。svn server即使走svn协议,同步一次都至少好几十秒,至于走http协议,慢得就没谱了。

2、在本地保留修改备份,我都连接svn服务器了,你还给我保留,造成本地项目目录急剧膨胀,动辄几百MB的空间占用,项目开发的时候,文件导航速度明显变慢。



不需要同步,直接update就行。subclipse使用同步时非常慢。 update的话就非常快了。我公司的外包项目也是客户猪的国外的。更新起来还是比较快的。 大家可以试试google code host。使用的也是svn。速度也非常快
12 楼 李超群 2007-03-15  
不明白。也没听说过cvs比svn慢。至于第三条更是自己不会操作的原因。mi
11 楼 sean_gao 2007-03-15  
weiqingfei 写道
sean_gao 写道
hgq0011 写道
能告诉我CVS对WORD文档是怎么管理的呢?
我一般用CVS来对代码就行管理,但试过对WORD文档似乎不支持。研究了很久也没有搞定,郁闷


把.doc当作一般binary格式的文件,只是做版本控制的话,CVS没有问题的,我们一直在用。实在需要diff或查看修改历史,也可以通过Word自带的工具来做。


没有用过CSV
CSV没有word的diff插件么?


我猜你是想说是CVS吧,CVS是Unix下经典的版本管理系统,使用起来简单、直接而透明。如果硬要追究为什么CVS对.doc文档支持很有限,那是因为Unix和微软的软件哲学,根本就是南辕北辙。

另外我想说的是: Unix is not for everyone, neither is CVS.
10 楼 weiqingfei 2007-03-15  
sean_gao 写道
hgq0011 写道
能告诉我CVS对WORD文档是怎么管理的呢?
我一般用CVS来对代码就行管理,但试过对WORD文档似乎不支持。研究了很久也没有搞定,郁闷


把.doc当作一般binary格式的文件,只是做版本控制的话,CVS没有问题的,我们一直在用。实在需要diff或查看修改历史,也可以通过Word自带的工具来做。


没有用过CSV
CSV没有word的diff插件么?
9 楼 sean_gao 2007-03-15  
<br/>
<strong>xin_wang 写道:</strong><br/>
<div class='quote_div'><br/>
<strong> 请教楼主,svn delete命令不行吗?看文档好像是可以从资源库中直接删除的?</strong></div><strong>
<br/>
Subversion有意设计成所有提交过的文件都不会丢失,举例来说你新提交一个文件,版本号更新为123,然后本地删掉,再提交,版本号变成124,这样123版本检出包含你的那个文件,124版本检出后不包含。除非你强行破坏性的人为干预,只要别人指定要123版本,那么别人就能够取得你的这个看似已经删除的文件。<br/>
<br/>
这后面不是在变魔术,Subversion资源库保存了所有提交过的文件及其所有历史版本。<br/>
<br/></strong>
8 楼 抛出异常的爱 2007-03-15  
看不到不代表 不占地方
7 楼 xin_wang 2007-03-15  
<br/>
<strong>sean_gao 写道:</strong><br/>
<div class='quote_div'><br/>
由于工作需要,最近在Linux服务器上试用Subversion,如果一切顺利,全公司的文档都将交给Subversion管理。我承认我对Subversion一直存在偏见,但为了给大家一个交代,还是硬着头皮小试了一下。结果运行数天以后,终于还是回到了CVS的老路上。<br/>
<br/>
Subversion的优点就不在这里重复了,网上很多介绍文章,也有很多忠实粉丝,不过没办法,我还是更喜欢CVS的简单和直接。熟悉Unix和类Unix系统的朋友一定有同感,CVS更加符合Unix的思维和解决问题的方式。<br/>
让我们最终放弃Subversion主要有以下大大小小的原因:<br/>
1- 一个新建的几乎是空的资源库,打包后大小即有39MB上下;<br/>
<br/>
我刚刚用海龟做了一个代码库,导入了一个不到5M的项目和2M的二进制文件(.doc和.bmp),导入后整个库的大小也就是4M多一点,不知道楼主是否弄错了?<br/>
<br/>
3- 没有一个官方的、安全可靠的方式彻底删除一个误提交的文件,一旦提交上去,你的资源库将永远背着这个包袱; &lt;&lt; 这一条实在让我无法忍受。<br/>
<br/>
</div>
请教楼主,svn delete命令不行吗?看文档好像是可以从资源库中直接删除的?
6 楼 sean_gao 2007-03-15  
dongbin 写道
楼主能指点一下,源代码多大的时候,svn才慢么?
我用svn做过的都是小项目,没遇见过很慢的情况。


Subversion的性能跟机器配置也有关系的,只是大小在同样级别的资源库,Subversion要比CVS慢,对于较大的资源库,这种感觉更加明显。不过性能问题并不是最终让我们放弃Subversion的决定性因素,让我们最终放弃的是原帖提到的第三点。

作为参考,我们的源代码资源库有200M左右,文档资源库陆续加入文档后涨到3G(全部检出后的大小)。

5 楼 dongbin 2007-03-15  
楼主能指点一下,源代码多大的时候,svn才慢么?
我用svn做过的都是小项目,没遇见过很慢的情况。
4 楼 sean_gao 2007-03-15  
hgq0011 写道
能告诉我CVS对WORD文档是怎么管理的呢?
我一般用CVS来对代码就行管理,但试过对WORD文档似乎不支持。研究了很久也没有搞定,郁闷


把.doc当作一般binary格式的文件,只是做版本控制的话,CVS没有问题的,我们一直在用。实在需要diff或查看修改历史,也可以通过Word自带的工具来做。
3 楼 sean_gao 2007-03-15  
Subversion号称要革CVS的命,看来很多人都不买它的账啊,呵呵。

我们用的是svn协议,反正也不打算提供Web界面,就没有考虑HTTP,文件少的时候感觉还好,文件一多,速度明显变慢。

2 楼 hgq0011 2007-03-15  
能告诉我CVS对WORD文档是怎么管理的呢?
我一般用CVS来对代码就行管理,但试过对WORD文档似乎不支持。研究了很久也没有搞定,郁闷
1 楼 robbin 2007-03-15  
我在06年尝试过两次使用svn,最后两次都换回到cvs来。svn的缺点除你上面提到的之外,还有就是:

1、速度慢,非常慢。我构建在Linux/reiserfs上的cvs server,不管多大的cvs repository,同步一次,从来不超过5秒种。svn server即使走svn协议,同步一次都至少好几十秒,至于走http协议,慢得就没谱了。

2、在本地保留修改备份,我都连接svn服务器了,你还给我保留,造成本地项目目录急剧膨胀,动辄几百MB的空间占用,项目开发的时候,文件导航速度明显变慢。

相关推荐

    版本控制:Subversion使用指南

    压缩包中的"Pragmatic.Bookshelf.Pragmatic.Version.Control.Using.Subversion.2nd.Edition.Jun.2006.pdf"很可能是《实效版本控制:使用Subversion》的电子书,这本书详细介绍了如何有效地使用Subversion进行版本...

    Subversion使用简介

    - **代码审查**:使用Subversion进行代码审查,确保代码质量并促进知识分享。 - **定期合并**:鼓励频繁的小规模合并,以减少解决冲突的复杂性。 通过理解和熟练掌握Subversion的这些核心概念和操作,开发团队可以...

    使用Subversion进行版本控制 PDF中文版

    《使用Subversion进行版本控制 PDF中文版》这一资源,深入介绍了Subversion(SVN)这一流行版本控制系统的基本概念、操作流程以及高级功能,对于想要深入了解或学习版本控制系统的开发者来说,无疑是一份宝贵的学习...

    Subversion Edge详细安装与使用手册

    ### Subversion Edge 详细安装与使用手册 #### 一、Subversion Edge 下载与安装 ##### 1.1 下载地址 Subversion Edge 的下载地址为:[http://www.collab.net/svnedge](http://www.collab.net/svnedge)。 ##### ...

    Subversion-1.6.3安装包及一些使用说明

    Subversion(简称SVN)是一种广泛使用的版本控制系统,它允许团队协作开发,跟踪代码更改,并管理项目资源。Subversion-1.6.3是Subversion的一个稳定版本,提供了高效的版本控制功能,尤其适合软件开发团队。 1. **...

    Subversion使用说明

    Subversion使用说明 1. 概述 Subversion(简称SVN)是一种版本控制系统,用于管理文件和目录的变更历史,使多人协作开发成为可能。它允许开发者在项目开发过程中跟踪每一次修改,以便于回溯、合并代码以及解决冲突...

    subversion

    12. 版本控制策略:使用Subversion时,团队需要制定合适的版本控制策略,如定期提交频率、如何处理冲突、何时创建分支等。 13. 版本库备份:定期备份版本库是必要的,以防数据丢失。Subversion提供了导出和导入功能...

    Jenkins subversion 插件和所有依赖说明:依赖安装顺序

    Jenkins Subversion 插件使得Jenkins能够与Subversion仓库进行交互,进行代码的检出、更新和提交等操作。在设置Jenkins与Subversion的集成时,正确安装和配置相关插件至关重要。 首先,我们需要了解Jenkins ...

    Windows下Subversion安装使用

    Windows下Subversion安装使用 Windows下Subversion安装使用

    Subversion 1.4.0

    Subversion 1.4.0 是一个开源的版本控制系统,专为管理软件开发中的源代码而设计。这个版本是Subversion项目在2007年发布的重要更新,它提供了许多新特性和性能改进,旨在提升开发者协作效率和版本管理体验。 1. ...

    subversion:Apache Subversion的镜像

    1. **克隆仓库**:使用`svn checkout`命令创建远程仓库的本地副本,这即是最初的镜像。 2. **定期同步**:通过`svn update`命令,保持本地镜像与远程仓库的同步,获取最新的变更。 3. **增量同步**:如果只需要更新...

    subversion-1.4.0.tar.gz

    Subversion 是一个开源的版本控制系统,它用于管理文件和目录的变更历史,使得多人协作开发时可以有效地跟踪和控制代码的变化。"subversion-1.4.0.tar.gz" 是Subversion 1.4.0 版本的源码包,以tar.gz格式压缩。这种...

    版本控制软件SubVersion使用说明

    ### 版本控制软件SubVersion使用说明 #### 版本管理概述 版本控制系统,作为支撑项目开发的关键工具,被形象地比喻为项目级别的撤销按钮、时间机器和协作平台。它确保了开发过程中每一处改动都能被追踪记录,避免...

    subversion使用指南中文版

    2. **检出仓库**:使用`svn checkout`命令检出仓库到本地工作副本。 3. **修改文件**:在本地副本中进行编辑。 4. **更新仓库**:使用`svn update`命令更新到最新的版本。 5. **提交更改**:使用`svn commit`命令将...

    svn手册.pdf Subversion使用

    《svn手册.pdf》是关于Subversion使用的一份详尽指南,Subversion是一个开源的版本控制系统,用于管理和跟踪文件和目录的变更。以下是Subversion的一些核心概念、操作和用途的详细说明: 1. 版本控制:Subversion的...

    subversion-1.6.15.zip

    Subversion(SVN)是版本控制系统的一个开源...总的来说,Subversion 1.6.15是一个强大且可靠的版本控制系统,适合各种规模的团队协作开发,通过其高效、稳定的功能,帮助开发者管理项目版本,确保代码的整洁和一致性。

    版本控制软件Subversion使用

    综上所述,Subversion作为一款功能强大且易于使用的版本控制软件,对于软件开发团队来说,能够极大地提升项目的管理和协作效率,确保代码质量和项目进度。无论是初学者还是经验丰富的开发人员,掌握Subversion的使用...

    subversion-1.7.1.zip

    这些文件对于开发人员来说是宝贵的资源,他们可以通过阅读源代码了解Subversion的工作原理,或者使用编译脚本来在本地系统上编译和安装Subversion。 如果你打算在项目中使用Subversion,你需要先安装它,然后创建一...

Global site tag (gtag.js) - Google Analytics