开始之前,首先需要明白一个概念——版本库。版本库是用于版本管理的,里面包含了目录锁、hook、数据仓库的信息(即文件目录结构和文件数据)、基本的配置信息等。即他不是真正的工作目录,配置好相关信息后也无需对他进行多余操作。
svn 下载什么的就不多说了。
一、 创建版本库目录(此仅为目录,为后面创建版本库提供存放位置)
mkdir /opt/work/svn
二、启动 SVN 服务器
svnserve -d -r /var/svn/svnrepos
若端口已被占用,则使用:
svnserve -d -r /var/svn/svnrepos --listen-port 端口号
二、创建svn版本库
svnadmin create /var/svn/svnrepos/具体项目名
进入 xxx 目录,可以看到如下结构:
conf目录存放配置信息;
db目录就是所有版本控制的数据文件;
hooks目录放置hook脚本文件的目录;
locks用来放置Subversion文件库锁定数据的目录, 用来追踪存取文件库的客户端;
format文件是一个文本文件,里面只放了一个整数,表示当前文件库配置的版本号;
我们需要关注的主要是 conf/
,其中conf/
是配置文件的目录。
三、修改配置
进入 conf 目录:
各个文件意义:
authz:负责账号权限的管理,控制账号是否读写权限
passwd:负责账号和密码的用户名单管理
svnserve.conf:svn服务器配置文件
针对各文件的修改:
- passwd:
账号密码文件无需做修改,也是直接将账号和密码信息追加到文件中即可,注意格式为:
账号 = 密码
例如:admin = 123456
- authz
在末尾添加
[\]
账号1 = rw
账号2 = rw
...
rw
表示赋予此账号可读写权限
- svnserve.conf
原始文件内容,都被注释掉的,我们只需要去掉4条指定内容前注释即可,如下:
[general]
### These options control access to the repository for unauthenticated
### and authenticated users. Valid values are "write", "read",
### and "none". The sample settings below are the defaults.
anon-access = read
auth-access = write
### The password-db option controls the location of the password
### database file. Unless you specify a path starting with a /,
### the file's location is relative to the directory containing
### this configuration file.
### If SASL is enabled (see below), this file will NOT be used.
### Uncomment the line below to use the default password file.
password-db = passwd
### The authz-db option controls the location of the authorization
### rules for path-based access control. Unless you specify a path
### starting with a /, the file's location is relative to the the
### directory containing this file. If you don't specify an
### authz-db, no path-based access control is done.
### Uncomment the line below to use the default authorization file.
authz-db = authz
### This option specifies the authentication realm of the repository.
...
四、防火墙开启
多数情况下服务器安装完成,配置完成后,无法连接svn服务器,均是防火墙问题,大家按照如下3条命令逐一执行即可
> /sbin/iptables -I INPUT -p tcp --dport 3690 -j ACCEPT
> /etc/init.d/iptables save
> service iptables restart
六、客户端访问svn服务器
若使用的window下的TortoiseSVN,则直接在checkout中输入:
svn://ip地址:3690/具体项目名 (iP地址为你linux的ip,xxxx为前文创建的版本库名称,3690为svn默认端口)
若使用的为Linux,则:
svn checkout svn://ip地址:3690/xxxx
关于SVN仓库,先checkout,然后在提交
1、checkout时,提示:URL svn://192.168.1.99/svntest doesn't exist...
奇怪,怎么会提示库不存在呢?肯定是哪里配置问题。后来尝试了半天,也在网上搜索了很久,终于发现问题所在。
如果你的svn库的路径为:/opt/work/Ops_old/Ops_old_svn
那么你启动时,不能用命令:
svnserve -d -r /opt/work/Ops_old/Ops_old_svn --listen-port 3693
而要用命令:
svnserve -d -r /opt/work/Ops_old --listen-port 3693
而取则用:
svn checkout svn://192.168.2.168:3692/Ops_old_svn