linx 搭建svn服务器+钩子脚本

svn搭建

主要教程在这个链接

http://blog.csdn.net/tianlesoftware/article/details/6119231  

yum install -y subversion

2.2 创建SVN 版本库

[root@singledb ~]# mkdir /u02/svn

[root@singledb ~]# svnadmin create /u02/svn/davesvn  --davesvn为版本库名称

 

 

2.3  SVN 配置

 

创建版本库后,在这个目录下会生成3个配置文件:

[root@singledb conf]# pwd

/u02/svn/davesvn/conf

[root@singledb conf]# ls

authz  passwd  svnserve.conf

 

1svnserve.conf  svn服务配置文件下。

2passwd 用户名口令文件。

3authz 权限配置文件。 

 

svnserve.conf 文件, 该文件配置项分为以下5项:

       anon-access: 控制非鉴权用户访问版本库的权限。

       auth-access:  控制鉴权用户访问版本库的权限。

       password-db: 指定用户名口令文件名。

       authz-db:指定权限配置文件名,通过该文件可以实现以路径为基础的访问控制。

       realm:指定版本库的认证域,即在登录时提示的认证域名称。若两个版本库的认证域相同,建议使用相同的用户名口令数据文件

aonon-access=none

auth-access=write

password-db=/u02/svn/davesvn/conf/passwd

authz-db=/u02/svn/davesvn/conf/authz

Passwd 文件 

       我们在svnserve.conf文件里启用这个文件。然后配置如下:

[root@singledb conf]# cat passwd

### This file is an example password file for svnserve.

### Its format is similar to that of svnserve.conf. As shown in the

### example below it contains one section labelled [users].

### The name and password for each user follow, one account per line.

 

[users]

# harry = harryssecret

# sally = sallyssecret

dave = davepwd

tianlesoftware = tianlesoftwarepwd

 

 

authz  文件 

在网上找到一个很好的配置例子:

[groups]

admin = john, kate

devteam1 = john, rachel, sally

devteam2 = kate, peter, mark

docs = bob, jane, mike

training = zak

--这里把不同用户放到不同的组里面,下面在设置目录访问权限的时候,用目录来操作就可以了。

 

为所有库指定默认访问规则

# 所有人可以读,管理员可以写,危险分子没有任何权限

[/]  --对应我测试里的:/u02/svn 目录

* = r

@admin = rw

dangerman =

 

允许开发人员可以完全访问他们的项目版本库

[proj1:/]

@devteam1 = rw

[proj2:/]

@devteam2 = rw

[bigproj:/]

@devteam1 = rw

@devteam2 = rw

trevor = rw

 

文档编写人员对所有的docs目录有写权限

[/trunk/doc]

@docs = rw

 

培训人员可以完全访问培训版本库

[TrainingRepos:/]

@training = rw

 

下面我们来配置我们的authz文件:

[root@singledb conf]# cat authz

[groups]

admin = dave

dev=tianlesoftware

[davesvn:/]

@admin = rw

@dev = rw

[root@singledb conf]#

2.4 启动和停止SVN服务

1)启动SVN服务:

[root@singledb conf]# svnserve -d -r /u02/svn

       -d表示后台运行

       -r 指定根目录是 /u02/svn

[root@singledb conf]# ps -ef | grep svn

root      4592     1  0 18:04 ?        00:00:00 svnserve -d -r /u02/svn

root      4594  3709  0 18:04 pts/1    00:00:00 grep svn

2)停止SVN服务:

ps -aux |grep svn

kill -9 进程杀掉


上面都是svn配置版本库的,其中根据/u02/svn/davesvn中的davesvn和svnconf来识别当前的svn版本库和名称。

版本库选择服务器目录,要到所在目录svn checkout,update,add,commit一下这样流程,才能在客户端checkout出服务器的目录

svn checkout svn://121.14.177.178/svntest  /home/wwwroot/default/bulutu.a.com

到/home/wwwroot/default/bulutu.a.com

svn update

之后

svn add /home/wwwroot/default/bulutu.a.com/*

最后

svn commit -m "日志描述" /home/wwwroot/default/bulutu.a.com/


svn钩子脚本

第一步

 svn checkout svn://121.14.177.178/svntest  /home/wwwroot/default/bulutu.a.com #web目录

第二步:在项目库的 hooks/ 目录下新建 post-commit 文件 【钩子脚本】 
添加脚本内容如下: 
#!/bin/sh 
SVN=/usr/bin/svn           #这里配置的是svn安装bin目录下的svn文件 
WEB=/var/www/html/test     #要更新的目录 
$SVN update $WEB --username xxx --password xxx (此版本是linux下,windows下是.bat,写法少有不同) 
其中SVN=右边改成 svn 命令位置 
WEB=右边改成你实际的web目录 
第三步:让post-commit有执行的权限 chmod 777 post-commit 


测试看下行不行,如果不行请再执行下第一步。


你可能感兴趣的:(文件下载,办公室)