近期因公司业务需要,在公司建立起一个SVN服务器供研发管理源代码使用。以下为记录
第一章 安装
1. 采用源文件编译安装。源文件共两个,为:
subversion-1.6.13.tar.gz (subversion 源文件)
subversion-deps-1.6.13.tar.gz (subversion依赖文件)
注意文件版本必须一致,否则很容易产生各种奇怪的问题.
上面源文件可以通过以下方式下载
wget http://subversion.tigris.org/downloads/subversion-1.6.13.tar.gz
wget http://subversion.tigris.org/downloads/subversion-deps-1.6.13.tar.gz
2.对源文件进行解压
tar xfvz subversion-1.6.13.tar.gz
tar xfvz subversion-deps-1.6.13.tar.gz
指令简介:tar 为解压命令,xfvz为tar命令的参数,用于解压tar.gz格式压缩的文件。
3. 解压后生成 subversion-1.6.13 子目录,两个压缩包解压后都会自动放到此目录下,不用手动更改。
4. 进入解压子目录:
cd subversion-1.6.13
5. 执行 ./configure --prefix=/opt/subversion 进行配置设定并指明安装目录. 注意prefix前是两个减号. 默认不带BDB包, 所以默认使用的是FSFS模式. 若想使用BDB模式需另外下载BDB包.建议使用FSFS模式.两种模式比较参考以下链接:
http://doc.iusesvn.com/show-21-1.html
指令简介:configure命令用于检查安装平台和目标特征,prefix用于指定路径。 /opt/subversion 就是这次SVN要装的目录。你也可以换成你想要安装到的目录
6. 执行 make 编译.
7. 执行 make install 安装.
8. 添加环境变量:
vi /etc/profile
在文件最后加入:
SVNPATH=$PATH:/opt/subversion/bin
export SVNPATH
注:以上的/opt/subversion/更换成你安装SVN到的目录
9. 测试SVN是否安装成功,执行:
svnserve --version
如果显示版本信息, 则安装成功.
第二章 配置
1. 建立版本库目录(可建立多个,新建库后以下各项都需重新配置。注意区别安装目录与版本库目录,以下讲的都是版本库目录)
mkdir –p /opt/svndata/repos
2. 建立svn版本库(与上面目录对应)
svnadmin create /opt/svndata/repos
执行此命令后svn自动在repos目录下添加必须的配置文件.
注意:版本库不同于一般的文件夹, 直接在操作系统上新建文件无法被SVN识别, 必须使用import等命令将文件导入版本库.
此为svn内部指令,create用于新建版本库。请使用svn help查看详细说明。
3. 修改版本库配置文件
vi /opt/svndata/repos/conf/svnserve.conf
各参数功能在配置文件的注释中有说明, 此处配置如下:
[general]
anon-access = none # 使非授权用户无法访问
auth-access = write # 使授权用户有写权限
password-db = passwd # 指明密码文件路径
authz-db = authz # 访问控制文件
4. 配置用户
vi /opt/svndata/repos/conf/passwd
输入以下内容:
[users]
username1 = password1
username2 = password2
可以添加多个,此为用户名密码对。
5.配置svn用户访问权限
注意:
* 权限配置文件中出现的用户名必须已在用户配置文件中定义。
* 对权限配置文件的修改立即生效,不必重启svn。
用户组格式:
[groups]
= ,
其中,1个用户组可以包含1个或多个用户,用户间以逗号分隔。
版本库目录格式:
[<版本库>:/项目/目录]
@<用户组名> = <权限>
<用户名> = <权限>
其中,方框号内部分可以有多种写法:
[/],表示根目录及以下,根目录是svnserve启动时指定的,我们指定为/opt/svndata,[/]就是表示对全部版本库设置权限。
[repos:/] 表示对版本库repos设置权限
[repos2:/abc] 表示对版本库repos2中的abc项目设置权限
[repos2:/abc/aaa] 表示对版本库repos2中的abc项目的aaa目录设置权限
权限主体可以是用户组、用户或*,用户组在前面加@,*表示全部用户。
权限可以是w、r、wr和空,空表示没有任何权限。
示例:
[groups]
admin = alan
[/]
@admin = rw
[repos1:/abc/aaa]
king = rw
[repos2:/pass]
king =
svn配置完毕。
6. 使用import导入文件
新建好的版本库是空的,需要导入工作目录。
$ svnadmin create /usr/local/svn/newrepos
$ svnimport mytree file:///usr/local/svn/newrepos/some/project
但是在导入后,用来的目录树并没有转换成工作拷贝,为了开始工作,还是需要运行svn checkout导出一个工作拷贝。因为导入后,文件在版本库中是以特殊的形式存在db文件夹中的,不能以明文的方式查看。必须使用svn checkout导出工作副本才能以正常方式查看。
第三章 设置启动
执行 /opt/subversion/bin/svnserve –d –r /opt/svndata/repos/ 启动服务, 以deamon方式运行。
设置开机启动(因为SVN默认是不随着开机启动的服务,所以我们进行设置,使其开机就启动)
在/etc/rc.d/init.d/下新建一个脚本文件,
#!/bin/bash
#chkconfig:345 61 61
#description:svn
/opt/subversion/bin/svnserve –d –r /opt/svndata/repos/
建完以上脚本文件后,执行以下命令:
ln -s /etc/init.d/svn /etc/rc.d/rc3.d/S61svn
ln -s /etc/init.d/svn /etc/rc.d/rc4.d/S61svn
ln -s /etc/init.d/svn /etc/rc.d/rc5.d/S61svn
修改脚本文件chmod 777 svn
chkconfig --add svn 添加服务
重新启动 Ok!