共计 4101 个字符,预计需要花费 11 分钟才能阅读完成。
一、安装
yum install subversion 测试是否安装成功
/usr/bin/svnserve –version 如提示以下内容,说明已安装成功
svnserve,版本 1.6.11 (r934486)
编译于 May 14 2012,05:36:26
版权所有 (C) 2000-2009 CollabNet。
Subversion 是开放源代码软件,请参阅 http://subversion.tigris.org/ 站点。
此产品包含由 CollabNet(http://www.Collab.Net/) 开发的软件。
下列版本库后端(FS) 模块可用:
* fs_base : 模块只能操作 BDB 版本库。
* fs_fs : 模块与文本文件 (FSFS) 版本库一起工作。
Cyrus SASL 认证可用。
二、配置
1、新建一个目录:repos, 可用于存储 SVN 所有文件
mkdir -p /opt/svn/repos
2、新建一个版本仓库
svnadmin create /opt/svn/repos
3、初始化版本仓库中的目录
mkdir project project/server project/client project/test(临时目录)
svn import project/ file:///opt/svn/repos/project -m ‘ 初始化 svn 目录 ’
rm -rf project (可选 如果 project 没用,可以删除)
4、修改 svn 版本库的配置文件
vim /opt/svn/repos/conf/svnserve.conf
修改为如下内容:
[general]
anon-access = none
auth-access = write
password-db = /opt/svn/project/conf/passwd
authz-db = /opt/svn/project/conf/authz
realm = LAMP100 repos
注意:对用户配置文件的修改立即生效,不必重启 svn。
5、添加用户
要添加 SVN 用户非常简单,只需在 /opt/svn/project/conf/passwd 文件添加一个形如“username=password”的条目就可以了. 为了测试,我添加了如下内容:
[users]
# harry = harryssecret
# sally = sallyssecret
pm = pm_pw
server_group = server_pw
client_group = client_pw
test_group = test_pw
6、修改用户访问策略
/opt/svn/project/conf/authz 记录用户的访问策略,以下是参考:
[groups]
project_p = pm
project_s = server_group
project_c = client_group
project_t = test_group
[project:/]
@project_p = rw
* =
[project:/server]
@project_p = rw
@project_s = rw
* =
[project:/client]
@project_p = rw
@project_c = rw
* =
[project:/doc]
@project_p = rw
@project_s = rw
@project_c = rw
@project_t = rw
* = 以上信息表示,只有 pm 有根目录的读写权,
server_group 能访问 server 目录,
client_group 能访问 client 目录,
所有人都可以访问 doc 目录.
7、启动 svn 服务
svnserve -d –listen-port 9999 -r /opt/svn (以 root 用户在运行)
8、测试 svn 服务器
cd /web/
svn co svn://192.168.10.10/repos/project
Authentication LAMP100 repos: <svn://192.168.10.10:9999> 92731041-2dae-4c23-97fd-9e1ed7f0d18d
Password for ‘root’:
Authentication LAMP100 repos: <svn://192.168.10.10:9999> 92731041-2dae-4c23-97fd-9e1ed7f0d18d
Username: server_group
Password for ‘server_group’:
svn: Authorization failed (server_group 没用根目录的访问权)
# svn co svn://192.168.10.10/repos/project
Authentication LAMP100 repos: <svn://192.168.10.10:9999> 92731041-2dae-4c23-97fd-9e1ed7f0d18d
Password for ‘root’:
Authentication LAMP100 repos: <svn://192.168.10.10:9999> 92731041-2dae-4c23-97fd-9e1ed7f0d18d
Username: pm
Password for ‘pm’:
A project/test
A project/server
A project/client
Checked out revision 1. (测试提取成功)
# cd project/server
# vim index.php
# svn add index.php
# svn commit index.php -m “ 测试一下我的 PHP 程序 ”
Adding index.php
Transmitting file data .
Committed revision 2. (测试提交成功)
三、配置 post-commit,实现自动同步 svn 版本库文件到 web 目录
为了可以在修改完代码提交到 SVN 服务器后,WEB 服务器直接同步. 需要配置 SVN 的钩子, 打开 hooks 目录,
可以看到有一个 post-commit.tmpl 文件, 这是一个模板文件,
复制一份放在此目录下, 命名为 post-commit,并将其用户组设为 www, 并设置为可执行:
chown www:www post-commit
chmod +x post-commit 这样就有了访问 www 目录的权限。
里面原有的代码全部注释掉. 这里可以执行 shell 命令, 每次 commit 完成后都会调用此文件.
我的文件内容为:
#!/bin/sh
# 设定环境变量,如果没有设定可能会出现 update 报错
export LANG=zh_CN.UTF-8
REPOS=”$1″
REV=”$2″
SVN_PATH=/usr/bin/svn
WEB_PATH=/web/project
LOG_PATH=/tmp/svn_update.log
#/usr/bin/svn update –username user –password password $WEB_PATH –no-auth-cache
echo “nnn########## 开始提交 ” `date “+%Y-%m-%d %H:%M:%S”` ‘##################’ >> $LOG_PATH
echo `whoami`,$REPOS,$REV >> $LOG_PATH
$SVN_PATH update –username user –password password $WEB_PATH –no-auth-cache >> $LOG_PATH
chown -R www:www $WEB_PATH
说明:
1、#!/bin/sh 说明是执行 shell 命令
2、export LANG=zh_CN.UTF-8 是为了解决 svn post commit 中文乱码。
如果你是 GBK 编码可能会提示:Error output could not be translated from the native locale to UTF-8
这是客户端和服务器编码的问题,默认是 utf-8, 可尝试设置 export LANG=zh_CN.GBK 或者 export LANG=en_US.UTF-8
# 执行更新操作
3、svn update –username 你版本库的用户名 –password 用户名的密码 svn:// 你的 IP 地址: 端口 /repos/project /web/project
4、chown -R www:www $WEB_PATH 更改文件夹属主为适合 Web Server 的
里面原有的代码全部注释掉. 这里可以执行 shell 命令, 每次 commit 完成后都会调用此文件。
Ubuntu 14.04 下搭建 SVN 服务器 SVN:// http://www.linuxidc.com/Linux/2015-01/111956.htm
CentOS 6.2 SVN 搭建 (YUM 安装) http://www.linuxidc.com/Linux/2013-10/91903.htm
CentOS 6.5 部署 Apache+SVN http://www.linuxidc.com/Linux/2013-12/94315.htm
Apache+SVN 搭建 SVN 服务器 http://www.linuxidc.com/Linux/2013-03/81379.htm
Windows 下 SVN 服务器搭建和使用 + 客户端重新设置密码 http://www.linuxidc.com/Linux/2013-05/85189p5.htm
Ubuntu Server 12.04 安装 SVN 并迁移 Virtual SVN 数据 http://www.linuxidc.com/Linux/2013-05/84695.htm
Ubuntu Server 搭建 SVN 服务以及迁移方法 http://www.linuxidc.com/Linux/2013-05/84693.htm
Subversion (SVN) 的详细介绍:请点这里
Subversion (SVN) 的下载地址:请点这里
更多 CentOS 相关信息见CentOS 专题页面 http://www.linuxidc.com/topicnews.aspx?tid=14
本文永久更新链接地址:http://www.linuxidc.com/Linux/2016-01/127686.htm