Ubuntu上Subversion的安装和配置

环境:Ubuntu10.10

目的:可本地或通过Web访问Subversion。

SVN最常见的配置模式便是与Apache集成,这样SVN可以采用WebDev协议方式提供服务。主要的好处有:通过Apache以HTTP方式穿透防火墙,便于在互联网环境使用;提供目录的版本控制;纯2进制的文件对比方式等。

1. 安装Subversion

apt-get install subversion apt-get install subversion-tools

2. 安装Apache

apt-get install apache2 apt-get install libapache2-svn

3. Apache和Subversion的集成

查看/etc/apache2/mods-enabled/dav_svn.load文件,有mod_dav_svn.so和mod_authz_svn.so这两个动态库说明apache已经加载了Subversion的访问控制模块。如果没有,手动添加。

Ubuntu上Subversion的安装和配置

编辑/etc/apache2/mods-enabled/dav_svn.conf文件,在最后加入下述内容:

<Location /svn> DAV svn SVNParentPath /home/svn AuthType Basic AuthName "Subversion Repository" AuthUserFile /home/svn/passwd.conf AuthzSVNAccessFile /home/svn/authz.conf Require valid-user </Location>

命令touch /home/svn/passwd.conf和touch /home/svn/authz.conf来创建这2个不存在的文件。

<Location /svn>  意思是Subversion版本可用的URL是

DAV SVN  告诉Apache是哪个模块响应哪个URL的请求,在这里是Subversion模块

SVNParentPath /home/svn  告诉Subversion需要查看的版本库在/home/svn之下。如果不希望为每个单独的项目都进行单独的设置,可以把所有项目都存放在统一的资源库目录,使用SVNParentPath指令来指定存放所有项目的路径。否则使用SVNPath

SVNPath  单版本库时使用此项指明版本库的路径,但在多版本库中不要使用此项

AuthType Basic  认证类型为基本认证,就是用户名和密码

AuthName "Subversion repository"  认证名称,将在浏览器界面弹出一个对话框,标题为Subversion repository

AuthUserFile /home/svn/passwd.conf  指定使用的认证密码文件,即访问版本库用户的文件,用apache的htpasswd命令生成

AuthzSVNAccessFile /home/svn/authz.conf  设定访问版本库权限的文件

Require valid-user  要求验证用户,即不能匿名访问。如果没有该语句,则只能第一个用户可以访问新建库

此外,SVNIndexXSLT “/svnindex.xsl”  使用它可以在用浏览器时更好看

4. 在添加了上述内容后,必须重启Apache2 HTTP服务器

/etc/init.d/apache2 restart

5. Subversion建立版本库

mkdir /home/svn mkdir /home/svn/repos svnadmin create --fs-type fsfs /home/svn/repos

运行创建版本库的命令,指定数据存储为 FSFS,如果要指定为 Berkeley DB,则将 fsfs 替换为 bdb。

如果一切正常,命令执行后没有任何反馈信息而迅速返回。一个新的版本库就被创建出来。我们可以查看下版本库里有什么。

Ubuntu上Subversion的安装和配置

其中,conf 目录下存放了版本库的配置文件,包括用户访问控制和权限控制等内容;dav 目录是提供给 Apache 相关模块的目录,目前为空;db 目录下存放着 Subversion 所要管理的所有受版本控制的数据,不同的存储方式(Berkeley DB 或者 FSFS)下有着不同的目录结构,不过我们一般不用直接修改和查看这个目录下的内容,Subversion 的命令可以安全的操作这个目录;另外,hooks 目录存放着钩子脚本及其模版(一种版本库事件触发程序),locks 目录存放着 Subversion 版本库锁定数据,用来追踪存取文件库的客户端;format 文件是一个文本文件,里面只放了一个整数,表示当前文件库配置的版本号。

注意:库与库之间不能包含。

我们可以测试下Subversion能不能检出。

6. Subversion添加项目

管理员必须考虑的问题是,将每一个项目分别放在不同的版本库里面,还是将它们放在统一的版本库里面。统一的版本库可以让管理员更加容易的升级和备份,不过,由于访问权限控制是针对整个版本库的,所以,统一的版本库也为不同项目配置不同的访问权限带来了麻烦。所以,管理员应该根据实际情况权衡考虑。
我以统一的版本库为例,添加三个项目business,develop和project。首先在一个临时目录下,根据 Subversion 版本控制的一般布局结构,创建出三个项目的主要目录树,如下:

Ubuntu上Subversion的安装和配置

然后用 svn import 命令导入已有的目录树。

svn import /home/svn/tmp/ file:///home/svn/repos/ --message "init"

Ubuntu上Subversion的安装和配置

可以用 svn list 确认导入的项目是否正确:

svn list --verbose file:///home/svn/repos/

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

svnlook info /home/svn/repos/

还可以在命令后面接上 “--revision 版本号” 来指定某一个修订版的显示。

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

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:http://www.heiqu.com/80fda2b68e60918ba0950b68bdbd3e7d.html