svn简要介绍及服务搭建

浏览: 158 发布日期: 2016-08-18 分类: svn

简介

svn是一个跨平台的版本控制系统,它管理着随时间改变的各种数据,这些数据都是保存在中央资料档案库中的;svn会备份并记录每个文件的修改更新变动,这样就可以很方便地将文件恢复到任一时间点的版本。

安装配置Svn服务

准备操作系统并查看系统环境

➜  ~  cat /etc/redhat-release 
CentOS release 5.10 (Final)
➜  ~  uname -m
x86_64
➜  ~  uname -r
2.6.18-371.11.1.el5

安装svn

首先检查svn是否已安装:

➜  ~  rpm -qa subversion
subversion-1.6.11-12.el5_10
subversion-1.6.11-12.el5_10

若未安装则执行以下命令:

➜  ~  yum -y install subversion

配置并启动svn

建立svn数据存储根目录(svndata)及用户、密码、权限目录(svnpasswd)

➜  ~  mkdir -p /application/svndata
➜  ~  mkdir -p /application/svnpasswd

启动svn

➜  ~  svnserve -d -r /application/svndata

查看svn是否启动

➜  ~  ps -ef|grep svn
root     16969     1  0 13:38 ?        00:00:00 svnserve -d -r /application/svndata
➜  ~  netstat -lntup | grep 3690
tcp        0      0 0.0.0.0:3690                0.0.0.0:*                   LISTEN      16969/svnserve      
➜  ~  lsof -i :3690
COMMAND    PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
svnserve 16969 root    3u  IPv4 147101      0t0  TCP *:svn (LISTEN)

svn相关操作

建立项目版本库

以创建项目sadoc为例:

➜  ~  svnadmin create /application/svndata/sadoc

调整svn配置文件及权限文件

配置允许用户andy读写访问

➜  ~  cd /application/svndata/sadoc/conf
➜  conf  cp svnserve.conf svnserve.conf.bak
➜  conf  vim svnserve.conf

修改如下内容:

anon-access = none  <--是否允许匿名访问
auth-access = write <--访问权限
password-db = /application/svnpasswd/passwd  <--此处一般无需修改,保持默认即可;在此为了方便统一管理于是做了相应修改
authz-db = /application/svnpasswd/authz

查看修改的内容:

➜  conf  diff svnserve.conf.bak svnserve.conf

将密码认证文件模板拷贝到svnpasswd目录下

➜  conf  cp authz passwd /application/svnpasswd

修改文件权限:

➜  conf  cd /application/svnpasswd
➜  svnpasswd  chmod 700 *

编辑配置passwd文件,在[users]下添加相关信息:

andy = andy123

注意:

  1. 等号前为svn账号,等号后为svn密码,密码是明文的,要注意密码权限

  2. 更改svnserver.conf后需要重启svn,更改authz或passwd文件后则无需重启svn

编辑配置authz文件,在[groups]下添加相关信息:

[sadoc:/]
andy = rw

注意:

  1. 权限配置文件中出现的用户名必须已在用户配置文件中定义

  2. 对权限配置文件的修改立即生效,不必重启svn

格式说明:

[groups]
# harry_and_sally = harry,sally
# harry_sally_and_joe = harry,sally,&joe

一个用户组可以包含一个或多个用户,用户间以逗号分隔。

# [repository:/baz/fuz]
# @harry_and_sally = rw
# * = r
[sadoc:/]
andy = rw

[<版本库>:/项目/目录]
@<用户组名>=<权限>
<用户名>=<权限>
其中方框内部可以有多种写法:
[/]表示根目录及以下,根目录是svnserve启动时指定的,我们指定为/application/svndata,[/]就是表示对全部版本库设置权限
[repos:/]表示对版本库repos设置权限
[repos:/sadoc]表示对版本库repos中的sadoc项目设置权限
[repos:/sadoc/andy]表示对版本库repos中的sadoc项目的andy目录设置权限
权限主体可以是用户组、用户或*,用户组在前面加@,*表示全部用户
权限可以是w、r、wr和空,空表示无任何权限
authz中每个参数都要顶格写,开头不能有空格

重启svn

➜  svnpasswd  pkill svnserve
➜  svnpasswd  svnserve -d -r /application/svndata
返回顶部