频道直达 - 专题 - 新闻 - 技巧 - 组网 - 开发 - 安全 - web编程 - 图像 - 操作系统 - 数据库 - 教育 - 旅游 - 健康 - 时尚 - 驱动 - 软件 - 游戏 - 多媒体 - ERP - 讨论组

Apache和Subversion 搭建安全CVS

来源: 作者: 出处:巧巧读书 2006-09-16 进入讨论组

 

项目添加

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

    我们以统一的版本库为例,添加两个项目 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>
      

其他

    这里有一个需要新手,尤其是习惯了 Subversion 客户端命令 “svn” 的用户注意的问题,那就是,“svnadmin” 和 “svnlook” 都被认为是服务器端管理工具,只被用于版本库所在的机器,用来检查和维护版本库,不能通过网络来执行任务。所以,试图将 URL 甚至本地 file 路径传递给这两个程序,都是错误的。

    Subversion 还有很多管理工具可供管理员应用,需要了解这项工具的使用方法,读者们可以用 svn help, svnadmin help, svnlook help 等等命令查看帮助信息,另外,Subversion 参考手册提供了更为全面和详细的使用介绍。

基本的服务器配置

    Subversion 设计了一个抽象的网络层,版本库建立完毕之后,可以通过各种服务器向外公布。svnserve 是 Subversion 自带的一个小型的服务器,它使用独立的协议与客户端。我们可以通过

svnserve –i
      

作为 inetd 启动或者

svnserve –d
      

    作为守护进程启动一个服务。服务器启动后,客户端即可以通过绝对路径访问。如上例可以访问 svn://服务器IP/etc/svn/repos。同时可以指定一些选项,常用的如 -r,用来指定版本库的根路径,例如假设版本库位于 /etc/svn/repos:

svnserve –d -r /etc/svn
      

    则客户端可以通过如下 URL 访问服务器:svn://服务器IP/repos, 这样可以有效的避免暴露本地路径。另外如 --listen-port,--listen-host 可以指定绑定的地址和端口,-R 可以强制设定为 Read-Only 模式。如果在 Windows 操作系统下,可以将版本库设定在 C 分区,如 c:\svnroot\repos 可以通过 svn://服务器IP/svnroot/repos访问,如果在其他分区,就必须要通过 -r 选项来指定 root 位置。

    svnserve 可以通过配置 svnserve.conf 来进行一些简单的访问权限控制。你可以在版本库的 conf 子文件夹下发现这个文件。文件的初始内容大致如下:

[general]
# anon-access = read
# auth-access = write
password-db = passwd
# authz-db = authz
# realm = My First Repository
      

    其中 anon-access 表示匿名用户的权限,auth-access 表示认证用户的权限设置,password-db 指向保存用户帐号密码的文件的位置,可以使用相对路径。svnserve 只能对全局提供简单的访问控制,如果想要更加灵活的方式,可以使用 Apache Http Server 作为向外公布版本库的方式。

通告:http://www.qqread.com/network/server/n208847.html 更多文章 更多内容请看路由安全配置专题系统安全设置配置安全的操作系统专题,或进入讨论组讨论。
收藏此文】【 】【打印】【关闭
相关图文阅读
频道图文推荐
健 康 咨 询
时 尚 咨 询
巧巧读书宗旨
相关专题
最新论坛文章
站内各频道最新更新文档
站内最新制作专题
热门关键字导读
Photoshop教 程照片处理 照片制作 PS快捷键 抠图
计 算 机 故 障XP系统修复
艺 术 与 设 计设计 流媒体 设计欣赏 边框
计 算 机 安 全ARP
站内频道文章精选
巧巧电脑频道编辑信箱  告诉我们您想看的专题或文章