Linux下的SVN全攻略,整合版

下面把之前的3篇整合成一篇方面阅读吧!

1.1 安装SVN服务器

1.1.1 安装所需的软件包如下(提供最新的下载地址):

(1) Subversion 1.5.5(服务器组件,共有2个包,必须安装)

http://www.subversion.org.cn/

(2) Apache 2.2.XX(Apache的HTTP协议支持,必须安装)

http://apache.justdn.org/httpd/

(3) Berkeley DB (一个内嵌的数据库支持用来存仓库文档,可选安装)

http://www.oracle.com/technology/global/cn/software/products/berkeley-db/index.html

1.1.2 安装apr跟apr-util

(1) 安装apr

./configure --prefix=/usr/local/apr

make

make install

(2) 安装apr-util

./configure --with-apr=/usr/local/apr

make

make install

(3) 安装neon、serf、zlib

./configure --with-apr=/usr/local/apr

make

make install

注意:在对应的./configure命令前,先要cd到解压后的文件夹;neon、serf、zlib、apr、apr-util都在subversion-deps-1.5.5.tar.gz压缩包内内。

1.1.3 安装Apache

#./configure --enable-dav --enable-so --enable-maintainer-mode

#make

#make install

1.1.4 安装Subversion

#./configure --with-apxs=/usr/local/apache2/bin/apxs --with-apr=/usr/local/apr/bin/apr-1-config --with-apr-util=/usr/local/apr/bin/apu-1-config

#make

#make install

1.1.5 检验subversion是否安装成功

你可以用以下命令检验手否成功安装

#svnadmin –version

1.1.6 补充说明

SVN可以以2种方式保存仓库,一种是采用使用 默认文件系统(fsfs) 保存数据

使用 Berkeley DB 保存数据。若要采用Berkeley DB,可以按以下方式安装:

#tar -zxvf db-4.4.20.tar.gz

#cd db-4.4.20 /build_unix/

#../dist/configure --prefix=/usr/local/bdb

#make

#make install

在Subversion的./configure时增加以下参数:--with-berkeley-db=/usr/local/bdb

注意:暂时不能使用 Berkeley DB——svn保存文件更新数据库的方法有两个,一种是直接使用 fs (filesystem)来保存,另一种是通过Oracle提供支持的开源数据库 Berkeley DB 进行保存。但是如果加上 –with-berkeley-db=/usr/local/BerkeleyDB.4.4 就会configure时就会报错:configure: error: APR-UTIL was installed independently, it won’t bepossible to use the specified Berkeley DB: /usr/local/BerkeleyDB.4.4。所以现阶段,采取默认的fs (filesystem)就好了。

1.2 SVN服务器的启动与简单配置

1.2.1 创建仓库(repository)

创建repository,这步的创建文件夹可以直接在linux窗体系统下直接新建文件夹,或者不创建文件夹直接create project,也是可以的,系统会自己创建并初始化。

#mkdir -p /home/svn/yourproject

#svnadmin create /home/svn/yourproject

/* 建议使用如下目录结构为了符合svn说明手册上的结构*/

/home/yourprojectname/trunk

/home/yourprojectname/tags

/home/yourprojectname/branches

1.2.2 服务器端导入初始化的资源

导入source时请注意:第一个yourprojectname只是要导入的原始文档目录(可以是中文目录),而第二个才是仓库所在位置相当于项目

#svn import -m "initial import" /home/yourprojectname file:///home/svn/yourprojectname

1.2.3 启动服务

(1) 启动svn服务采用如下命令

#svnserve –d

(2) 检查服务

#lsof -i :3690

1.2.4 停止服务

停止服务命令如下:

killall svnserve

1.2.5 Linux下开机自启动SVN服务

就是自动启动svn服务的办法是在/etc/rc.local文件里添加下面的语句:

/usr/local/bin/svnserve -d ——其中/usr/local/bin 是svn的安装路径。

1.2.6 用户创建

创建用户,此处也可以直接利用linux的窗体系统,直接创建用户、组

#groupadd yourproject

#useradd -G yourprojectname -m "it's project admin." Yourprojectname

#useradd -Gyourprojectname-m "it's andy." Alu

#useradd -Gyourprojectname-m "it's jon." Jshen

#chown -Ryourprojectname.yourprojectname/home/svn/yourprojectname

#chmod 770 /home/svn/yourprojectname

#chmod -R g+w /home/svn/yourprojectname

1.2.7 修改配置

当svnadmin create /home/svn/yourproject创建仓库后,应该在仓库目录下的config目录有3个文件——authz、passwd、svnserve.conf。如需少某个,则可以手动添加。

下面对3个文件进行说明:

(4) svnserve.conf

svnserve.conf是基础的配置,用于控制访问的权限将[general]前的注释与空格去掉,一定要去掉空格,否则到时客户端登录会出现"Section header must start in the first column的”的告警!最后此文件内容至少包含以下内容:

[general]

anon-access = none

auth-access = write

password-db = passwd

authz-db = authz

其中,anon-access = none禁止匿名登录,auth-access = write为署名登录获得写权限,password-db = passwd指定用户配置文件,authz-db = authz指定权限配置文件

(5) passwd文件

passwd是用户配置文件,用于设置用户名以及密码

格式为:

[users]

<用户1> = <密码1>

<用户2> = <密码2>

其中用户名,密码不能为中文,至少我设中文登录时提示没有该用户

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

示例:

[users]

alan = password

king = hello

这个里面的user表示当前test版本库的成员

(6) Authz文件

authz是详细的用户授权文件

格式如下(以下内容转载,感谢原创):

用户组格式:

[groups]

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

其中,1个用户组可以包含1个或多个用户,用户间以逗号分隔。用户必须要在passwd文件里能找到,它是给那个里面的user赋权限。

版本库目录格式:

[/目录]

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

<用户名> = <权限>

示例:

[groups]

admin = alan

[/]

@admin = rw

[/svn/p1/WebProject]

king = rw(表示king能够读写/svn/p1/WebProject目录下的所有信息)

/svn/p1/web]

zp=r(表示zp能够读/svn/p1/web目录下的所有信息)

注意:示例中,@admin代表整个组,king 在这里只是一个用户

关于访问路径[/目录],其完整格式[repos-name:path]或者[path],repos-name是版本库的名字,[repos-name:path]对于采用Apache作为服务器的版本库相当关键!

注意:在authz中如果要设定中文文件夹的路径,例如[/测试],请在linux在双击文件用默认记事本打开,然后另存为,注意将编码格式改为UNICODE UTF-8,否则在windows下用TortoiseSVN进行操作时,该中文路径的权限设置会有问题!

当你用的中文svn客户端,并且又出现形如“璁よ瘉澶辫触”的错误不能够签入和签出,那么请检查authz的[path]权限等是否正确