SVN2 鉤子(自動執行UPDATE更新等操作)

2021-08-10 23:40:46 字數 1525 閱讀 7355

鉤子就是由版本庫的事件(**提交,屬性修改等)觸發程式(shell 指令碼等)。

每乙個 svn 倉庫下都有乙個目錄hooks,在這裡面放所有的鉤子程式。其中以.tmpl結尾的代表是模板,可以用來參考。

$ ls hooks/

post-commit

.tmpl pre-revprop

-change

.tmpl

post-revprop

-change

.tmpl start-commit

.tmpl

pre-commit

.tmpl

在提交事務產生前執行,用來判定乙個使用者是否有權提交。版本庫傳給該程式兩個引數:到版本庫的路徑,和要進行提交的使用者名稱。程式返回乙個非零值可以在事務產生前停止該提交操作。

在事務完成提交之前執行。版本庫傳遞兩個引數到程式:版本庫的路徑和正在提交的事務名稱。程式返回非零值,提交會失敗,事務也會刪除。

在事務完成後執行,建立乙個新的修訂版本。可以用這個鉤子來同步測試環境的**或者傳送電子郵件。版本庫傳給程式兩個引數:到版本庫的路徑和被建立的新的修訂版本號。退出程式會被忽略。

在對版本庫修改subversion的版本屬性時執行,版本庫給鉤子傳遞四個引數:到版本庫的路徑,要修改屬性的修訂版本,經過認證的使用者名稱和屬性自身的名字。

與pre-revprop-change對應。只有存在pre-revprop-change時這個指令碼才會執行。當這兩個鉤子都存在時,post-revprop-change在修訂版本屬性被改變之後執行,版本庫傳遞四個引數給該鉤子:到版本庫的路徑,屬性存在的修訂版本,經過校驗的產生變化的使用者名稱,和屬性自身的名字。

最常見的用法,就是本地修改的**提交到 svn 倉庫後,測試環境可以同步更新。本文示例中的svn倉庫和測試環境在同一臺伺服器。

#!/bin/bash

repos="$1"

# 這是有svn傳過來的第乙個引數,倉庫位置

rev="$2"

# 這是有svn傳過來的第二個引數,新的版本號

export lang=zh_cn.utf-8

echo

"code deployed at `date "+%y-%m-%d %h:%m"`" >> /opt/svn/repos/project1/hooks/deploy_log # 寫日誌是個好習慣

/usr/bin/svn update --username username --password password /home/porject1/trunk # 不用再一次次的手動執行這句命令了

chmod +x post-commit

touch deploy_log

這樣,當本地**改動後提交到svn後,不再需要在測試環境的**目錄中執行svn update操作。svn可以自動化這一工作了。

SVN鉤子教程 自動更新專案

需求 每次團隊提交更新後,都需要登入伺服器手動更新專案,很繁瑣 解決方案 使用svn提供的鉤子功能 實驗平台 windows 具體實現 建立鉤子檔案 在svn倉庫對應的專案資料夾下建立bat檔案 我的專案檔案路徑是 e dm repositories test hooks 檔名稱 post comm...

mysql 鉤子 svn鉤子的使用案例

svn鉤子的使用案例 我在這一篇博文中提到,svn鉤子指令碼是svn非常實用重要的功能,在工作中,會經常需要用到svn鉤子指令碼以實現除了svn自帶功能之外的附加功能,那麼這一篇博文,我們就舉例演示一下,svn鉤子是用來做什麼的,以及怎麼用。svn鉤子的功能 svn鉤子是乙個指令碼,它的具體寫法和l...

svn 鉤子檔案報錯

官網 給伺服器裝上svn之後,並編寫鉤子檔案,打算測試一下,是否能夠自動更新,svn客戶端報錯 attention your password for authentication realm balabalabla 大概的意思就是,只能吧密碼明文儲存,直接操作的話,咱們只要直接選擇yes就可以了,...