天天看點

linux SVN 建立版本庫 同步檔案到 WEB目錄/工作目錄

 前言:開發人員的  工作目錄,是一份  版本庫  的  工作拷貝   ( 工作 副本)。不同開發人員擁有自己的一個工作目錄。通過用戶端的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

# 可以配合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 $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