发布于 2015-12-13 10:55:35 | 153 次阅读 | 评论: 0 | 来源: PHPERZ
Apache Subversion 开源的版本控制系统
Subversion是一个自由,开源的版本控制系统。在Subversion管理下,文件和目录可以超越时空。Subversion将文件存放在中心版本库里。这个版本库很像一个普通的文件服务器,不同的是,它可以记录每一次文件和目录的修改情况。这样就可以籍此将数据恢复到以前的版本,并可以查看数据的更改细节。正因为如此,许多人将版本控制系统当作一种神奇的“时间机器”。
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是否已安装:
➜ ~ rpm -qa subversion
subversion-1.6.11-12.el5_10
subversion-1.6.11-12.el5_10
➜ ~ yum -y install subversion
建立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)
以创建项目sadoc为例:
➜ ~ svnadmin create /application/svndata/sadoc
配置允许用户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
注意:
等号前为svn账号,等号后为svn密码,密码是明文的,要注意密码权限
更改svnserver.conf后需要重启svn,更改authz或passwd文件后则无需重启svn
编辑配置authz文件,在[groups]下添加相关信息:
[sadoc:/]
andy = rw
注意:
权限配置文件中出现的用户名必须已在用户配置文件中定义
对权限配置文件的修改立即生效,不必重启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