SVN 配置自動更新WEB服務器

SVN 配置自動更新WEB服務器

最近有個小項目,須要用SVN來進行版本控制。 web

項目組的同僚有8我的,你們都在本地開發,而後提交到服務器——服務器就是其中一臺機器。專門安排一個測試員來進行項目測試,但測試人員每次測試以前都須要去更新SVN,再拷貝到web服務器上,而後才能測試,這樣很不方便。因此但願當開發人員有更新時,代碼若是能自動更新到web服務器上——這樣不就省事了。 shell

我以往都是提交者,但此次輪到我來設置了,這裏搜索到了一個教程,讓個人安裝配置過程很是順利: windows

STEP 1:下載和安裝

首先在Subversion的官方網站去下載windows安裝包,最新版是1.3.1,惋惜在項目樹上只更新到了1.3.0的二進制包
下載後安裝在本地機器上,這裏注意的是最好將安裝目錄指定爲純英文名目錄,安裝在中文目錄下天知道哪天會冒出一個讓你想破頭也想不出的錯誤來。
下載TortoiseSVN進行本地安裝,我安裝的是最新的1.3.2 for svn 1.3.0,這是一個將SVN集成到windows shell中的GUI管理工具,推薦使用。 服務器

STEP 2:建立儲存庫

安裝完TortoiseSVN後提示要重啓機器,其實啓不啓均可以正常使用了,首先建立SVN儲存庫(repository),能夠選擇命令行方式或者經過TortoiseSVN插件進行GUI操做,命令行運行以下: 編輯器

svnadmin create E:\svn\repository

e:\svn\repository就是我指定的儲存庫目錄,若是用GUI方式,能夠在這個目錄下點擊右鍵選擇[TotoiseSVN]->[Create Repository href...]進行建立,版本庫模式指定爲默認的便可。 svn

repository 建立完畢後會在目錄下生成若干個文件和文件夾,dav目錄是提供給Apache與mod_dav_svn使用的目錄,讓它們存儲內部數據;db目錄就是全部版本控制的數據文件;hooks目錄放置hook腳本文件的目錄;locks用來放置Subversion文件庫鎖定數據的目錄,用來追蹤存取文件庫的客戶端;format文件是一個文本文件,裏面只放了一個整數,表示當前文件庫配置的版本號; 工具

STEP 3:配置

打開/conf/目錄,打開svnserve.conf找到一下兩句: post

# [general]
# password-db = passwd

去之每行開頭的#,其中第二行是指定身份驗證的文件名,即passwd文件
一樣打開passwd文件,將 學習

# [users]
# harry = harryssecret
# sally = sallyssecret

這幾行的開頭#字符去掉,這是設置用戶,一行一個,存儲格式爲「用戶名 = 密碼」,如可插入一行:admin = admin888,即爲系統添加一個用戶名爲admin,密碼爲admin888的用戶 測試

STEP 4:運行SVN服務

在命令行執行

svnserve --daemon --root E:\svn\repository

服務啓動,--daemon可簡寫爲-d,--root可簡寫爲-r,能夠創建一個批處理文件並放在windows啓動組中便於開機就運行SVN服務,或者在這個地址http://clanlib.org/~mbn/svnservice/下載那個svnservice.exe文件,拷貝到E:\svn\bin目錄下,再從命令行下執行:

svnservice -install --daemon --root "E:\svn\Repository"
sc config svnservice start= auto
net start svnservice

此文件會將SVN變成windows系統的一個服務,並默認爲自啓動,注意:執行第三句時確保前面以命令行方式運行的SVN服務已經中止,若是沒中止可在其窗口中按Ctrl+C停止運行。

STEP 5:建立項目版本樹

肯定SVN服務(命令行或windows服務)運行後,在你須要導入儲存庫的目錄下單擊右鍵選擇[TortoiseSVN]-> [Import...],在彈開的窗口的URL框中輸入 "svn://localhost/myproject" 點擊 "OK" 執行導入,若是沒有報錯,數據就所有加入SVN儲存庫目錄樹上了。用命令行也能夠完成這些操做,這須要你在系統變量中新建一個「SVN_EDITOR」的系統變量,變量值爲本地的一個文本編輯器執行文件路徑,通常指到windows的記事本上就好了 "c:\windows\notepad.exe" ,而後新開一個CMD窗口,執行

svn mkdir svn://localhost/myproject

隨即關閉記事本打開的log文件窗口後按"c"鍵繼續後生成項目樹。通常狀況,咱們在建立文件根路徑後應該在建立三個目錄:branches、 tags、trunk,這三個目錄是Subversion須要的三個目錄。對於check out、commit、update等操做能夠經過svn命令行方式執行,也能夠用TortoiseSVN的windows菜單完成,很是簡單咯。

-----------------------------------------------

 在這以上,基本按照它的說明,就能讓svn正常運做,但branches、tags、trunk三個目錄的使用我尚未學習。

自動更新的配置:

開發中常常要在更新SVN的同時要更新WEB服務器。能夠用過Subversion的鉤子(Hook)來實現。

如下是Windows操做系統下的配置:

在SVN庫的hooks目錄下面新建post-commit.bat文件,用記事本打開,而後寫入以下的代碼:

@echo off

SET REPOS=%1
SET REV=%2

SET DIR=%REPOS%/hooks
SET PATH=%PATH%;

SET WORKING_COPY=D:\Websites\Latisse
svn update %WORKING_COPY% –username user –password pwd

此處的D:\Websites\Latisse便是WEB網站的目錄(固然得先建好這個目錄,而且從svn服務器上籤出相應的項目)。

這樣在用戶提交完後,便會自動更新到WEB服務器上。

須要注意到問題是:

1.不要在WEB網站文件夾下做修改或其它操做,防止出現文件夾被鎖。沒法更新。

2.在這裏我明確寫明瞭用戶名(user),密碼(pwd)。在我設置時發現,若是沒有設置的話會出現錯誤,在直接運行這個bat文件時是能正常執行的,可是,在Subversion提交後卻不能正常運行。而且能夠看到服務器進程中會出現cmd,svn兩個進程,而且不會本身結束,而用戶在提交內容到服務器後,會出現客戶端沒法正常返回的問題。

3.若是運行不能正常,能夠經過下面的方法看到出錯信息:

將剛纔的post-commit.bat更名爲post-commit-run.bat,而後再建一個post-commit.bat的文件,裏面寫入以下的代碼:

call %~dp0post-commit-run.bat %* > %1/hooks/post-commit.log 2>&1

這樣運行結果就會被寫入到post-commit.log文件中,若是出錯,也能夠找到出錯的緣由。

-------------------------------------------------------------------

總結一下:

svn的使用要點:

安裝subversion

安裝tortoiseSVN

建立儲存庫

導入(將須要版本控制的代碼導入到儲存庫中)

檢出(使用者將已經svn的代碼檢出到本身的地盤)

hooks鉤子設置(將自動更新配置好)

建立web服務器目錄並檢出(這個目錄就是測試員能夠看的目錄了,它會自動隨着開發人員的更新而更新)

相關文章
相關標籤/搜索