Subversion

1. 安装

从 tarball 安装:
$ tar jxvf subversion-1.5.7.tar.bz2
$ cd subversion-1.5.7
$ ./configure --prefix=/opt/subversion --with-apxs=/opt/apache/bin/apxs --with-apr=/opt/apache/bin/apr-1-config --with-apr-util=/opt/apache/bin/apu-1-config
$ make clean
$ make
$ sudo make install

如果在 Debian/Ubuntu 系:
$ sudo apt-get install subversion libapache2-svn

2. 版本库

Subversion 支持单版本库,也支持多版本库。采用单一版本库管理所有项目,或者为每个项目建立一个独立的版本库,都是允许的,不过这两者的做法都有些极端。推荐的做法是,将关联度高的项目放在同一个版本库中管理。

以下步骤中,我将创建一个版本库 psearch,管理着两个项目 core、client。

新建版本库目录
$ cd /data
$ mkdir -p svn-repos/psearch

初始化版本库
$ svnadmin create /data/svn-repos/psearch
这一操作生成必要的目录与文件。版本库创建完成。

3. 添加项目

添加两个项目 core 和 client 到上一步中创建的版本库中。

首先在一个临时目录下建立以下目录结构:
/home/huangys/temp
–core
—-branches
—-tags
—-trunk
–client
—-branches
—-tags
—-trunk

然后用 svn import 指令来进行项目导入:
$ svn import /home/huangys/temp/ file:///data/svn-repos/psearch/ --message "init"
这种方式非常适合于将已经存在的项目迅速导入到版本库中。

说明:以上使用的三个目录名称 trunk、tags、branches 只是一种约定俗成的习惯,它们在 Subversion 中没有特别含义。
“trunk” 是项目的开发主线,你也可以称之为 “main”, “mainline”, “production” 或任何你喜欢的名字;
“branches” 是放置分支的地方;
“tags” 指明一个时间点的快照,与 branches 的区别是 tags 一旦创建不能修改。你也可以用 “releases”, “snapshots”, “baselines” 或任何你喜欢的名字来代替 “tags”。

4. 建立用户

$ htpasswd -b dav_svn.passwd theuser thepwd

这条指令将新建一个用户 theuser,其密码是 thepwd。
用户密码存储在文件 dav_svn.passwd 中,这个文件名可以任意起。如果这个文件当前不存在,加一个 -c 参数即可,如下:
$ htpasswd -cb dav_svn.passwd theuser thepwd

附带,删除用户的指令:
$ htpasswd -D dav_svn.passwd theuser

5. 建立访问控制策略

该策略文件名和放置的位置可随意。这里我起名为 dav_svn.authz,放在 /data/svn-repos/psearch/conf/ 中。

文件内容如下:

[groups]
admins = user1
core_dev = user2, user3
client_dev = user4, user5
 
[/]
@admins = rw
 
[/core]
@core_dev = rw
@client_dev = r
 
[/client]
@core_dev = r
@client_dev = rw
user6 = r

r 表示读,w 表示写,空表示无权限。
@ 起头表示组,没有 @ 符号起头的是具体用户名,* 表示所有人。

6. 配置 Apache

<VirtualHost *:80>
...
ServerName dev.openow.net
...
<Location /svn>
DAV svn
SVNPath /data/svn-repos/psearch
AuthType Basic
AuthName "psearch Subversion Repository"
AuthUserFile /data/svn-repos/psearch/conf/dav_svn.passwd
AuthzSVNAccessFile /data/svn-repos/psearch/conf/dav_svn.authz
Require valid-user
</Location>
...
</VirtualHost>

注1:dav_svn.passwd 和 dav_svn.authz 随便放到哪里都行。
注2:因为这里是经由 Apache HTTP Server 来提供对 Subversion 的访问,所以需要将版本库的拥有者修改为 Apache HTTP Server 的运行者:
$ sudo chown -R apacheuser.apachegroup /data/svn-repos/psearch

最后记得重启 Apache 使之生效。

通过浏览器或者 SVN 客户端工具访问 http://dev.openow.net/svn/ 就可以了。

如果你需要加装 SSL 以保安全,配置 Apache 使用 mod_ssl 即可。

This entry was posted in Linux and tagged . Bookmark the permalink.

Leave a Reply

Your email address will not be published. Required fields are marked *

*

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre lang="" line="" escaped="" highlight="">