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,输入密码,通过

 posted on 2013-01-04 19:50  敲代码的耗子  阅读(376)  评论(0编辑  收藏  举报