svn服务器的搭建以及利用svn hook与web根目录同步

  1. svn原理图示

2.SVN服务器的搭建

1.查看是否安装svn
 
rpm -qa | grep subversion
 
2.安装
yum install subversion

3.测试是否安装成功
 
/usr/bin/svnserve --version
 
如提示以下内容,说明已安装成功
 
--------------------------------------
 
svnserve,版本 1.6.11 (r934486)
 
   编译于 Apr 11 2013,17:28:04
 
 
 
版权所有 (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/svndata/repos
 
注意,这里的目录(项目名称)路径可以更改,格式如下:
 
mkdir -p 目录路径(如:mkdir -p /www/svn/project)
 
 
 
2、新建一个版本仓库(使用svnadmin create 目录仓库路径与上面新建的目录要一致)
 
svnadmin create /opt/svndata/repos
 
 
 
3、修改svn版本库的配置文件
 
vi /opt/svndata/repos/conf/svnserve.conf
 
#注意这个文件中的每一行与每一行之间的空格都必须删除
#每一行之前的空格也必须删除
#否则会报错。

#按以下格式内容修改,其中realm的值为项目名称,本例中即为repos。
 
[general]
 
anon-access = none
auth-access = write
password-db = /opt/svndata/repos/conf/passwd
authz-db = /opt/svndata/repos/conf/authz
realm = repos
注意:对用户配置文件的修改立即生效,不必重启svn。
 
 
 
4、添加用户
 
vi /opt/svndata/repos/conf/passwd
 
#要添加SVN用户非常简单,只需在/opt/svn/project/conf/passwd文件添加一个形如“username=pass#word”的条目就可以了。

#注意,此passwd文件中的每一行的空行也必须删除,空格也必须删除

为了测试,我添加了如下内容:
 
[users] 
# harry = harryssecret
# sally = sallyssecret
pm = pm_pw
server_group = server_pw
client_group = client_pw
test_group = test_pw
 
 
5、修改用户访问策略
 
vi /opt/svndata/repos/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目录。
 
当然,以上是比较复杂的权限控制,如果只是测试,可以简单些。建立一个用户组,把所有的用户都放到一个用户组,如下:
 
[groups]
admin = pm,server_group,client_group,test_group
 
 
[/]
 
@admin = rw
* =
 匿名是否能访问关键是看“*”的配置。“* =”就是没有任何权限。
 
关于权限的控制,本文不详情叙述,大家可以去咨询度娘。
 
 
 
5、启动svn服务
 
svnserve -d --listen-port 3690 -r /opt/svndata/repos (以root用户在运行)

开机启动:

#echo ‘svnserve -d --listen-port 3690 -r /opt/svndata/repos‘ >> /etc/rc.d/rc.local

假如有多个项目同时在开发的话,可以通过不同端口可以开启多个SVN服务,使用TortoiseSVN操作时记得加上端口号。

#停止SVN服务
killall svnserve

6、测试svn服务器

进入网站根目录
cd /www/web/repos/public_html
svn co svn://127.0.0.1:3690 /www/web/repos/public_html --username pm --password pm_pw

svn import . file:///data/svndata/peel.haochedai.com -m "import"
会出现以下认证的提示
-----------------------------------------------------------------------
注意!  你的密码,对于认证域:

    repos

只能明文保存在磁盘上!  如果可能的话,请考虑配置你的系统,让 Subversion
可以保存加密后的密码。请参阅文档以获得详细信息。

你可以通过在“/root/.subversion/servers”中设置选项“store-plaintext-passwords”为“yes”或“no”,
来避免再次出现此警告。
-----------------------------------------------------------------------
保存未加密的密码(yes/no)?

输入“yes” 回车,因为版本仓库还没有添加任何文件,所以取出版本为0,如下:
取出版本 0。

三、配置post-commit,实现自动同步svn版本库文件到web目录

为了可以在修改完代码提交到SVN服务器后,WEB服务器直接同步.需要配置SVN的钩子,进入hooks目录,
cd /opt/svndata/repos/hooks
ls
可以看到有一个post-commit.tmpl文件,这是一个模板文件,复制一份放在此目录下,命名为post-commit,并将其用户组设为www,并设置为可执行:
cp post-commit.tmpl post-commit
chown www:www post-commit
chmod +x post-commit
这样就有了访问www目录的权限。
里面原有的代码全部注释掉.这里可以执行shell命令,每次commit完成后都会调用此文件.
文件内容参考以下:
vi post-commit

#!/bin/sh
export.UTF-8
REPOS="$1"
REV="$2"
SVN_PATH=/usr/bin/svn
WEB_PATH=/www/web/repos/public_html
LOG_PATH=/tmp/svn_update.log
#此行已注释
#/usr/bin/svn update --username user --password password $WEB_PATH --no-auth-cache
echo "\n\n\n##########开始提交 " `date "+%Y-%m-%d %H:%M:%S"` ‘##################‘ >>$LOG_PATH
echo `whoami`,$REPOS,$REV >> $LOG_PATH
#注意将此行user和password改为你具体的user和password
$SVN_PATH update --username user --password password $WEB_PATH --no-auth-cache >> $LOG_PATH
chown -R www:www $WEB_PATH

========================================================================================

说明:
1、#!/bin/sh 说明是执行shell命令 /*设定环境变量,如果没有设定可能会出现update报错*/
2、export.UTF-8 是为了解决svn post commit 中文乱码。
如果你是GBK编码可能会提示:Error output could not be translated from the native locale to UTF-8
这是客户端和服务器编码的问题,默认是utf-8,可尝试设置export.GBK或者export.UTF-8
#执行更新操作
3、svn update –username 你版本库的用户名 –password 用户名的密码 svn://你的IP地址:端口 /web/web/repos/public_html
4、chown -R www:www $WEB_PATH 更改文件夹属主为适合Web Server的
里面原有的代码全部注释掉.这里可以执行shell命令,每次commit完成后都会调用此文件。
 
ls * | file -
convmv -f gbk -t utf-8 -r –notest 
 
convmv  -f latin1 -t utf-8 * --notest

接下来在windows客户端安装svn客户端

上传文件测试,我这里上传了svn.ppt

可以发现,上传的文件已经被传至网站根目录了。

时间: 2024-11-19 11:28:29

svn服务器的搭建以及利用svn hook与web根目录同步的相关文章

linux(centos7)下SVN服务器如何搭建

linux(centos)下SVN服务器如何搭建?说到SVN服务器,想必大家都知道,可以是在LINUX下如何搭建SVN服务器呢?那么今天给大家分享一下linux(centos)搭建SVN服务器的思路! 虽然在windows上搭建SVN很简单,但是效能却不高,这当然是和linux相比了.然而在linux上搭建SVN却非常繁琐,所以今天这篇文章就来一步一步教您如何在Centos上搭建SVN. 安装步骤如下: 1.yum install subversion 2.输入rpm -ql subversio

centos7下SVN服务器如何搭建

Centos7 搭建svn服务器 linux(centos)下SVN服务器如何搭建?说到SVN服务器,想必大家都知道,可以是在LINUX下如何搭建SVN服务器呢?那么今天给大家分享一下linux(centos)搭建SVN服务器的思路! 虽然在windows上搭建SVN很简单,但是效能却不高,这当然是和linux相比了.然而在linux上搭建SVN却非常繁琐,所以今天这篇文章就来一步一步教您如何在Centos上搭建SVN. 安装步骤如下: yum install subversion 查看安装位置

Linux(centos)下SVN服务器的搭建及简单配置和使用

Linux下Subversion(SVN服务器)的搭建: 1.安装Subversion #查看本机是否已安装subversion [[email protected] etc]# rpm -qa subversion [[email protected] etc]# #卸载旧版 [[email protected] etc]# yum remove subversion #安装SVN 为了便于以后操作同时安装其他服务  可以仅安装SVN [[email protected] etc]# yum

linux下svn服务器的搭建

网上的教程实在是太恶心了,不是太老,就是有问题,刚参考的一篇文章也有问题.自己记录下来,以后用就方便了,现在一边重新安装一遍,一边记录.笔者亲测,今天是5月29号深夜. linux用的是centos6.2,yum install subversion,安装svn服务端.本篇操作均为root用户权限. 1.建立svn库目录. mkdir -p /opt/svndata/repos1 2.建立版本库 svnadmin create /opt/svndata/repos1 3.修改配置文件 (1)服务

svn 服务器的搭建 on Ubuntu

Subversion 如何在Ubuntu下安装配置Subversion服务器.已经配置好,不过没有配置开机自启动, 需要的时候,使用如下命令开启svn服务svnserve -d  -r  /opt/svn 1.首先需要安装Subversion软件:sudo apt-get install subversion2.创建仓库svnadmin create /opt/svn/var/svn 为所创建仓库的路径,理论上可以是任何目录3.修改配置文件/opt/svn/conf/svnserve.conf#

SVN服务器本地搭建与使用

转载请注明原文地址:http://www.cnblogs.com/ygj0930/p/6623026.html  使用SVN进行代码管理,需要搭建服务端资源库,然后在使用SVN的电脑安装SVN客户端或者在Myeclipse集成SVN插件来下载资源库项目或提交项目修改.下面分步讲解: 1:下载SVN服务端软件并安装 下载地址:http://subversion.apache.org/packages.html 在最下面找到 VisualSVN ,点击进入下载页面,选择 VisualSVN serv

Windows Server 2008 R2下SVN服务器的搭建

Windows Server 2008 R2下SVN服务器的搭建 一.需要软件 1.服务器端 VisualSVN-Server-3.3.1-x64 2.客户端 TortoiseSVN-1.8.11.26392-x64-svn-1.8.13 3.客户端中文语言包 LanguagePack_1.8.11.26392-x64-zh_CN 二.安装 1.安装VisualSVN-Server 1 选择visualsvn server and management: 勾选Add Subversion com

linux svn服务器的搭建

一.修改SVN服务器的配置文件  安装 Yum install subversion 在库创建完成之后会在conf下会生成svnserve.conf, passwd, authz三个文件. 1)svnserve.conf anon-access = none auth-access = write password-db = passwd (svn密码文件,若有多个库,可将文件放到公共位置) authz-db = authz   (目录权限文件,建议同上) realm = /svn/projec

局域网简单的SVN服务器的搭建

????????最近组织在做一个比较大的项目,需要多人参与配合,经常会对项目文件增删查改,因此使用了SVN作为项目管理工具.但大家都很"盲",所以搭建SVN服务器的任务就落在了我这个菜鸟身上. 工具使用TortoiseSVN,安装过程中记得把命令行工具也安装上,不然无法使用命令行提交代码. 选择一个空文件夹,比如E:\SVN,进入后鼠标右键创建一个版本库 进入conf文件夹,打开svnserve.conf文件,分别找到 anon-access = read auth-access =