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 即可。