当前位置:首页 > 服务器类 > Linux服务器 > > Apache和Subversion搭建安全CVS

Apache和Subversion搭建安全CVS

点击次数:30 次 发布日期:2008-11-22 09:40:20 作者:源代码网
对操作中断的敏感可只读加载存储平台无关可从网络文件系统访问版本库大小扩展性:修订版本树数量扩展性:文件较多的目录检出最新代码的速度大量提交的速度组访问权处理功能成熟时间
源代码网推荐

作为新一代的开源版本控制工具,Subversion以其目录版本化、原子提交、版本化的元数据、更加有效的分支和标签等优良特性,正逐渐受到开源软件社区的重视,并有望取代CVS,成为开源软件开发中版本控制的首选系统。在服务器端,Subversion最大的独特之处,在于它可以通过一个扩展模块与Apache的HTTP服务器相结合,实现很多高级的管理功能和安全特性。与CVS相比,Subversion实现了更加先进和安全的用户认证功能。在Apache的支持下,用户可以通过HTTP协议访问版本库,管理员可以对用户访问HTTP的权限做出具体的设置,同时Subversion还可以获得SSL传输加密,用户数据加密,以及目录级的访问控制等特性。

本文将在服务器端配置工作的角度,结合作者在实际开发工作当中的配置实例,介绍Subversion服务器端的基本配置和管理,以及如何将Subversion与Apache结合,实现一些高级管理功能。

Subversion简介

在开源软件的开发过程当中,由于开发方式自由和开发人员分散这些特性,版本控制问题一直是关系到项目成败的重要问题。没有版本控制系统的支持,开源软件的开发过程就是混乱和不可控制的。

长期以来,CVS作为一种普遍采用的开源版本控制工具,在很多的开源软件项目当中充当了重要的角色。在Eclipse当中,更是把CVS作为一个默认的插件,与Ant,JUnit等工具并列在一起,成为Eclipse软件开发的基本工具。近年来,随着开源社区的发展,一种功能更加强大的开源版本控制工具逐渐进入了人们的视野,那就是Subversion,凭借着更为优秀的特性,Subversion正在逐步取代CVS,成为新一代的开源版本控制工具。

相比CVS,Subversion中的目录、文件以及改名等元数据都是被版本化的,例如文件的改名、拷贝等等操作;而且,在Subversion中,提交操作是不可分割的,修订版本号是基于每次提交操作而非文件;另外,Subversion可以独立运行,有着轻量级的分支(Branching)与标签(Tagging)操作,版本库可以采用数据库(BerkeleyDB)或者是使用特定格式的文件进行存储,对二进制文件进行处理更为有效;最后,Subversion工具以及相关插件都有着很好的国际化支持,可以支持包括简体中文在内的多种语言版本,方便全球各地的开发人员。这些优秀的新特性,使得Subversion成为开源社区目前的最佳选择。

对于普通用户,即应用程序开发者而言,尤其是对Eclipse的用户而言,Subversion的使用十分的简单。通过官方提供的Eclipse插件Subclipse,用户可以在Eclipse里面很方便的使用Subversion客户端的各项基本功能。具体的客户端设置和使用方法,请参考Subversion官方网站和Subclipse官方网站。简单说来,在Eclipse中使用Subversion插件的基本功能,如更新、提交、同步、分支等等,基本上同使用Eclipse自带的CVS插件一模一样,这样,用户就可以从CVS方便的转移到Subversion。

目前,Subversion已经升级到1.3.2版本,相关下载、特性说明和详细使用手册可以在Subversion主页上找到。

简单的版本库管理

有了简单易用的客户端,大部分的用户都可以轻松使用Subversion了,不过,作为服务器端的管理人员,还必须进一步了解服务器端的基本配置管理,才可以充分利用Subversion的各项优秀特性。

版本库创建

Subversion的版本库(repository),就是位于服务器端,统一管理和储存数据的地方。本文中,我们以Linux为例,介绍在服务器端配置和管理Subversion版本库的基本方法。

要创建一个版本库,首先要确定采用哪种数据存储方式。在Subversion中,版本库的数据存储有两种方式,一种是在BerkeleyDB数据库中存放数据;另一种是使用普通文件,采用自定义的格式来储存,称为FSFS。

两种存放方式各有优缺点,读者可以参考http://svnbook.org/上面的文档来了解两者详细的比较和区别,这里,我们仅引用上述文档当中的简单对照表,给出一个简明的比较。


表1两种版本库数据存储对照表
特性BerkeleyDBFSFS
很敏感;系统崩溃或者权限问题会导致数据库“塞住”,需要定期进行恢复。不敏感
不能可以
不能可以
不能可以
稍大稍小
无限制某些本地文件系统在处理单一目录包含上千个条目时会出现问题。
较慢较慢
较快可以
较慢,但时间被分配在整个提交操作中较快,但最后较长的延时可能会导致客户端操作超时
对于用户的umask设置十分敏感,最好只由一个用户访问。对umask设置不敏感
2001年2004年

确定了具体的数据存储类型,只要在命令行当中执行svnadmin命令就可以创建一个Subversion版本库,命令如下

#创建文件夹$mkdir/etc/svn/$mkdir/etc/svn/repos#运行创建版本库的命令,指定数据存储为FSFS,如果要指定为BerkeleyDB,则将fsfs替换为bdb$svnadmincreate--fs-typefsfs/etc/svn/repos

如果一切正常,命令执行后不会有任何反馈信息而迅速返回,这样,一个新的版本库就被创建出来了。我们来查看一下生成的版本库结构:

$ls-l/etc/svn/repos总用量56drwxrwxr-x2robertrobert40968月2717:27confdrwxrwxr-x2robertrobert40968月2717:27davdrwxrwsr-x5robertrobert40968月2717:27db-r--r--r--1robertrobert28月2717:27formatdrwxrwxr-x2robertrobert40968月2717:27hooksdrwxrwxr-x2robertrobert40968月2717:27locks-rw-rw-r--1robertrobert2298月2717:27README.txt

其中,conf目录下存放了版本库的配置文件,包括用户访问控制和权限控制等内容,文件本身的注释说明十分详细,读者可以根据注释自行配置;dav目录是提供给Apache相关模块的目录,目前为空;db目录下存放着Subversion所要管理的所有受版本控制的数据,不同的存储方式(BerkeleyDB或者FSFS)下有着不同的目录结构,不过我们一般不用直接修改和查看这个目录下的内容,Subversion的命令可以安全的操作这个目录;另外,hooks目录存放着钩子脚本及其模版(一种版本库事件触发程序),locks目录存放着Subversion版本库锁定数据,format文件记录了版本库的布局版本号。

源代码网供稿.
网友评论 (0)
会员中心
服务器类
本站推荐
服务器类之精华