1、首先介绍几个比较好的学习SVN的网站:
SVN官网:http://subversion.apache.org/
Ubuntu官方网站:http://wiki.ubuntu.org.cn/SubVersion
SVN俱乐部:http://www.svnclub.com/(推荐)
SVN中文说明书:http://www.subversion.org.cn/svnbook/1.4/index.html(推荐)
2、SVN服务器安装和配置(以Ubuntu10.04 + Apache + SVN为例)
假设一个版本服务器需要做到以下工作:
(1) 安装Ubuntu系统(略)
(2) 安装Apache(略)
(3) 安装Subversion
(4) 创建版本库
(5) 添加用户并设置用户权限
2.1 安装SVN,使用命令:
$ sudo apt-get install subversion
$ sudo apt-get install libapache2-svn
* 说明:”libapache2-svn” provides the “mod_dav_svn”and “mod_authz_svn”
modules for the Apache 2.2 web server.These modules provide Subversion's
WebDAV server backend, to serve repositories over the http and httpsprotocols.
2.2 配置SVN,创建名为“subversion“的组:
$ sudo addgroup subversion
2.3 将自己和“www-data“(Apache用户)加入组成员中
$ sudo usermod –G subversion –a www-data
2.4 查看修改结果(得到类似” subversion:x:1015:www-data,svnuser”结果)
$ cat /etc/group|grep subversion
2.5 注销重新登录以使设置生效
2.6 创建SVN版本仓库(test)
版本库有两种数据存储格式:Berkeley DB和FSFS,想了解详情可以参考:
http://www.360doc.com/content/07/0920/11/7147757867.shtml
推荐选用FSFS格式,在终端中运行以下命令:
$ sudo svnadmin create --fs-typefsfs/usr/local/svn/test
也可以使用命令:(默认使用的是fsft格式)
$ sudo svnadmin create /usr/local/svn/test
* 说明:这里可以自己选择在/home/下建立目录例:
$ sudo mkdir /home/svn
$ cd /home/svn
$ sudo svnadmin cteate/home/svn/test
2.7 更改目录的拥有者和所属群组
$ sudo chown –R root:subversiontest
2.8 赋予组成员相应权限
$ sudo chmod –R g+rws test
2.9 赋予其他成员写的权限
$ sudo chmod –R o+w test
*说明:如果上面的命令在创建文件仓库之前运行,你可能在后面Check in的时候遇到如下错误:
Can't open '/usr/local/svn/test/db/txn-current-lock':Permission denied
查看txt-current-lock文件的权限和用户以及组信息,应该类似于:
$ ls -l /home/svn/test/db/txn-current-lock -rw-rwSr-- 1root
subversion 0 2009-06-18 15:33 txn-current-lock
除了权限以外,用户及其组如果不对,则仍然会遇到上述问题,可以再次运行命令:
$ sudo chown –R root:subversiontest
3、访问权限
3.1编辑/usr/local/svn/test/conf/svnserve.conf
$ vi svnserve.conf
去掉#[general]前面的#号
如:[general]
#匿名访问的权限,可以是read,write,none,默认为read
如:anon-access = none (禁止匿名访问)
#认证用户的权限,可以是read,write,none,默认为write
如:auth-access = write (认证访问具有写权限)
#密码数据库的路径,去掉前面的#
如:password-db = passwd (使用passwd文件进行身份认证控制authentication)
#授权控制
如:authz-db = authz(使用 authz 文件进行授权控制authorization)
* 说明:所有的行都必须顶格,否则报错。
3.2 编辑/usr/local/svn/test/conf/passwd
$ vi passwd
# 添加新用户
[users]
admin =pass.admin
developer =pass.developer
other = pass.other
3.3 编辑/usr/local/svn/test/conf/authz
# 设置授权(添加以下内容)
[groups]
group_rw = admin,developer
group_r = other
[/]
@group_rw = rw
*=r
* 说明:以上文字的意思是,添加一个用户组group_rw,包括admin,developer,
对所有库给group_rw用户组添加读写权限,所有用户添加读权限
4、SVN服务的启动和关闭
4.1 启动SVN服务
$ svnserve –d –r /usr/local/svn
* 说明:-d 表示svnserver以“守护”进程模式运行
-r 指定文件系统的根位置(版本库的根目录),这样客户端不用输入全路径,
就可以访问版本库,如:svn://192.168.1.29/test
4.2 关闭SVN服务
$ killall svnserve
4.3 监听服务器
如果服务器有多ip的话–listen-host来指定监听 的ip地址,例:
$ svnserve -d -r /usr/local/svn/test --listen-host 192.168.1.22
5、配置HTTP的访问模式
通过 WebDAV 协议访问支持 Subversion 的 Apache 2 Web 服务器
5.1 安装包(已安装)
$ sudo apt-get installlibapache2-svn
5.2 这里我创建一个新的版本仓库
$ sudo svnadmin create/home/svn/myproject
* 说明:版本库的设置按照上面介绍的步骤进行
5.3 然后把这个版本仓库目录授权给Apache读写
$ sudo chown –R www-data:www-data/home/svn/myproject
5.4 然后打开Apache的配置文件
$ sudo vi/etc/apache2/mods-available/dav_svn.conf
加入以下内容:
<Location /project>
DAV svn
SVNPath /home/svn/myproject
AuthType Basic
AuthName “myproject subversion repository”
AuthUserFile /home/svn/myproject/conf/passwd
#<LimitExcept GET PROPFIND OPTIONS REPORT>
Require valid-user
#</LimitExcept>
</Location>
* 说明:如果需要用户每次登录时都进行用户密码验证,请将
<LimitExcept GET PROPFINDOPTIONS REPORT>与</LimitExcept>
两行注释掉,location说的是访问地址,比如上述地址,
访问的时候就是http://127.0.0.1/myproject
5.5 创建访问用户
建议将用户名密码文件存放在当前版本仓库下conf文件夹下,这样版本仓库多的时候无至于太乱。
因为conf文件夹下已经存在passwd文件了,所以直接添加用户:
$ sudo htpasswd -c /home/svn/myproject/conf/passwd admin
然后输入两遍密码,admin这个用户就创建好了。
打开/home/svn/myproject/conf/passwd这个文件,会开到形如如下形式的文本:
admin:WEd.83H.gealA (后面是加密后的密码)
创建以后,再次需要往别的版本仓库添加这个用户,直接把这一行复制过去就可以了。
5.6 重启Apache
$ sudo/etc/init.d/apache2 restart
5.7 测试
浏览器中输入:http://192.168.1.29/myproject,输入密码,通过