VSS是美国微软公司的产品,目前常用的版本为6.0版。VSS是配置管理的一种很好的入门级的工具。
易学易用是VSS的强项,VSS采用标准的windows操作界面,只要对微软的产品熟悉,就能很快上手。VSS的安装和配置非常简单,对于该产品,不需要外部的培训(可以为公司省去一笔不菲的费用)。只要参考微软完备的随机文档,就可以很快的用到实际的工程当中。
VSS的配置管理的功能比较基本,提供文件的版本跟踪功能,对于build和基线的管理,VSS的打标签的功能可以提供支持。VSS提供share(共享)、branch(分支)和合并(merge)的功能,对于团队的开发进行支持。VSS不提供对流程的管理功能,如对变更的流程进行控制。
VSS不能提供对异地团队开发的支持。此外VSS只能在windows平台上运行,不能运行在其他操作系统上。有软件提供商提供VSS插件,可以同时解决VSS跨平台和远程连接两个问题,例如SourceAnywhere for VSS, SourceOffSite等。
VSS的安全性不高,对于VSS的用户,可以在文件夹上设置不可读,可读,可读/写,可完全控制四级权限。但由于VSS的文件夹是要完全共享给用户后,用户才能进入,所以用户对VSS的文件夹都可以删除。这一点也是VSS的一个比较大的缺点。
VSS没有采用对许可证进行收费的方式,只要安装了VSS,对用户的数目是没有限制的。因此使用VSS的费用是较低的。
微软不再对VSS提供技术支持。 CVS是开发源代码的配置管理工具,其源代码和安装文件都可以免费下载。
CVS是源于unix的版本控制工具,对于CVS的安装和使用最好对unix的系统有所了解能更容易学习,CVS的服务器管理需要进行各种命令行操作。目前,CVS的客户端有winCVS的图形化界面,服务器端也有CVSNT的版本,易用性正在提高。
CVS的功能除具备VSS的功能外,还具有:
它的客户机/服务器存取方法使得开发者可以从任何因特网的接入点存取最新的代码;它的无限制的版本管理检出(checkout:注1)的模式避免了通常的因为排它检出模式而引起的人工冲突;它的客户端工具可以在绝大多数的平台上使用。同样,CVS也不提供对变更流程的自动管理功能。
一般来说,CVS的权限设置单一,通常只能通过CVSROOT/passwd, CVSROOT/readers, CVSROOT/writers文件,同时还要设置CVS REPOS的物理目录权限来完成权限设置,无法完成复杂的权限控制;但是CVS通过CVS ROOT目录下的脚本,提供了相应功能扩充的接口,不但可以完成精细的权限控制,还能完成更加个性化的功能。
CVS是开发源码软件,无需支付购买费用。
同样因为CVS是开发源码软件,没有生产厂家为其提供技术的支持。如发现问题,通常只能靠自己查找网上的资料进行解决。 StarTeam是Borland公司的配置管理工具,StarTeam属于高端的工具,在易用性,功能和安全性等方面都很不错。
StarTeam的用户界面同VSS的类似,它的所有的操作都可通过图形用户界面来完成,同时,对于习惯使用命令方式的用户,StarTeam也提供命令集进行支持。同时,StarTeam的随机文档也非常详细。
除了具备VSS,CVS所具有功能外,StarTeam还提供了对基于数据库的变更管理功能,是相应工具中独树一帜的。StarTeam还提供了流程定制的工具,用户可跟据自己的需求灵活的定制流程。与VSS和CVS不同,VSS和CVS是基于文件系统的配置管理工具,而StarTeam是基于数据库的。 StarTeam的用户可根据项目的规模,选取多种数据库系统。
STARTEAM无需通过物理路径的权限设置,而是通过自己的数据库管理,实现了类似WINDOWSNT的域用户管理和目录文件ACL控制。 StarTeam完全是域独立的。这个优势可以为用户模型提供灵活性,而不会影响到现有的安全设置。StarTeam的访问控制非常灵活并且系统。您可以对工程,视图,文件夹一直向下到每一个小的item设置权限。对于高级别的视图(view),访问控制可以与用户组、用户、项目甚至视图等链接起来。
StarTeam是按license来收费的,比起VSS,CVS来,企业在启动StarTeam进行配置管理需要投入一定资金。
Borland公司将对用户进行培训,并协作用户建立配置管理系统。并对用户提供技术升级等完善的支持。 ClearCase是Rational公司的产品,也是目前使用较多的配置管理工具。
ClearCase的安装和维护远比StarTeam复杂,要成为一个合格的ClearCase的系统管理员,需要接受专门的培训。ClearCase提供命令行和图形界面的操作方式,但从ClearCase的图形界面不能实现命令行的所有功能。
ClearCase提供VSS,CVS,StarTeam所支持的功能,但不提供变更管理的功能。Rational另提供了ClearQuest工具提供对变更管理的功能,与StarTeam不同,ClearCase后台的数据库是专有的结构。ClearCase对于windows和unix平台都提供支持。ClearCase通过多点复制支持多个服务器和多个点的可扩展性,并擅长设置复杂的开发过程。
ClearCase的权限设置功能与StarTeam相比,StarTeam有独立的安全管理机制,ClearCase没有专用的安全性管理机制,依赖于操作系统。
要选用ClearCase,需要考虑的费用除购买license的费用外,还有必不可少的技术服务费用,没有Rational公司的专门的技术服务,很难发挥出ClearCase的威力。如现在网上虽有ClearCase的破解软件,但尝试应用的公司大多失败的缘故。另外,对于web访问的支持,对于变更管理的支持功能都要另行购买相应的软件。
Rational公司已被IBM公司收购,所以有可靠的售后服务保证。 SVN全名Subversion,即版本控制系统。
SVN与CVS一样,是一个跨平台的软件,支持大多数常见的操作系统。作为一个开源的版本控制系统,Subversion管理着随时间改变的数据。这些数据放置在一个中央资料档案库中。这个档案库很像一个普通的文件服务器,不过它会记住每一次文件的变动。这样你就可以把档案恢复到旧的版本,或是浏览文件的变动历史。Subversion是一个通用的系统,可用来管理任何类型的文件,其中包括了程序源码。
SubVersion:实现服务系统的软件。
TortoiseSVN:是SVN客户端程序,为windows外壳程序集成到windows资源管理器和文件管理系统的Subversion客户端。
SVNService.exe:是专为 SubVersion开发的一个用来作为 Win32服务挂接的入口程序。
AnkhSVN:是一个专为Visual Studio提供SVN的插件。 SourceAnywhere系列是由加拿大公司Dynamsoft开发的,有三个产品,SourceAnywhere for VSS, SourceAnywhere Standalone, SourceAnywhere Hosted.
SourceAnywhere for VSS是微软推荐的远程和跨平台访问VSS的工具。SourceAnywhere Standalone界面风格与VSS相似,但它是基于SQL Server的,且有其它一些安全和远程访问机制,可以广域网中使用;支持把数据从VSS库中导入SourceAnywhere。SourceAnywhere Hosted是SourceAnywhere Standalone的托管服务SaaS。 Git是一个开源的分布式版本控制系统,用以有效、高速的处理从很小到非常大的项目版本管理.
Git是 Linus Torvalds为了帮助管理 Linux内核开发而开发的一个开放源码的版本控制软件。
Torvalds开始着手开发 Git是为了作为一种过渡方案来替代 BitKeeper,后者之前一直是 Linux内核开发人员在全球使用的主要源代码工具。开放源码社区中的有些人觉得 BitKeeper的许可证并不适合开放源码社区的工作,因此 Torvalds决定着手研究许可证更为灵活的版本控制系统。尽管最初 Git的开发是为了辅助 Linux内核开发的过程,但是我们已经发现在很多其他自由软件项目中也使用了 Git。例如最近就迁移到 Git上来了,很多 Freedesktop的项目也迁移到了 Git上。
现在的软件项目开发中,必然涉及版本控制(Revision Control)工具。没有使用版本控制工具的开发工作,有人形容就如同生活在“黑暗时代”。版本控制工具是项目开发中必不可少的,以此进行的版本控制可以确保在软件项目开发中,不同的开发人员所涉及的同一文档都得到更新。
关于软件版本控制
如果在开发团队中没有使用版本控制,多个开发人员共同负责同一个软件文档的开发,每个人在各自的机器上有整个软件文档的备份,并对之实施编程开发,在分别完成各自任务之后,再通过文本比对工具将各自机器上的不同版本的程序整合到一台机器上。没有进行版本控制或者版本控制本身缺乏正确的流程管理,在软件开发过程中将会引入很多问题,如软件代码的一致性、软件内容的冗余、软件过程的事物性、软件开发过程中的并发性、软件源代码的安全性,以及软件的整合等问题。
版本控制的目的是实现开发团队并行开发、提高开发效率的基础。其目的在于对软件开发进程中文件或目录的发展过程提供有效的追踪手段,保证在需要时可回到旧的版本,避免文件的丢失、修改的丢失和相互覆盖,通过对版本库的访问控制避免未经授权的访问和修改,达到有效保护企业软件资产和知识产权的目的。
版本控制的功能在于跟踪记录整个软件的开发过程,包括软件本身和相关文档,以便对不同阶段的软件及相关文档进行表示并进行差别分析,对软件代码进行可撤消的修改,便于汇总不同开发人员所做的修改,辅助协调和管理软件开发团队。
Linux下的版本控制
版本控制在空间上可以保证完成集中统一管理,解决一致性和冗余问题。在开发工作中,开发人员在提交软件代码的时候一般采用服务器/客户端方式,尽管开发人员可以在自己的本地留有备份,但最终唯一有效的只有服务器端的程序代码;在时间上全程跟踪记录工具将会自动记录开发过程中的每个更改细节,和不同时期的不同版本。这在一定程度上可以解决冗余、事务性处理并发性问题。项目管理人员可以通过版本控制对团队中的不同人员,实施操作权限的控制。对于不同角色的开发人员,对软件的不同部分可以定义不同的访问权限。这在一定程度可以解决软件安全性问题。版本控制工具的使用,可以减轻开发人员的负担,节省时间,同时降低人为错误。
svn版本控制器安装分类:学习园地Subversion系统
多年来,并发版本系统(CVS)一直是在Linux上管理代码或者文本的标准。作为基于RCS上建立但却允许多用户协作的系统而言,CVS记录所有文件的修改信息。这对于程序开发者、网络设计者和系统管理员而言,是非常有用的。
然而,CVS逐渐显示出它的衰老,出现了相似的源代码管理软件。然而大多这种东西都是以牟利为主要目的的。
Subversion就是一种相对新鲜的源代码管理系统。虽然事实上它还在不断的反展之中,但是Subversion已经是一个非常稳定而且成熟的产品。它是一个全新的系统,其功能可以和CVS媲美,同时,它要比CVS更直观,更容易操作。本文就Subversion的安装和一些特殊功能作一个介绍。
安装服务器端
第一步:下载Apache和SVN源码包
从官方网站台下载httpd-2.0.52.tar.gz,subversion-1.2.3.tar.gz
(因为redhat 9默认安装的Apache没有并包含--enable-so选项,所以无法产生mod_dav_svn.没有这个模块,SVN就无法采用http方式运行,所以必须重新编译新的Apache)
以root身份执行:
#tar zxvf httpd-2.2.0.tar.gz
#cd httpd-2.2.0
#./configure--enable-dav--enable-so--enable-maintainer-mode
#make
#make install
此时会产生/usr/local/apache2目录,接着执行:
#tar zxvf subversion-1.2.3.tar.gz
#./configure--with-apxs=/usr/local/apache2/bin/apxs
# rm/usr/local/lib/libsvn*
# make clean&& make&& make install
此时会自动在/usr/local/apache2/conf/httpd.conf添加
LoadModule dav_svn_module modules/mod_dav_svn.so
安装完成后,运行svnserver--version确认版本号1.2.3。
SVN服务器安装结束.
第二步,创建仓库 svnadmin create/home/svnrepo
/root/svnrepo为所创建仓库的路径,理论上可以是任何目录
第三步,修改配置文件/home/svnrepo/conf/svnserve.conf
代码
#去掉#[general]前面的#号
[general]
#匿名访问的权限,可以是read,write,none,默认为read
anon-access= none
#认证用户的权限,可以是read,write,none,默认为write
auth-access= write
#密码数据库的路径,去掉前面的#
password-db= passwd
注意:所有的行都必须顶格,否则报错。
建议:为了防止不必要的错误,建议你直接用我上面的内容覆盖掉文件原来的内容
第四步,修改配置文件passwd。
代码
[users]
sxy= sxy
注意
1.一定要去掉[users]前面的#,否则svn只能以匿名用户登录,客户端不会出现登录窗口,除非你的anon不为none,否则将返回一个错误。
2.这里的密码都是没有加密的,我按照一些教程所说的用htpasswd生成的密码无法使用。
第五步,启动svn服务
对于单个代码仓库
启动命令 svnserve-d-r/home/svnrepo--listen-host 192.168.100.200
其中-d表示在后台运行,-r指定服务器的根目录,这样访问服务器时就可以直接用svn://服务器ip来访问了。如果服务器有多ip的话--listen-host来指定监听的ip地址.
我们可以在svn客户端中通过svn://192.168.100.200来访问svn服务器
对于多个代码仓库,我们在启动时也可以用-r选项来指定服务器根目录,但访问时需要写上每个仓库相对于svn根目录的相对路径.
比如,我们有两个代码仓库/home/repoa和/home/repob,我们用svnserve-d-r/home--listen-host 192.168.100.200来启动,那么在客户端访问时可以用svn://192.168.100.200/repoa和svn://192.168.1.200/repob来分别访问两个项目
启动完成以后,我们可以用ps aux|grep svnserv来查看是否存在svnserve进程.
第六步开放服务器端口
svn默认端口是3690,你需要在防火墙上开放这个端口。
/sbin/iptables-A INPUT-i eth0-p tcp--dport 3690-j ACCEPT
/sbin/service iptables save
你也可以通过svnserve的--listen-port选项来指定一个已经开放的其他端口,不过这样的话客户端使用也必须家上端口,如svn://192.168.100.200:9999/.
第七步,使用svn客户端导入项目
推荐使用客户端
eclipse插件
附:svnserve [选项]
有效选项:
-d [--daemon]:后台模式
--listen-port arg:监听端口(后台模式)
--listen-host arg:监听主机名或IP地址(后台模式)
--foreground:在前台运行(调试时有用)
-h [--help]:显示这个帮助
--version:显示版本信息
-i [--inetd]: inetd模式
-r [--root] arg:服务根目录
-R [--read-only]:不赞成;使用档案库配置文件
-t [--tunnel]:隧道模式
--tunnel-user arg:隧道用户名(模式是当前用户UID的名字)
-T [--threads]:使用线程代替进程
-X [--listen-once]:监听一次(调试时有用)
安装客户机端
window客户机:
直接安装TortoiseSVN-1.1.1-UNICODE_svn-1.1.1.msi,方法同一般软件安装相同。
Linux客户机:
方法舆安装服务器相同。
(注意redhat 9默认安装的SVN版本为0.17.1,它的客户端命令svn无法舆新的SVN服务器通讯,必须重新安装)
我是从“上海全鼎软件学院”毕业的————————
转载请注明:片头模版 » 软件版本管理工具(版本控制软件的常用的版本控制软件简介)