首先运行如下命令安装 Subversion:
$ sudo apt-get install subversion
$ sudo apt-get install libapache2-svn
如果系统报告了依赖关系的错误,找出相应的软件包并安装它们。如果存在其它问题,自行解决。
1. 创建 SVN 仓库
假设Subversion 文件仓库放在 /home/svn,并且项目名称是 “myproject”。
创建一个名为“Subversion”的组来拥有文件仓库所在的目录。
执行如下命令增加组,并且把用户加到组里:
sudo addgroup subversion
sudo usermod -G subversion -a www-data
注销然后再登录以便能够成为 subversion 组的一员
现在执行下面的命令
$ sudo mkdir /home/svn
$ cd /home/svn
$ sudo mkdir myproject
$ sudo chown -R root:subversion myproject
创建 SVN 文件仓库:
$ sudo svnadmin create /home/svn/myproject
赋予组成员对所有新加入文件仓库的文件拥有相应的权限:
$ sudo chmod -R g+rws myproject
如果上面这个命令在创建SVN文件仓库之前运行,可能在后续Check in的时候遇到如下错误:
Can't open '/home/svn/myproject/db/txn-current-lock': Permission denied
查看txn-current-lock文件的权限和用户以及组信息,应该类似于:
$ ls -l /home/svn/myproject/db/txn-current-lock
-rw-rwSr-- 1 root subversion 0 2009-06-18 15:33 txn-current-lock
除了权限以外,用户及其组如果不对,则仍然会遇到上述问题,可以再次运行命令:
$ sudo chown -R root:subversion myproject
2. 将代码导入版本库:
$ svn import –m “import message” source_file file:///home/svn/myproject(版本库所在目录)
3. 访问方式
1) 直接访问文件仓库(file://)
它不需要事先运行任何 SVN 服务。这种访问方式用于访问本地的 SVN 文件仓库。命令如下:
$ svn co file:///home/svn/myproject
或者$ svn co file://localhost/home/svn/myproject
注意:如果不确定主机的名称,必须使用三个斜杠(///),而如果指定了主机的名称,则必须使用两个斜杠(//).
2) 通过 WebDAV 协议访问(http://)
通过 WebDAV 协议访问 SVN 文件仓库,要配置Apache 2 Web 服务器。加入下面的代码片段到 /etc/apache2/mods-available/dav_svn.conf中:
<Location /svn/myproject>
DAV svn
SVNPath /home/svn/myproject (/home/svn/myproject 访问版本库路径)
AuthType Basic
AuthName "myproject subversion repository" (版本库验证时的提示信息)
AuthUserFile /etc/subversion/passwd (身份验证)
<LimitExcept GET PROPFIND OPTIONS REPORT>
Require valid-user
</LimitExcept>
</Location>
如果需要用户每次登录时都进行用户密码验证,将<LimitExcept GET PROPFIND OPTIONS REPORT>与</LimitExcept>两行注释掉。
加了上面的内容后,输入下面的命令重新启动 Apache 2 Web 服务器:
sudo /etc/init.d/apache2 restart (提示ok即重启成功,否则自行分析原因)
接下来创建 /etc/subversion/passwd 文件,该文件包含了用户授权的详细信息。执行下面的命令添加用户:
sudo htpasswd -c /etc/subversion/passwd user_name
按提示输入密码该用户就建立了。“-c”选项表示创建新的/etc/subversion/passwd文件,所以user_name所指的用户将是文件中唯一的用户。如果要添加其他用户,则去掉“-c”选项:
sudo htpasswd /etc/subversion/passwd other_user_name
通过下面的命令来访问文件仓库:
$ svn co http://hostname/svn/myproject myproject
它会提示输入密码。必须输入使用 htpasswd 设置的密码。当通过验证,项目的文件就被签出了。
3) 通过自带协议访问(svn://)
创建了 SVN 文件仓库后,修改 /home/svn/myproject/conf/svnserve.conf 来配置其访问控制
例如,可以取消下面的注释符号来设置授权机制:
# [general]
# password-db = passwd
# anon-access = read/none (none代表客户端登录时需要密码)
可以在“passwd”文件中维护用户清单。编辑同一目录下“passwd”文件,添加新用户。语法如下:
username = password (注意行开始不要有多余空格)
通过如上配置后,可以在本地或者远程通过 svn:// 访问SVN 版本库了,使用“svnserve”来运行 svnserver,
语法如下:
$ svnserve -d --foreground -r /home/svn(要访问版本库,必须保证此命令一直在终端运行)
然后可以通过下面的命令来访问文件仓库:
$ svn co svn://hostname/myproject myproject
按要求输入密码。一旦通过验证,就会签出文件仓库中的代码。
若要进行权限控制,取消/home/svn/myproject/conf/svnserve.conf下# authz-db = authz 前的# ,并根据实际情况修改/home/svn/myproject/conf下的authz文件,实现不同的权限控制