SVN 服务器仓库搭建

开始之前,首先需要明白一个概念——版本库。版本库是用于版本管理的,里面包含了目录锁、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服务器配置文件

针对各文件的修改:

  1. passwd:
账号密码文件无需做修改,也是直接将账号和密码信息追加到文件中即可,注意格式为:

账号 = 密码

例如:admin = 123456
  1. authz
在末尾添加
[\]
账号1 = rw
账号2 = rw
...

rw 表示赋予此账号可读写权限

  1. 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

推荐阅读更多精彩内容