天天看點

linux系統下SVN同步檔案到WEB目錄

SVN在團隊開發中使用非常普遍,是一個很友善的版本控制系統。 

如果要是能将SVN伺服器上的資料自動釋出到Web伺服器,那将是整個項目開發、測試更加便捷。利用SVN的hook功能就能實作将SVN伺服器上的資料同步到Web伺服器。

思路: 

找到SVN Server中的倉庫(Repositories)檔案夾的位置,在相應的項目檔案夾中找到hooks檔案夾。在該檔案夾中添加一個post-commit檔案;當有commit動作發生時(送出到SVN Server時)就會執行這個post-commit檔案,在該檔案實作資料的複制。

1.建立web目錄(已有目錄則略過)

   cd /var

   mkdir www

   chmod 777 www

2.檢出副本到/var/www

   svn co file:///var/svn/foo

   此時web目錄是SVN版本庫的一個工作副本

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

編輯該檔案

#!/bin/sh

# 配置庫位址

   REPOS="$1"

   REV="$2"

# WEB目錄

   BASEPATH=/var/www

   WEBPATH="$BASEPATH/"

# 避免中文資訊亂碼

   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

裡面原有的代碼全部注釋掉.這裡可以執行shell指令,每次commit完成後都會調用此檔案。

說明:

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

繼續閱讀