Linux中国 Linux中国门户站!
设为主页 设为主页
收藏本站 收藏本站
 
当前位置 :首页 ->Linux技术 ->Linux程序设计 ->正文

Apache和Subversion 搭建安全CVS

来源:BIM DW中国 作者:吴玥颢,胡睿  时间:2007-04-22 点击: [收藏] [投稿]
组访问权处理 对于用户的 umask 设置十分敏感,最好只由一个用户访问。 对 umask 设置不敏感
功能成熟时间 2001 年 2004 年

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

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

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

$ ls -l /etc/svn/repos
总用量 56
drwxrwxr-x  2 robert robert 4096  8月 27 17:27 conf
drwxrwxr-x  2 robert robert 4096  8月 27 17:27 dav
drwxrwsr-x  5 robert robert 4096  8月 27 17:27 db
-r--r--r--  1 robert robert    2  8月 27 17:27 format
drwxrwxr-x  2 robert robert 4096  8月 27 17:27 hooks
drwxrwxr-x  2 robert robert 4096  8月 27 17:27 locks
-rw-rw-r--  1 robert robert  229  8月 27 17:27 README.txt
			

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

项目添加

有了新建的版本库,就可以往里面添加项目了。不过,管理员必须考虑的问题是,应该将每一个项目分别放在不同的版本库里面,还是应该将它们放在统一的版本库里面。统一的版本库可以让管理员更加容易的升级和备份,不过,由于访问权限控制是针对整个版本库的,所以,统一的版本库也为不同项目配置不同的访问权限带来了麻烦。所以,管理员应该根据实际情况权衡考虑。

我们以统一的版本库为例,添加两个项目 project_luni 和 project_test。要做到这个,最好的办法就是用 svn import 命令导入已有的目录树。

首先,我们在一个临时目录下,根据 Subversion 版本控制的一般布局结构,创建出两个项目的主要目录树,如下:

/etc/svn/tmp					
|
――project_luni					
|	|
|	――branches
|	|
|	――tags
|	|
|	――trunk
|					
――project_test
	|
	――branches
	|
	――tags
	|
	――trunk

然后,用 svn import 命令来进行项目的导入:

$ svn import /etc/svn/tmp/ file:///etc/svn/repos/ --message "init"
新增           /etc/svn/tmp/project_test
新增           /etc/svn/tmp/project_test/trunk
新增           /etc/svn/tmp/project_test/branches
新增           /etc/svn/tmp/project_test/tags
新增           /etc/svn/tmp/project_luni
新增           /etc/svn/tmp/project_luni/trunk
新增           /etc/svn/tmp/project_luni/branches
新增           /etc/svn/tmp/project_luni/tags
提交后的修订版为 1。

版本库查看

作为版本库管理员,我们经常需要查看 Subversion 版本库的状况,这就需要一些“只读”的查看工具。

在上述项目导入完成以后,我们可以用 svn list 确认导入的项目是否正确:

$ svn list --verbose file:///etc/svn/repos/
1 robert                 8月 27 18:24 project_luni/
1 robert                 8月 27 18:24 project_test/

另外,如果要查看最新修订版本的信息,可以使用 svnlook info 命令:

$ svnlook info /etc/svn/repos/
robert
2006-08-27 18:24:27 +0800 (日, 27  8月 2006)
0

命令输出了这个版本库的最新修订版本信息,包括作者、时间、日志字数和日志内容等。除开最新修订版以外,我们还可以在命令后面接上 “--revision 版本号” 来指定某一个修订版的显示。

另外,我们还可以用如下命令来显示版本库的具体树形结构,后面的 “--show-ids” 选项指定显示每一个显示元素的修改版本 ID。

$ svnlook tree /etc/svn/repos/ --show-ids
/ <0.0.r1/1007>
project_test/ <1.0.r1/333>
trunk/ <2.0.r1/0>
branches/ <3.0.r1/74>
tags/ <4.0.r1/152>
project_luni/ <5.0.r1/793>
trunk/ <6.0.r1/454>
branches/ <7.0.r1/530>
tags/ <8.0.r1/609>


 如果您对本文有任何疑问或者建议,请到讨论区发表您的意见: >> 论坛入口 <<



上一篇:用新的PHP插件实现MySQL为基础的事务   下一篇:AIX 中Paging Space使用率过高分析与解决

文章评论】 【收藏本文】 【推荐好友】 【打印本文】 【我要投稿】 【论坛讨论
更多相关文章
Power by linux-cn.com 粤ICP备05006655号