手记:Linux下成功安装SVN独立服务器
2012-06-03 14:12:48   来源:熊熊看世界   评论:0 点击:

项目与代码管理少不了版本控制,特别是多分部,多团队成员协作的情况下,更少不了版本管理。Subversion(以下简称SVN)就是满足这个需求而于...

项目与代码管理少不了版本控制,特别是多分部,多团队成员协作的情况下,更少不了版本管理。Subversion(以下简称SVN)就是满足这个需求而于近年兴起的版本管理工具软件,它是开源软件,而且目前基本上都替代了旧的开源软件CVS。

下面就介绍一下我安装SVN服务器与客户端的手记。(注:本人只对LINUX下的服务器比较感兴趣,下文没有涉及WINDOWS下SVN服务器的安装,请有需要的读者自己看文档)。

一、下软软件包
服务器SVN软件:最新版本subversion可以在http://subversion.tigris.org/getting.html 下载。
客户端SVN软件:TortoiseSVN-1.4.5.10425-win32-svn-1.4.5.rar 网上搜索一下即可。

二、服务器端安装(解压,编译,安装)
tar xfvz subversion-1.4.5.tar.gz
tar xfvz subversion-deps-1.4.5.tar.gz
cd subversion-1.4.5
./configure –prefix=/opt/svn –without-berkeley-db –with-zlib
(注:以svnserve方式运行,不加apache编译参数。以fsfs格式存储版本库,不编译berkeley-db,软件包安装于/opt/svn下)
make clean
make
make install

vi /etc/profile,在/etc/profile最后加入:
PATH=$PATH:/opt/svn/bin
export PATH

svn测试
svnserve –version

如果显示以下类似信息,表示svn安装成功:

svnserve, version 1.4.5 (rxxxxx)
compiled Oct 12 2008, 10:18:56Copyright (C) 2000-2008 CollabNet.
Subversion is open source software, see http://subversion.tigris.org/
This product includes software developed by CollabNet (http://www.Collab.Net/).

The following repository back-end (FS) modules are available:

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

三、进行svn配置
建立svn版本库目录
可建多个,例如:
mkdir -p /opt/svndata/project1
mkdir -p /opt/svndata/project2

建立svn版本库
svnadmin create /opt/svndata/project1
svnadmin create /opt/svndata/project2

修改svn版本库配置文件
版本库1:
vi /opt/svndata/project1/conf/svnserve.conf

内容修改为:
[general]
anon-access = none
auth-access = write
password-db = /opt/svn/conf/passwd
authz-db = /opt/svn/conf/authz
realm = project1

版本库2:
vi /opt/svndata/project2/conf/svnserve.conf

内容修改为:
[general]
anon-access = none
auth-access = write
password-db = /opt/svn/conf/passwd
authz-db = /opt/svn/conf/authz
realm = project2

即除realm = project2外,其他与版本库1配置文件完全相同。如果有更多的版本库,依此类推。
(注意:这里的示例是2个project都是同一个团队成员开发。如果是不同的团队,建议建立各自的password-db及authz-db)

配置允许访问的svn用户
vi /opt/svn/conf/passwd

这里为了简化配置,2个版本库共用1个用户配置文件passwd。如有必要,也可以分开。

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

文件格式如下:
[users]
<用户1> = <密码1>
<用户2> = <密码2>

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

配置svn用户访问权限
vi /opt/svn/conf/authz

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

(注意:* 权限配置文件中出现的用户名必须已在用户配置文件中定义。* 对权限配置文件的修改立即生效,不用重启svn。)

用户组格式:
[groups]
<用户组名> = <用户1>,<用户2>
其中,1个用户组可以包含1个或多个用户,用户间以逗号分隔。

版本库目录格式:
[<版本库>:/项目/目录]
@<用户组名> = <权限>
<用户名> = <权限>

其中,方框号内部分可以有多种写法:
/,表示根目录及以下。根目录是svnserve启动时指定的,我们指定为/opt/svndata。这样,/就是表示对全部版本库设置权限。
project1:/,表示对版本库1设置权限
project2:/abc, ,表示对版本库2中的abc项目设置权限
project2:/abc/aaa, ,表示对版本库2中的abc项目的aaa目录设置权限

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

示例:
[groups]
admin = frank

[/]
@admin = rw

[project1:/abc/aaa]
frank = rw

[project2:/pass]
eric =

svn配置完毕,删除下列无用文件(注意:若你对单个项目设定不同项目团队成员,则使用下列分开的密码与权限控制文件)
rm /opt/svndata/project1/conf/authz
rm /opt/svndata/project1/conf/passwd
rm /opt/svndata/project2/conf/authz
rm /opt/svndata/project2/conf/passwd

四、 启动svn服务
建立启动svn的用户
useradd svn
passwd svn
根据提示为用户svn设置密码

允许用户svn访问版本库
chown -R svn:svn /opt/svndata
chown -R svn:svn /opt/data

启动svn
su - svn -c “svnserve -d --listen-port 3999 --listen-host 192.168.1.1 -r /opt/svndata”

其中:
su - svn表示以用户svn的身份启动svn
-d表示以daemon方式(后台运行)运行
--listen-port 3999表示使用3999端口提供服务,可以换成你需要的端口。但注意,使用1024以下的端口需要root权限
--listen-host 192.168.1.1 表示使用这个IP来提供SVN服务
-r /opt/svndata指定根目录是/opt/svndata

检查:
ps -ef|grep svnserve

如果显示类似如下,即为启动SVN服务器端成功:
svn    25441   1 0 15:07 ?    00:00:00 svnserve -d --listen-port 3999 --listen-host 192.168.1.1 -r /opt/svndata

五、客户端连接配置
在客户端,安装TortoiseSVN。成功后即可使用。
右击点TortoiseSVN-》Repo_Browser在弹出的URL中输入svn://服务器IP:端口(比如上一例就应用输入:svn://192.168.1.1:3999/project1),点击OK,这时会要求你输入用户名和密码,你将你在passwd中设置的用户和密码在这里输入就可以了,然后你就可以看到版本库的内容,当然刚开始是新的,具体的客户端使用请查看其他文档。  

六. 说明 
  服务器端防火墙应适当修改,开放SVN的服务端口,否则,将直接影响访问速度或不可访问。 
关于通过WEB方式访问SVN服务,就不在这里介绍了,有兴趣的朋友可以参阅websvn配置或相关文档。

相关热词搜索:Linux svn subversion

上一篇:第一页
下一篇:Linux环境SVN命令行使用经验总结

分享到: 收藏
iTechClub广告