centos5.6下安装subversion服务器

http://www.cnblogs.com/hhuai/archive/2011/03/10/1979877.html

svn服务器有2种运行方式:

1. 独立服务器 (例如:svn://xxx.com/xxx)

2. 借助apache。(例如:http://svn.xxx.com/xxx)

由于我装的是nginx, 所以选择了第一种方式-独立的svn服务器。

svn存储版本数据也有2种方式:

1. bdb

2. fsfs。

因为bdb方式在服务器中断时,有可能锁住数据,所以还是fsfs方式更安全一点,我也选择这种方式。

环境: svn服务器安装操作系统: centOS5.6 (x64)

 

获取svn安装包:

# wgethttp://subversion.tigris.org/downloads/subversion-1.6.6.tar.gz

# wgethttp://subversion.tigris.org/downloads/subversion-deps-1.6.6.tar.gz


编译svn以root用户登录:

# tarxfvz subversion-1.6.6.tar.gz

# tarxfvz subversion-deps-1.6.6.tar.gz

# cdsubversion-1.6.6

#./configure --prefix=/usr/local/svn --without-berkeley-db

(注:以svnserve方式运行,不加apache编译参数。以fsfs格式存储版本库,不编译berkeley-db)

# make&& make install

在/etc/profile最后加入 svn path 以方便操作:

 export PATH=$PATH:/usr/local/svn/bin/


测试是否安装成功:

#svnserve --version

#/opt/svn/bin/svnserve –version

# svnserve –version

假如显示如下,svn安装成功:

svnserve,version 1.6.6 (r40053)

compileddec 2 2009, 22:37:15

copyright(c) 2000-2009 collabnet.

subversionis open source software, see http://subversion.tigris.org/

thisproduct includes software developed by collabnet (http://www.collab.net/).

thefollowing repository back-end (fs) modules are available:

* fs_fs: module for working with a plain file (fsfs) repository.

cyrussasl authentication is available.

 

 建立svn版本库目录(可建多个):

# mkdir-p /opt/svndata/repos

建立svn版本库repos:

#svnadmin create /opt/svndata/repos/

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

# vi/opt/svndata/repos/conf/svnserve.conf

内容修改为:(注:去掉以下行前的#时,也要去掉前面的空格,否则会出现svnserve.conf:12: Option expected的错误)

[general]

anon-access= none

auth-access= write

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

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

realm =repos

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

passwd中[users]是必须的,文件格式如下:

[users]

username= password

 

配置svn用户访问权限:

# vi/opt/svn/conf/authz.conf

注重:

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

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

用户组格式:

[groups]

= ,

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

版本库目录格式:

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

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

<用户名> = <权限>

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

[/],表示根目录及以下,根目录是svnserve启动时指定的,我们指定为/opt/svndata,[/]就是表示对全部版本库设置权限。

[repos:/]表示对版本库repos设置权限

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

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

权限主体可以是用户组、用户或*,用户组在前面加@,*表示全部用户。

权限可以是w、r、wr和空,空表示没有任何权限。

示例:

[groups]

kwt_group_a:root                      # kwt的管理员,对kwt有完全权限

kwt_group_d:humin,shenjianfei,yuanfei,sunchengquan,        # kwt的开发者,对kwt的trunk有完全的权限,但对其中的/trunk/admin/目录没有任何权限

kwt_group_t:test                       # kwt的测试者,对kwt的trunk有完全的读权限,但对其中的/trunk/admin/目录没有任何权限

jmz_group_a:root                      # JMZ的管理员,对JMZ有完全权限

jmz_group_d:humin,shenjianfei,yuanfei,sunchengquan,        # JMZ的开发者,对JMZ的trunk有完全的权限,但对其中的/trunk/admin/目录没有任何权限

jmz_group_t:test                       # JMZ的测试者,对JMZ的trunk有完全的读权限,但对其中的/trunk/admin/目录没有任何权限

 

[/]

# 指定所有的版本库默认只读,root可读写

* = r

root =rw

humin =rw

[kwt:/]

# 指定对版本库kwt根目录的权限

@kwt_group_a= rw

@kwt_group_d= rw

@kwt_group_t= r

[kwt:/trunk/admin]

# 指定对版本库kwt的/trunk/admin根目录的权限

@kwt_group_a= rw

@kwt_group_d= r

@kwt_group_t= r

[jmz:/]

# 指定对版本库jmz根目录的权限

@jmz_group_a= rw

@jmz_group_d= rw

@jmz_group_t= r

[jmz:/trunk/admin]

# 指定对版本库jmz的/trunk/admin根目录的权限

@jmz_group_a= rw

@jmz_group_d= r

@jmz_group_t= r

 

# vi/opt/svn/conf/passwd

[users]

root =hwxxjs5236288

humin =hyshzy

shenjianfei= shenshen

yuanfei= feifei

liuminglong= longlong

sunchengquan= chengcheng

test =123456

 

 启动svn,建立svn的用户

#useradd svn

# passwdsvn

根据提示,为用户svn设置密码

允许用户svn访问版本库:

# chown-R svn:svn /opt/svndata/

 

# su -svn

#svnserve -d -r /opt/svndata

# svnimport /usr/local/apache/htdocs file:///opt/svndata/jmz-m"jmz"  (将htdocs下文件导入版本库jmz)

#killall svnserve

#svnserve -d -r /opt/svndata (重新启动并把opt/svndata地址隐藏,这个时候svn://192.168.1.111/jmz可以访问了)

------------------------------------------------------------------------------------------------------------------------------------

 

centos服务器拉取其他服务器上的源码

# mkdir-p /opt/sources

# chownsvn:svn /opt/sources

# chmod-R 755 /opt/sources

 

#  svn co svn://192.168.1.20/JMZ/ /opt/sources   //从服务器上检出代码到 /opt/sources目录

 

// 删除当前检出的源码中的.svn文件

# cd/opt/sources

# find .-type d -name '.svn' | xargs rm -fr

 

// 将当前/opt/sources/下的源码导入到当前服务器的版本库jmz中

# chownsvn:svn /opt/svndata/jmz/

# chmod-R 777 /opt/svndata/jmz/

# svn import /opt/sources/ file:///opt/svndata/jmz/ -m "jmz"

你可能感兴趣的:(subversion)