Centos下搭建svn並且和web服務器同步

1.安裝svn

[plain] view plaincopy
  1. yum install -y subversion  


2.驗證安裝是否成功

[plain] view plaincopy
  1. svnserve --version  //回提示如下:
  2. svnserve,版本 1.6.11 (r934486)
       編譯於 Mar  6 2014,10:33:29


    版權所有 (C) 2000-2009 CollabNet。
    Subversion 是開放源代碼軟件,請參閱 http://subversion.tigris.org/ 站點。
    此產品包含由 CollabNet(http://www.Collab.Net/) 開發的軟件。


    下列版本庫後端(FS) 模塊可用: 


    * fs_base : 模塊只能操作BDB版本庫。
    * fs_fs : 模塊與文本文件(FSFS)版本庫一起工作。


    Cyrus SASL 認證可用。 

3.創建svn版本庫

[plain] view plaincopy
  1. mkdir svn  
  2. svnadmin create svn/repository    //repository是版本庫文件


4.配置svn

創建版本庫後,在這個版本庫的conf目錄下會生成3個配置文件

            (1)svnserve.conf:  svn服務綜合配置文件。

            (2)passwd: 用戶名口令文件。

            (3)authz: 權限配置文件。


4.1 修改passwd文件

[plain] view plaincopy
  1. [users]  
  2. hello = world   

注:hello爲用戶名,world爲密碼

4.2修改authz文件

[plain] view plaincopy
  1. [groups]  
  2. team=shang,li   
  3. [repository:/]  
  4. @team=rw  
注:repository爲之前建立的svn版本庫名稱

4.3修改svnserve.conf

[plain] view plaincopy
  1. [general]  
  2. anon-access = none  //匿名用戶的權限,如果是rw就是可讀可寫權限,這裏設置爲無
  3. auth-access = write  //認證過的用戶的權限
  4. password-db = passwd  //認證用戶的文件
  5. authz-db = authz  //認證用戶權限的文件

5.啓動和停止svn

5.1啓動svn

[plain] view plaincopy
  1. svnserve -d -r /root/svn/   //注意,這裏啓動的不能加庫文件


5.2關閉svn


5.啓動和停止svn

[plain] view plaicopy
  1. ps -aux |grep svn  
  2. kill -9 進程id  

6.svn和web服務器同步


思路: 
找到SVN Server中的倉庫(Repositories)文件夾的位置,在相應的項目文件夾中找到hooks文件夾。在該文件夾中添加一個post-commit文件;當有commit動作發生時(提交到SVN Server時)就會執行這個post-commit文件,在該文件實現數據的複製。


  6.1.創建web目錄(已有目錄則略過)

    cd /var

    mkdir -p www/html

    chmod 777 www/html

 

2.檢出副本到/var/www/html

   svn co file:///svn/repository   /var/www/html

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


3.增加hooks(鉤子)文件

   在/svn/repository/hooks/目錄中

# start-commit 提交前觸發事務

# pre-commit 提交完成前觸發事務

# post-commit 提交完成時觸發事務

# pre-revprop-change 版本屬性修改前觸發事務

# post-revprop-change 版本屬性修改後觸發事務

我們這裏只需要修改post-commit文件:

cp post-commit.tmpl post-commit


編輯該文件

vim /svn/repository/hooks/post-commit

#!/bin/sh

   REPOS="$1"

   REV="$2"

# 加入以下兩行

   export LANG=zh_CN.UTF-8  //防止中文亂碼

   svn update /var/www/html //一般svn的update命令是需要記住密碼的,這樣寫的話必須現在/var/www/html裏面 svn update一下,輸入密碼之後可以讓服務器記住密碼,如果嫌麻煩,這條命令可以改爲 svn update /var/www/html  username=hello  password=world (這裏的hello和world爲之前設定的賬號和密碼)。



保存後需要修改post-commit文件權限爲755,否則SVN無法調用執行

chmod 755 post-commit



發佈了19 篇原創文章 · 獲贊 12 · 訪問量 5萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章