Java开发网 Java开发网
注册 | 登录 | 帮助 | 搜索 | 排行榜 | 发帖统计  

您没有登录

» Java开发网 » Design Pattern & UML  

按打印兼容模式打印这个话题 打印话题    把这个话题寄给朋友 寄给朋友    该主题的所有更新都将Email到你的邮箱 订阅主题
flat modethreaded modego to previous topicgo to next topicgo to back
作者 【转贴】Subversion第一印象
zcooker





发贴: 33
积分: 20
于 2005-02-26 23:22 user profilesend a private message to usersearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
刚刚再坛子上晃荡,看到了一个新的CVS替代品Subversion。到Google上看了一眼,居然是大大有名的CVS的作者另起炉灶的一个新的开源版本管理工具。看到这篇文章写的比较全面,转贴过来,大家共享。

另外:Eclipse已经有插件支持Subversion了。不过实际效果还没测试,是不是……嘿嘿。

待我装上看看,有时间的话再写一个使用体验吧。:P

以下是转贴内容——自赛迪网
长久以来,在开源世界中,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良好的继承性,一定会有很好的发展。



作者 Re:【转贴】Subversion第一印象 [Re:zcooker]
wuliang





发贴: 46
积分: 20
于 2005-03-24 11:26 user profilesend a private message to usersearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
目前服务端还不支持windows,tigris.org里面的项目好像不怎么成功
没用过,随便说说,不要bt:)



作者 Re:【转贴】Subversion第一印象 [Re:zcooker]
davidself

猫哥

CJSDN高级会员


发贴: 1506
积分: 333
于 2005-03-24 11:57 user profilesend a private message to usersearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
我也是这几天转到subversion来的,取代了原来的CVS。


--108的上铺--
davidself@twitter
作者 Re:【转贴】Subversion第一印象 [Re:zcooker]
airport





发贴: 5
积分: 0
于 2005-05-27 08:52 user profilesend a private message to usersearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
问题是真的好吗?原来的CVS有什么不好需要用这个东东?


作者 Re:【转贴】Subversion第一印象 [Re:wuliang]
Big Blue



版主


发贴: 601
积分: 121
于 2005-05-27 09:36 user profilesend a private message to usersend email to Big Bluesearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
wuliang wrote:
目前服务端还不支持windows,tigris.org里面的项目好像不怎么成功
没用过,随便说说,不要bt:)

服务器端支持Windows,我这里已经跑起来了



作者 Re:【转贴】Subversion第一印象 [Re:zcooker]
鸡肋男





发贴: 237
积分: 12
于 2005-08-08 18:39 user profilesend a private message to usersearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
将subversion作为apache的模块安装,则操作系统是否为windows就没有多大关系了。



flat modethreaded modego to previous topicgo to next topicgo to back
  已读帖子
  新的帖子
  被删除的帖子
Jump to the top of page

   Powered by Jute Powerful Forum® Version Jute 1.5.6 Ent
Copyright © 2002-2021 Cjsdn Team. All Righits Reserved. 闽ICP备05005120号-1
客服电话 18559299278    客服信箱 714923@qq.com    客服QQ 714923