前言:开发人员的  工作目录,是一份  版本库  的  工作拷贝   ( 工作 副本)。不同开发人员拥有自己的一个工作目录。通过客户端的update、commit 等操作进行项目的并行开发。


一 安装与配置SVN

1.安装subversion

centos: yum install subversion

ubuntu: apt-get install subversion

 

2.建立版本库,本例中我们的版本库建立在/var/svn,假设该    版本库目录为:foo

cd /var

mkdir svn

svnadmin create foo

 

3.配置版本库

刚才建立的版本库,需要配置认证方式,用户名和密码,权限配置这三个文件,分别对应/var/svn/foo/conf下的

svnserve.conf

passwd

authz

这三个文件。


svnserve.conf(去掉注释)

anon-access = none

auth-access = write

password-db = passwd

authz-db = authz

realm = 填写登录时提示的认证域名称

如果要使用通用的用户名密码和权限认证,指定password-db和authz-db路径到   相应passwd和authz文件位置即可 


passwd文件添加相应用户名和密码:

user1 = password1

user2 = password2


 

authz文件添加相应用户名到组并分配库权限:

[groups]

foo_user = user1,user2 (多个用户以逗号分隔)

[/]

@foo_user = rw

* = 

其中*=意味着匿名用户没有权限,引用组名时要加上@符号

 

4.启动和使用    版本库目录为:foo

配置成功以后,启动svn版本库服务

svnserve -d -r /var/svn


从代码库中拉下代码,即checkout 。简写:co

从代码库中拉下代码 : svn co svn://ip地址/ foo

服务器上获取版本库可以直接使用 svn co file:///var/svn/foo

 

二、同步到WEB目录(工作目录)

1.创建web目录:(已有目录则略过)

cd /var

mkdir www

chmod 777 www

 

2.检出副本到 web目录(工作目录): /var/www

svn co file:///var/svn/foo       版本库目录为:foo

 

3.在版本库上  增加hooks(钩子)文件

在/var/svn/foo/hooks/目录中


# start-commit 提交前触发事务

# pre-commit 提交完成前触发事务

# post-commit 【提交完成时】  触发事务

# pre-revprop-change 版本属性修改前触发事务

# post-revprop-change 版本属性修改后触发事务


我们这里只需要修改post-commit文件:

cp post-commit.tmpl post-commit

编辑post-commit 文件

#!/bin/sh


# 配置库地址

REPOS="$1"

REV="$2"


# WEB目录(工作目录)

BASEPATH=/var/www


# web文件夹名与svn库名相同

NAME=$(basename $REPOS)

WEBPATH="$BASEPATH/$NAME"


# 避免中文信息乱码

export LANG="zh_CN.UTF-8"


# 可以配合svnlook命令更新【指定目录】

svn update  $WEBPATH      --username=user1     --password=password1      --no-auth-cache


保存后需要修改post-commit文件权限为755,否则SVN无法调用执行

chmod 755 post-commit



=============项目中实际用到的post-commit 文件============

==================add by zhaohao======================

 cat post-commit
#!/bin/sh
REPOS="$1"
REV="$2"

JAVA_HOME=/data/jdk1.7.0_67
PATH=$PATH:$JAVA_HOME/bin
CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export JAVA_HOME PATH CLASSPATH

SVN=/usr/bin/svn
WEB=/data/webapps/baihedai
export LANG=zh_CN.UTF-8
$SVN update $WEB --username XXX --password XXX

if [ "$REPOS" != "wallet.admin" -a "$REPOS" != "wallet.h5" ];
then
    /data/apache-tomcat-7.0.55/bin/shutdown.sh
    sleep 1
    jps|grep Bootstrap|awk '{print $1}'|xargs kill -9
    sleep 1
    /data/apache-tomcat-7.0.55/bin/startup.sh
    exit 0
fi


Logo

更多推荐