天天看点

重启linux svn服务器,linux svn服务器的搭建

一、修改SVN服务器的配置文件

安装

Yum install subversion

在库创建完成之后会在conf下会生成svnserve.conf, passwd, authz三个文件。

1)svnserve.conf

anon-access = none

auth-access = write

password-db = passwd(svn密码文件,若有多个库,可将文件放到公共位置)

authz-db = authz(目录权限文件,建议同上)

realm = /svn/project/(认证域,相同认证域下的项目使用相同的passwd和authz,暂时不用理会)注意顶格写不要留空白这个配置完必须重启SVN服务器,而下面两个则不需要。

注:anon-access 未认证用户(简配为none,否者认证用户查看日志还需增加一些设置)

auth-access经认证用户

password-db指定用户及密码的配置文件,可以是相对路径

authz-db指定用户权限的配置文件,可以是相对路径

2)passwd文件:

在[users]字段下增加用户及密码,例:

[users]

user1 = 123456

user2 = 123456

3)authz文件:

[aliases]

joe = DC=red-bean, Joe Average [groups]

manager = gli developer = sli

[/]

* =

$anonymous =

$authenticated = r

szhang = r

&joe = r

@developer = r

@manager = rw

[testrepo:/]

* =

$anonymous =

$authenticated = r

szhang = r

&joe = r

@developer = r

@manager = rw

注:[aliases]字段为别名

[groups]将用户归类到组

[testrepo:/]指定具体目录的用户权限,可以为组,也可以为单独用户;组前以@开头,别名用户以&开头,单独用户不需要加前缀;*表示其他用户,$authenticate代表验证通过的用户,$anonymous代表未验证通过的用户。权限有rw、r和空,空表示没有任何权限。这里的路径[/]表示版本库根目录(svnserve时指定的路径),然后具体的版本库需写明路径,如[testrepo:/],需注意的是testrepo是一个版本库,其位于svn版本库根目录下,不可以写成[/testrepo:/]或[./testrepo:/],及版本库名之前为具体的linux下存放路径(如另一个版本库[mtk/mt6575:/]),另外由于版本库里面的内容目录结构是受SVN数据库管理的,不同于linux直接的文件目录,故需加[:/],例如需对testrepo版本库里的trunks分支增加权限控制,应写成[testrepo:/trunks/]

注:当[anon-access = read]将导致认证用户无法获取日志,此时设为[anon-access = none]即可导致认证用户无法获取日志

4)建立svn版本库目录

可建多个:

mkdir -p /opt/svndata/repos1

mkdir -p /opt/svndata/repos2

建立svn版本库

svnadmin create /opt/svndata/repos1

svnadmin create /opt/svndata/repos2

修改svn版本库配置文件 版本库1:

vi /opt/svndata/repos1/conf/svnserve.conf内容修改为:

[general]

anon-access = none

auth-access = write

password-db = /opt/svn/conf/passwd.conf

authz-db = /opt/svn/conf/authz

realm = repos1

版本库2:

vi /opt/svndata/repos2/conf/svnserve.conf内容修改为:

[general]

anon-access = none

auth-access = write

password-db = /opt/svn/conf/passwd

authz-db = /opt/svn/conf/authz

realm = repos2

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

5)配置允许访问的svn用户

vi /opt/svn/conf/passwd

为了简化配置,2个版本库共用1个用户配置文件。如有必要,也可以分开。文件路径在svnserver.conf文件中passwd-db中定义。

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

文件格式如下:

[users]

 = 

 = 

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

[users]

alan = password

king = hello

6)配置svn用户访问权限

vi /opt/svn/conf/authz

为了简化配置,2个版本库共用1个权限配置文件/opt/svn/conf/passwd。如有必要,也可以分开。文件中定义用户组和版本库目录权限。

注意:

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

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

用户组格式:

[groups]

 = ,

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

版本库目录格式:

[:/项目/目录]

@ = 

 = 

其中,方框号内部分可以有多种写法:

/,表示根目录及以下。根目录是svnserve启动时指定的,我们指定为/opt/svndata。这样,/就是表示对全部版本库设置权限。(就是在svnserve –d –r /opt/svndata指定了)

repos1:/,表示对版本库1设置权限

repos2:/abc, ,表示对版本库2中的abc项目设置权限

repos2:/abc/aaa, ,表示对版本库2中的abc项目的aaa目录设置权限

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

示例:

[groups]

admin = alan

[/]

@admin = rw

[repos1:/abc/aaa]

king = rw

[repos2:/pass]

king =

注:svnserve配置文件概述

svnserve.conf,svn服务配置文件;passwd,用户名口令文件,该文件名在文件svnserve.conf中指定,缺省为同目录下的;auth,权限配置文件,缺省为同目录下。这两个文件路径都可以在svnserve.conf中指定。更改svnserve.conf 时,需要重起SVN,更改authz,passwd 文件时不需要重启

7)导入文件源代码

svn import /share/www file:///opt/svndata/repos1/test1 -m“注释”

将/share/www下的代码导入repose1库中,项目名称为test1。

8)重启SVN 命令

[[email protected] ]# lsof -i:3690

COMMAND   PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME

svnserve 13027 root    3u IPv4 122994      0t0  TCP *:svn (LISTEN)

[[email protected] ]# kill -9 13027

[[email protected] ]#svnserve -d -r /svn/project

提示:当更改svnserve.conf 时,需要重起SVN,更改authz,passwd 文件时不需要重起

9)客户端

到此服务配置完毕,在windows安装TortoiseSVN就能用了

10)Apache的配置

如果想使用apache登录的话就需要添加一下配置

安装Apache的svn模块

$yum install mod_dav_svn

修改Apache配置,确认httpd.conf中包含Include conf.d/*.conf

vi /etc/httpd/conf.d/subversion.conf默认subversion.conf是有的,没有的话就在modules文件夹中看看有没有mod_dav_svn.so,mod_authz_svn.so 如果有就在http.conf中添加

LoadModule dav_svn_module     modules/mod_dav_svn.so

LoadModule authz_svn_module   modules/mod_authz_svn.so

如果没有就说明模块安装不正确。

单个版本库:

     #这个应该定位用的,在浏览器地址栏的地址在哪里

DAV svn

SVNPath  /svn/project/www(指明资源库的路径)

AuthType Basic(认证类型为基本认证 )

AuthName "Subversion repository”(密码认证时的标题,随意)

AuthUserFile  /svn/passwd(认证密码文件位置htpasswd密码)

AuthzSVNAccessFile /svn/authz(目录权限文件位置)

Require valid-user(要求验证用户,即不能匿名访问)

多个版本库:

DAV svn

SVNListParentPath on(打开这个选项可以列出ParentPath下面的所有库)

SVNParentPath /svn/svnroot(如果有多个库,使用该选项)

AuthType Basic

AuthName " Subversion repository "

AuthUserFile /svn/passwd

AuthzSVNAccessFile /svn/authz

Require valid-user

注意:

(1)单个版本库就是SVNPath /svn/project/www【这个是对单个版本库】,多个版本库知道的主目录,我这就是 SVNParentPath /svn/project

(2)AuthzSVNAccessFile是权限控制文件,单个版本库不需要,多个版本库要设置不同版本库的权限要重启apache服务器

11)Apache验证方式

htpasswd -c /svn/passwd abc创建用户abc并按照提示设置密码,网页认证的时候使用该用户名和密码登录。后面再添加用户的时候去掉-c选项。       配好以后就可以通过Http页面来访问SVN了。注意密码和SVN服务器提供的是不一样的哦。

注:下面是一些htpasswd语法在apache安装目录下找到bin目录,该目录下有htpasswd执行文件 htpasswd -cmb /svn/passwd abc 123456

c:create m:md5

b:在命令行上输入密码

解释:创建userfile文件,增加用户名为abc的用户,密码为md5加密的123456 更新密码

htpasswd userfile abc添加新用户

htpasswd userfile xyz删除用户

htpasswd -D userfile xyz生成.htaccess

htpasswd -c .htaccess user

如果通过网页登录不了的话,可能要关掉selinux 关闭的方法:  setenforce 0

实际上关了好像不太好

二、Svn常用命令

导出项目:svnadmin dump/var/svn/pro1 > /mydata/pro1.backup

导入项目:

新建项目库:svnadmin create/var/svn/pro1/

执行导入:svnadmin load/var/svn/pro1/ < /mydata/pro1.backup

导入版本:svn import 需要导入的版本路径file://svn/test/aa -m”aa”

svn cat       #显示特定版本的某文件内容。

svn list      #显示一个目录或某一版本存在的文件列表。

svn log       #显示svn 的版本log,含作者、日期、路径等。

svn log test.c  #查看文件test.c的日志修改信息。

svn diff      #显示特定修改的行级详细信息。

svn diff -r 15:16 file:///svn/test1/   #版本15与版本16之间的差异

svn diff -r 5:6 text.c #比较版本5和版本6之间的text.c文件的变化。

svn cat -r 4 test.c     #查看版本4中的文件test.c的内容。