天天看点

svn配置过程

一、首先,介绍一下SVN 。更多资料(百度百科SVN)

  subversion(以下简称svn)是近年来崛起的版本管理工具,是cvs的接班人。

  svn服务器有2种运行方式:独立服务器和借助apache。2种方式各有利弊。

  svn存储版本数据也有2种方式:BDB和FSFS。因为BDB方式在服务器中断时,有可能锁住数据,所以还是FSFS方式更安全一点。

       二、配置过程

  

  我第一天配置借助apach方式,完成后可以通过浏览器http协议访问,可是在Myeclipse中总是连接不到svnserver。无奈之下,第二天重新以svnserve方式配置,最终成功,哈哈,下面主要说说svnserve方式的配置。

     1. svn服务器安装

  以root用户登录,安装包获取(/root路径下):

    subversion 1.6.2 .tar.gz    subversion-deps-1.6.2.tar.gz。

  命令行运行(本文以#开头行都为命令行执行):

  #tar xfvz subversion-1.6.2 .tar.gz    

       #tar xfvz subversion-deps-11.6.2 .tar.gz   

解压后他们都在subversion-1.6.2 这个文件夹下

       #cd subversion-1.6.2

       #./configure

       #make clean

       #make

       #make install

默认安装在/usr/local 你也可以用 ./configure –prefix = /xxx/xxx 来指定安装路径。

运行make clean成功,运行make 出现错误:

krb5.h: No such file or directory (PC Linux)

/usr/include/openssl/kssl.h:169: syntax error before "enctype"

In file included from spamc/utils.h:28,

from spamc/libspamc.c:20:

/usr/include/openssl/ssl.h:909: syntax error before "KSSL_CTX"

/usr/include/openssl/ssl.h:931: syntax error before '}' token

In file included from /usr/include/openssl/ssl.h:179,

from spamc/utils.h:28,

from spamc/utils.c:40:

/usr/include/openssl/kssl.h:72:18: krb5.h: No such file or directory

In file included from /usr/include/openssl/ssl.h:179,

from spamc/utils.h:28,

from spamc/utils.c:40:

/usr/include/openssl/kssl.h:134: syntax error before "krb5_enctype"

/usr/include/openssl/kssl.h:136: syntax error before '*' token

/usr/include/openssl/kssl.h:137: syntax error before '}' token

/usr/include/openssl/kssl.h:149: syntax error before "kssl_ctx_setstring"

/usr/include/openssl/kssl.h:149: syntax error before '*' token

/usr/include/openssl/kssl.h:150: syntax error before '*' token

  编译问题

     这是因为 Red Hat Linux 的 krb5-devel 套件把 kerberos 的 include file 放到了 /usr/kerberos/include 里面,而不是一般位置的 /usr/include 这个目录。而 openssl 支持 kerberos,因此在 compile 使用到 openssl 的程式就很容易发生找不到 kerberos 的 include file 的错误。

      解決方法

     解決的办法相当简单,首先当然要确定 krb5-devel 以及 krb5-libs 等套件确实有安裝在系统上,而不是根本没安裝;接下來,建立以下的 symbolic links:

       # ln -s /usr/kerberos/include/com_err.h /usr/include/

       # ln -s /usr/kerberos/include/profile.h /usr/include/

      # ln -s /usr/kerberos/include/krb5.h /usr/include/

之后,make,make install运行顺利,安装成功。

  测试一下:

  #svnserve –version

  如果显示如下,安装成功:

  svnserve, version 1.6.2

    ……(省略多行)

  * fs_fs : Module for working with a plain file (FSFS) repository.

  2.创建SVN版本库

//创建库文件所在的目录

# mkdir /home/svnroot/repository

//创建仓库"test",指定数据存储为 FSFS,如果要指定为 Berkeley DB,则将 fsfs 替换为 bdb

# /usr/local/subversion/bin/svnadmin create --fs-type fsfs /home/svnroot/repository/test

       3.配置版本库

  1)修改版本库配置文件(可以使用vi 或者gedit等修改):

  /home/svnroot/repository/test/conf/svnserve.conf

内容修改为:

[general]

anon-access = none

auth-access = write

password-db =passwd

authz-db = authz

realm = repos

其他与版本库1配置文件完全相同。如果有更多的版本库,依此类推。

  2)配置允许访问的用户(可以使用vi 或者gedit等修改):

  /home/svnroot/repository/test/conf/passwd

注意:对用户配置文件的修改立即生效,不必重启svn。

文件格式如下:

[users]

<用户1> = <密码1>

<用户2> = <密码2>

  其中,[users]是必须的。下面列出要访问svn的用户,每个用户一行。

示例:

[users]

user1 = test

user2 = hello

  3)配置用户访问权限:

  /home/svnroot/repository/test/conf/authz.conf

注意:

* 权限配置文件中出现的用户名必须已在用户配置文件中定义。

* 对权限配置文件的修改立即生效,不必重启svn。

用户组格式:

[groups]

<用户组名> = <用户1>,<用户2>

其中,1个用户组可以包含1个或多个用户,用户间以逗号分隔。

版本库目录格式:

[<版本库>:/项目/目录]

@<用户组名> = <权限>

<用户名> = <权限>

  权限主体可以是用户组、用户或*,用户组在前面加@,*表示全部用户。权限可以是w、r、wr和空,空表示没有任何权限。

示例:

[groups]

developer = user1,user2

[/]

@ developer = rw

[test:/]

user1 = rw

  4. 启动svn

  #svnserve -d --listen-port 8080 -r /home/svnroot/repository

  其中:

  -d表示以daemon方式(后台运行)运行

  --listen-port 8080表示使用8080端口,可以换成你需要的端口。注意,使用1024以下的端口需要root权限

  -r /home/svnroot/repository指定根目录是/home/svnroot/repository

  检查:

  #ps –ef

  显示所有在执行的进程,每个进程一行,如果有一行如下,即为启动成功:

  root   6941  1 0 15:07 ? 00:00:00   svnserve -d --listen-port 8080 -r /home/svnroot/repository

       三、MyEclipse中访问

       新建-- 资源库位置, URL填"svn://219.XX.XX.XX:8080/test"

       之后弹出用户名,和密码(填上面内容/home/svnroot/repository/test/conf/passwd 里的用户和密码)

       一切OK!!!