利用svn鉤子實現自動匯出部署WEB應用

2021-08-31 14:58:23 字數 1390 閱讀 5111

應用場景:

開發團隊3-5人,用svn做版本控制,測試環境和資料庫在測試伺服器上,一般情況下先在本地測試完成,然後傳到伺服器測試,這樣顯得有點麻煩,集中規定將**上傳到伺服器進行測試,這裡就涉及到乙個應用自動部署的問題,有兩種思路,一種伺服器寫乙個crontab,編寫乙個shell指令碼,實時監聽伺服器,將最新版本檢出到web根目錄;第二種思路,利用svn的鉤子實現版本的實時匯出。第一種方法比較簡單,直接寫乙個匯出版本的shell指令碼即可,第二種方法其實使用起來更加便利。

首先簡單介紹一下svn hooks,通常在建立svn版本庫之後我們會在版本庫的檔案目錄下找到乙個叫做hooks的目錄,這裡存放的就是svn所謂的鉤子了,他的主要用途在於在subversion執行乙個操作時,會觸發相應的鉤子程式(前提當然是鉤子存在),鉤子程式就是一些shell指令碼,執行相應的操作。

ll hooks

如下圖,列出的是一些鉤子的模板案例,將後面的tmpl字尾名去掉,就變成了相應的鉤子程式了。

post-commit

在提交完成,成功建立版本之後執行該鉤子,提交已經完成,不可更改,因此本指令碼的返回值被忽略。

post-lock

對檔案進行加鎖操作之後執行該指令碼

post-revprop-change

在修改 revision 屬性之後,執行該指令碼。因為修改稿已經完成,不可更改,因此本指令碼的返回值被忽略(不過實際上的實現似乎是該指令碼的正確執行與否影響屬性修改)

post-unlock

對檔案進行解鎖操作之後執行該指令碼

pre-commit

在 subversion transaction 完畢之後,在提交之前,執行該指令碼

pre-lock

對檔案進行加鎖操作之前執行該指令碼

pre-revprop-change

在修改 revision 屬性之前,執行該指令碼

pre-unlock

對檔案進行解鎖操作之前執行該指令碼

start-commit

在客戶端還沒有向伺服器提交資料之前,即還沒有建立 subversion transaction(縮寫為 txn) 之前,執行執行該指令碼

具體到我們的應用場景,我們要實現乙個同步的測試伺服器,我們只需要在乙個使用者執行完畢乙個commit提交操作之後,讓鉤子程式去自動更新測試伺服器的檔案即可

。通過這個思路,我們需要作的就是建立乙個post-commit的鉤子。

#!/bin/sh

cd /usr/local/www/coolphp

svn=/usr/local/bin/svn

export lang=en_us.utf-8

$svn update --username kokko --password 111111 --no-auth-cache

注意相關許可權的設定…

原文:

C 利用全域性鉤子實現鍵盤鎖

在家看網課,記筆記不方便。於是就想弄個鍵盤鎖,方便學習 在寢室也好把外接鍵盤放上去打遊戲 其實這東西挺簡單的,就三行 hhook hk lresult callback kbproc intncod,wparam wparam,lparam lparam void void lresult call...

許可權控制 利用CI鉤子實現許可權認證

通常我們後台路徑看起來都會像下面這樣 article add product delete 1 user 因為ci是mvc的,單一入口,並且給我們提供了7個掛鉤點,一切就很簡單了,我們只需要在ci執行目標控制器方法之前攔截到請求,檢查uri是否是以manage開頭即可,如果uri以manage開頭,...

VC 鉤子實現及應用

關於鉤子 請參見微軟中國社群中 hook專題 一文。純c 鉤子 hook 實現 要實現系統鉤子其實很簡單,呼叫三個win32的api即可。setwindowshookex用於設定鉤子。設立一道卡子,盤查需要的資訊 dllimport user32.dll callingconvention call...